Skip to content

Commit 1f19257

Browse files
committed
Merge remote-tracking branch 'upstream/main' into multiprocessing-queue-shutdown
2 parents 42fbea6 + 5ef5622 commit 1f19257

File tree

1,466 files changed

+76648
-30911
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,466 files changed

+76648
-30911
lines changed

.devcontainer/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM docker.io/library/fedora:37
1+
FROM docker.io/library/fedora:40
22

33
ENV CC=clang
44

.github/CODEOWNERS

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,11 @@ Python/bytecodes.c @markshannon @gvanrossum
3939
Python/optimizer*.c @markshannon @gvanrossum
4040
Python/optimizer_analysis.c @Fidget-Spinner
4141
Python/optimizer_bytecodes.c @Fidget-Spinner
42+
Lib/_pyrepl/* @pablogsal @lysnikolaou @ambv
4243
Lib/test/test_patma.py @brandtbucher
4344
Lib/test/test_type_*.py @JelleZijlstra
4445
Lib/test/test_capi/test_misc.py @markshannon @gvanrossum
46+
Lib/test/test_pyrepl/* @pablogsal @lysnikolaou @ambv
4547
Tools/c-analyzer/ @ericsnowcurrently
4648

4749
# dbm
@@ -243,6 +245,18 @@ Lib/test/support/interpreters/ @ericsnowcurrently
243245
Modules/_xx*interp*module.c @ericsnowcurrently
244246
Lib/test/test_interpreters/ @ericsnowcurrently
245247

248+
# Android
249+
**/*Android* @mhsmith
250+
**/*android* @mhsmith
251+
252+
# iOS (but not termios)
253+
**/iOS* @freakboy3742
254+
**/ios* @freakboy3742
255+
**/*_iOS* @freakboy3742
256+
**/*_ios* @freakboy3742
257+
**/*-iOS* @freakboy3742
258+
**/*-ios* @freakboy3742
259+
246260
# WebAssembly
247261
/Tools/wasm/ @brettcannon
248262

.github/workflows/build.yml

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,11 @@ on:
88
push:
99
branches:
1010
- 'main'
11-
- '3.12'
12-
- '3.11'
13-
- '3.10'
14-
- '3.9'
15-
- '3.8'
11+
- '3.*'
1612
pull_request:
1713
branches:
1814
- 'main'
19-
- '3.12'
20-
- '3.11'
21-
- '3.10'
22-
- '3.9'
23-
- '3.8'
15+
- '3.*'
2416

2517
permissions:
2618
contents: read
@@ -137,6 +129,7 @@ jobs:
137129
uses: actions/cache@v4
138130
with:
139131
path: config.cache
132+
# Include env.pythonLocation in key to avoid changes in environment when setup-python updates Python
140133
key: ${{ github.job }}-${{ runner.os }}-${{ env.IMAGE_VERSION }}-${{ needs.check_source.outputs.config_hash }}-${{ env.pythonLocation }}
141134
- name: Install Dependencies
142135
run: sudo ./.github/workflows/posix-deps-apt.sh
@@ -217,7 +210,7 @@ jobs:
217210
with:
218211
config_hash: ${{ needs.check_source.outputs.config_hash }}
219212
free-threading: true
220-
# macos-14 is M1
213+
# macos-14-large is Intel with 12 cores (most parallelism)
221214
os-matrix: '["macos-14"]'
222215

223216
build_ubuntu:
@@ -249,7 +242,7 @@ jobs:
249242
250243
build_ubuntu_ssltests:
251244
name: 'Ubuntu SSL tests with OpenSSL'
252-
runs-on: ubuntu-20.04
245+
runs-on: ubuntu-22.04
253246
timeout-minutes: 60
254247
needs: check_source
255248
if: needs.check_source.outputs.run_tests == 'true'
@@ -315,7 +308,7 @@ jobs:
315308

316309
test_hypothesis:
317310
name: "Hypothesis tests on Ubuntu"
318-
runs-on: ubuntu-20.04
311+
runs-on: ubuntu-22.04
319312
timeout-minutes: 60
320313
needs: check_source
321314
if: needs.check_source.outputs.run_tests == 'true' && needs.check_source.outputs.run_hypothesis == 'true'
@@ -428,7 +421,7 @@ jobs:
428421

429422
build_asan:
430423
name: 'Address sanitizer'
431-
runs-on: ubuntu-20.04
424+
runs-on: ubuntu-22.04
432425
timeout-minutes: 60
433426
needs: check_source
434427
if: needs.check_source.outputs.run_tests == 'true'
@@ -492,6 +485,8 @@ jobs:
492485
with:
493486
config_hash: ${{ needs.check_source.outputs.config_hash }}
494487
options: ./configure --config-cache --with-thread-sanitizer --with-pydebug
488+
suppressions_path: Tools/tsan/supressions.txt
489+
tsan_logs_artifact_name: tsan-logs-default
495490

496491
build_tsan_free_threading:
497492
name: 'Thread sanitizer (free-threading)'
@@ -501,6 +496,8 @@ jobs:
501496
with:
502497
config_hash: ${{ needs.check_source.outputs.config_hash }}
503498
options: ./configure --config-cache --disable-gil --with-thread-sanitizer --with-pydebug
499+
suppressions_path: Tools/tsan/suppressions_free_threading.txt
500+
tsan_logs_artifact_name: tsan-logs-free-threading
504501

505502
# CIFuzz job based on https://google.github.io/oss-fuzz/getting-started/continuous-integration/
506503
cifuzz:
@@ -514,8 +511,7 @@ jobs:
514511
strategy:
515512
fail-fast: false
516513
matrix:
517-
# sanitizer: [address, undefined, memory] -- memory skipped temporarily until GH-116886 is solved.
518-
sanitizer: [address, undefined]
514+
sanitizer: [address, undefined, memory]
519515
steps:
520516
- name: Build fuzzers (${{ matrix.sanitizer }})
521517
id: build

.github/workflows/jit.yml

Lines changed: 56 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,45 @@ on:
55
- '**jit**'
66
- 'Python/bytecodes.c'
77
- 'Python/optimizer*.c'
8-
- 'Python/optimizer_bytecodes.c'
8+
- '!Python/perf_jit_trampoline.c'
9+
- '!**/*.md'
10+
- '!**/*.ini'
911
push:
1012
paths:
1113
- '**jit**'
1214
- 'Python/bytecodes.c'
1315
- 'Python/optimizer*.c'
14-
- 'Python/optimizer_bytecodes.c'
16+
- '!Python/perf_jit_trampoline.c'
17+
- '!**/*.md'
18+
- '!**/*.ini'
1519
workflow_dispatch:
1620

21+
permissions:
22+
contents: read
23+
1724
concurrency:
1825
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
1926
cancel-in-progress: true
2027

2128
jobs:
29+
interpreter:
30+
name: Interpreter (Debug)
31+
runs-on: ubuntu-latest
32+
timeout-minutes: 90
33+
steps:
34+
- uses: actions/checkout@v4
35+
- name: Build tier two interpreter
36+
run: |
37+
./configure --enable-experimental-jit=interpreter --with-pydebug
38+
make all --jobs 4
39+
- name: Test tier two interpreter
40+
run: |
41+
./python -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3
2242
jit:
2343
name: ${{ matrix.target }} (${{ matrix.debug && 'Debug' || 'Release' }})
44+
needs: interpreter
2445
runs-on: ${{ matrix.runner }}
25-
timeout-minutes: 60
46+
timeout-minutes: 90
2647
strategy:
2748
fail-fast: false
2849
matrix:
@@ -40,7 +61,7 @@ jobs:
4061
- true
4162
- false
4263
llvm:
43-
- 16
64+
- 18
4465
include:
4566
- target: i686-pc-windows-msvc/msvc
4667
architecture: Win32
@@ -74,14 +95,10 @@ jobs:
7495
architecture: aarch64
7596
runner: ubuntu-latest
7697
compiler: gcc
77-
# These fail because of emulation, not because of the JIT:
78-
exclude: test_unix_events test_init test_process_pool test_shutdown test_multiprocessing_fork test_cmd_line test_faulthandler test_os test_perf_profiler test_posix test_signal test_socket test_subprocess test_threading test_venv test_external_inspection
7998
- target: aarch64-unknown-linux-gnu/clang
8099
architecture: aarch64
81100
runner: ubuntu-latest
82101
compiler: clang
83-
# These fail because of emulation, not because of the JIT:
84-
exclude: test_unix_events test_init test_process_pool test_shutdown test_multiprocessing_fork test_cmd_line test_faulthandler test_os test_perf_profiler test_posix test_signal test_socket test_subprocess test_threading test_venv test_external_inspection
85102
env:
86103
CC: ${{ matrix.compiler }}
87104
steps:
@@ -93,37 +110,43 @@ jobs:
93110
- name: Native Windows
94111
if: runner.os == 'Windows' && matrix.architecture != 'ARM64'
95112
run: |
113+
choco upgrade llvm -y
96114
choco install llvm --allow-downgrade --no-progress --version ${{ matrix.llvm }}
97115
./PCbuild/build.bat --experimental-jit ${{ matrix.debug && '-d' || '--pgo' }} -p ${{ matrix.architecture }}
98-
./PCbuild/rt.bat ${{ matrix.debug && '-d' }} -p ${{ matrix.architecture }} -q --exclude ${{ matrix.exclude }} --multiprocess 0 --timeout 3600 --verbose2 --verbose3
116+
./PCbuild/rt.bat ${{ matrix.debug && '-d' || '' }} -p ${{ matrix.architecture }} -q --multiprocess 0 --timeout 4500 --verbose2 --verbose3
99117
100118
# No PGO or tests (yet):
101119
- name: Emulated Windows
102120
if: runner.os == 'Windows' && matrix.architecture == 'ARM64'
103121
run: |
122+
choco upgrade llvm -y
104123
choco install llvm --allow-downgrade --no-progress --version ${{ matrix.llvm }}
105124
./PCbuild/build.bat --experimental-jit ${{ matrix.debug && '-d' || '' }} -p ${{ matrix.architecture }}
106125
107126
- name: Native macOS
108127
if: runner.os == 'macOS'
109128
run: |
129+
brew update
110130
brew install llvm@${{ matrix.llvm }}
111131
SDKROOT="$(xcrun --show-sdk-path)" \
112132
./configure --enable-experimental-jit ${{ matrix.debug && '--with-pydebug' || '--enable-optimizations --with-lto' }}
113133
make all --jobs 4
114-
./python.exe -m test --exclude ${{ matrix.exclude }} --multiprocess 0 --timeout 3600 --verbose2 --verbose3
134+
./python.exe -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3
115135
136+
# --with-lto has been removed temporarily as a result of an open issue in LLVM 18 (see https://github.com/llvm/llvm-project/issues/87553)
116137
- name: Native Linux
117138
if: runner.os == 'Linux' && matrix.architecture == 'x86_64'
118139
run: |
119140
sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh ${{ matrix.llvm }}
120141
export PATH="$(llvm-config-${{ matrix.llvm }} --bindir):$PATH"
121-
./configure --enable-experimental-jit ${{ matrix.debug && '--with-pydebug' || '--enable-optimizations --with-lto' }}
142+
./configure --enable-experimental-jit ${{ matrix.debug && '--with-pydebug' || '--enable-optimizations' }}
122143
make all --jobs 4
123-
./python -m test --exclude ${{ matrix.exclude }} --multiprocess 0 --timeout 3600 --verbose2 --verbose3
144+
./python -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3
124145
146+
# --with-lto has been removed temporarily as a result of an open issue in LLVM 18 (see https://github.com/llvm/llvm-project/issues/87553)
125147
- name: Emulated Linux
126148
if: runner.os == 'Linux' && matrix.architecture != 'x86_64'
149+
# The --ignorefile on ./python -m test is used to exclude tests known to fail when running on an emulated Linux.
127150
run: |
128151
sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh ${{ matrix.llvm }}
129152
export PATH="$(llvm-config-${{ matrix.llvm }} --bindir):$PATH"
@@ -138,6 +161,25 @@ jobs:
138161
CC="${{ matrix.compiler == 'clang' && 'clang --target=$HOST' || '$HOST-gcc' }}" \
139162
CPP="$CC --preprocess" \
140163
HOSTRUNNER=qemu-${{ matrix.architecture }} \
141-
./configure --enable-experimental-jit ${{ matrix.debug && '--with-pydebug' || '--enable-optimizations --with-lto' }} --build=x86_64-linux-gnu --host="$HOST" --with-build-python=../build/bin/python3 --with-pkg-config=no ac_cv_buggy_getaddrinfo=no ac_cv_file__dev_ptc=no ac_cv_file__dev_ptmx=yes
164+
./configure --enable-experimental-jit ${{ matrix.debug && '--with-pydebug' || '--enable-optimizations ' }} --build=x86_64-linux-gnu --host="$HOST" --with-build-python=../build/bin/python3 --with-pkg-config=no ac_cv_buggy_getaddrinfo=no ac_cv_file__dev_ptc=no ac_cv_file__dev_ptmx=yes
142165
make all --jobs 4
143-
./python -m test --exclude ${{ matrix.exclude }} --multiprocess 0 --timeout 3600 --verbose2 --verbose3
166+
./python -m test --ignorefile=Tools/jit/ignore-tests-emulated-linux.txt --multiprocess 0 --timeout 4500 --verbose2 --verbose3
167+
168+
jit-with-disabled-gil:
169+
name: Free-Threaded (Debug)
170+
needs: interpreter
171+
runs-on: ubuntu-latest
172+
steps:
173+
- uses: actions/checkout@v4
174+
- uses: actions/setup-python@v5
175+
with:
176+
python-version: '3.11'
177+
- name: Build with JIT enabled and GIL disabled
178+
run: |
179+
sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh 18
180+
export PATH="$(llvm-config-18 --bindir):$PATH"
181+
./configure --enable-experimental-jit --with-pydebug --disable-gil
182+
make all --jobs 4
183+
- name: Run tests
184+
run: |
185+
./python -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3

.github/workflows/mypy.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ on:
88
pull_request:
99
paths:
1010
- ".github/workflows/mypy.yml"
11+
- "Lib/_pyrepl/**"
1112
- "Lib/test/libregrtest/**"
1213
- "Tools/build/generate_sbom.py"
1314
- "Tools/cases_generator/**"
@@ -33,10 +34,12 @@ concurrency:
3334
jobs:
3435
mypy:
3536
strategy:
37+
fail-fast: false
3638
matrix:
3739
target: [
40+
"Lib/_pyrepl",
3841
"Lib/test/libregrtest",
39-
"Tools/build/",
42+
"Tools/build",
4043
"Tools/cases_generator",
4144
"Tools/clinic",
4245
"Tools/jit",

.github/workflows/posix-deps-apt.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ apt-get -yq install \
1515
libgdbm-dev \
1616
libgdbm-compat-dev \
1717
liblzma-dev \
18+
libmpdec-dev \
1819
libncurses5-dev \
1920
libreadline6-dev \
2021
libsqlite3-dev \

.github/workflows/project-updater.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323
- { project: 32, label: sprint }
2424

2525
steps:
26-
- uses: actions/add-to-project@v0.6.0
26+
- uses: actions/add-to-project@v1.0.0
2727
with:
2828
project-url: https://github.com/orgs/python/projects/${{ matrix.project }}
2929
github-token: ${{ secrets.ADD_TO_PROJECT_PAT }}

.github/workflows/reusable-docs.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ jobs:
6262
python Doc/tools/check-warnings.py \
6363
--annotate-diff '${{ env.branch_base }}' '${{ env.branch_pr }}' \
6464
--fail-if-regression \
65-
--fail-if-improved
65+
--fail-if-improved \
66+
--fail-if-new-news-nit
6667
6768
# This build doesn't use problem matchers or check annotations
6869
build_doc_oldest_supported_sphinx:
@@ -74,7 +75,7 @@ jobs:
7475
- name: 'Set up Python'
7576
uses: actions/setup-python@v5
7677
with:
77-
python-version: '3.11' # known to work with Sphinx 4.2
78+
python-version: '3.12' # known to work with Sphinx 6.2.1
7879
cache: 'pip'
7980
cache-dependency-path: 'Doc/requirements-oldest-sphinx.txt'
8081
- name: 'Install build dependencies'

.github/workflows/reusable-macos.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ jobs:
2222
HOMEBREW_NO_INSTALL_CLEANUP: 1
2323
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
2424
PYTHONSTRICTEXTENSIONBUILD: 1
25+
TERM: linux
2526
strategy:
2627
fail-fast: false
2728
matrix:
@@ -49,7 +50,7 @@ jobs:
4950
--prefix=/opt/python-dev \
5051
--with-openssl="$(brew --prefix [email protected])"
5152
- name: Build CPython
52-
run: make -j4
53+
run: make -j8
5354
- name: Display build info
5455
run: make pythoninfo
5556
- name: Tests

0 commit comments

Comments
 (0)