Skip to content

Commit cd57d4b

Browse files
committed
Merge branch '3.14' into backport-6577d87-3.14
2 parents be4ed60 + 2d1515d commit cd57d4b

File tree

533 files changed

+20612
-12672
lines changed

Some content is hidden

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

533 files changed

+20612
-12672
lines changed

.gitattributes

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,3 +106,5 @@ Python/stdlib_module_names.h generated
106106
Tools/peg_generator/pegen/grammar_parser.py generated
107107
aclocal.m4 generated
108108
configure generated
109+
*.min.js generated
110+
package-lock.json generated

.github/CODEOWNERS

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66

77
# GitHub
88
.github/** @ezio-melotti @hugovk @AA-Turner @webknjaz
9+
.github/workflows/jit.yml @savannahostrowski
10+
Tools/build/compute-changes.py @AA-Turner @hugovk @webknjaz
11+
Lib/test/test_tools/test_compute_changes.py @AA-Turner @hugovk @webknjaz
912

1013
# pre-commit
1114
.pre-commit-config.yaml @hugovk
@@ -161,6 +164,7 @@ Doc/c-api/module.rst @ericsnowcurrently
161164
# Dates and times
162165
**/*datetime* @pganssle @abalkin
163166
**/*str*time* @pganssle @abalkin
167+
Doc/library/datetime-* @pganssle
164168
Doc/library/time.rst @pganssle @abalkin
165169
Lib/test/test_time.py @pganssle @abalkin
166170
Modules/timemodule.c @pganssle @abalkin

.github/actionlint.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
self-hosted-runner:
2-
# Pending https://github.com/rhysd/actionlint/issues/533
3-
# and https://github.com/rhysd/actionlint/issues/571
4-
labels: ["windows-11-arm", "macos-15-intel"]
2+
# Pending release of actionlint > 1.7.11 for macos-26-intel support
3+
# https://github.com/rhysd/actionlint/pull/629
4+
labels: ["macos-26-intel"]
55

66
config-variables: null
77

.github/workflows/build.yml

Lines changed: 55 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ jobs:
6464
- name: Install dependencies
6565
run: |
6666
sudo ./.github/workflows/posix-deps-apt.sh
67-
sudo apt-get install -yq abigail-tools
67+
sudo apt-get install -yq --no-install-recommends abigail-tools
6868
- name: Build CPython
6969
env:
7070
CFLAGS: -g3 -O0
@@ -158,8 +158,6 @@ jobs:
158158
run: echo "IMAGE_OS_VERSION=${ImageOS}-${ImageVersion}" >> "$GITHUB_ENV"
159159
- name: Install dependencies
160160
run: sudo ./.github/workflows/posix-deps-apt.sh
161-
- name: Add ccache to PATH
162-
run: echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
163161
- name: Configure CPython
164162
run: |
165163
# Build Python with the libpython dynamic library
@@ -242,16 +240,16 @@ jobs:
242240
strategy:
243241
fail-fast: false
244242
matrix:
245-
# macos-14 is M1, macos-15-intel is Intel.
246-
# macos-15-intel only runs tests against the GIL-enabled CPython.
243+
# macos-26 is Apple Silicon, macos-26-intel is Intel.
244+
# macos-26-intel only runs tests against the GIL-enabled CPython.
247245
os:
248-
- macos-14
249-
- macos-15-intel
246+
- macos-26
247+
- macos-26-intel
250248
free-threading:
251249
- false
252250
- true
253251
exclude:
254-
- os: macos-15-intel
252+
- os: macos-26-intel
255253
free-threading: true
256254
uses: ./.github/workflows/reusable-macos.yml
257255
with:
@@ -291,7 +289,7 @@ jobs:
291289
os: ${{ matrix.os }}
292290

293291
build-ubuntu-ssltests:
294-
name: 'Ubuntu SSL tests with OpenSSL'
292+
name: 'Ubuntu SSL tests'
295293
runs-on: ${{ matrix.os }}
296294
timeout-minutes: 60
297295
needs: build-context
@@ -300,16 +298,23 @@ jobs:
300298
fail-fast: false
301299
matrix:
302300
os: [ubuntu-24.04]
303-
# Keep 1.1.1w in our list despite it being upstream EOL and otherwise
304-
# unsupported as it most resembles other 1.1.1-work-a-like ssl APIs
305-
# supported by important vendors such as AWS-LC.
306-
openssl_ver: [1.1.1w, 3.0.19, 3.3.6, 3.4.4, 3.5.5, 3.6.1]
307-
# See Tools/ssl/make_ssl_data.py for notes on adding a new version
301+
ssllib:
302+
# See Tools/ssl/make_ssl_data.py for notes on adding a new version
303+
## OpenSSL
304+
# Keep 1.1.1w in our list despite it being upstream EOL and otherwise
305+
# unsupported as it most resembles other 1.1.1-work-a-like ssl APIs
306+
# supported by important vendors such as AWS-LC.
307+
- { name: openssl, version: 1.1.1w }
308+
- { name: openssl, version: 3.0.19 }
309+
- { name: openssl, version: 3.3.6 }
310+
- { name: openssl, version: 3.4.4 }
311+
- { name: openssl, version: 3.5.5 }
312+
- { name: openssl, version: 3.6.1 }
308313
env:
309-
OPENSSL_VER: ${{ matrix.openssl_ver }}
314+
SSLLIB_VER: ${{ matrix.ssllib.version }}
310315
MULTISSL_DIR: ${{ github.workspace }}/multissl
311-
OPENSSL_DIR: ${{ github.workspace }}/multissl/openssl/${{ matrix.openssl_ver }}
312-
LD_LIBRARY_PATH: ${{ github.workspace }}/multissl/openssl/${{ matrix.openssl_ver }}/lib
316+
SSLLIB_DIR: ${{ github.workspace }}/multissl/${{ matrix.ssllib.name }}/${{ matrix.ssllib.version }}
317+
LD_LIBRARY_PATH: ${{ github.workspace }}/multissl/${{ matrix.ssllib.name }}/${{ matrix.ssllib.version }}/lib
313318
steps:
314319
- uses: actions/checkout@v6
315320
with:
@@ -320,29 +325,37 @@ jobs:
320325
run: echo "::add-matcher::.github/problem-matchers/gcc.json"
321326
- name: Install dependencies
322327
run: sudo ./.github/workflows/posix-deps-apt.sh
323-
- name: Configure OpenSSL env vars
324-
run: |
325-
echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> "$GITHUB_ENV"
326-
echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}" >> "$GITHUB_ENV"
327-
echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> "$GITHUB_ENV"
328-
- name: 'Restore OpenSSL build'
329-
id: cache-openssl
328+
- name: 'Restore SSL library build'
329+
id: cache-ssl-lib
330330
uses: actions/cache@v5
331331
with:
332-
path: ./multissl/openssl/${{ env.OPENSSL_VER }}
333-
key: ${{ matrix.os }}-multissl-openssl-${{ env.OPENSSL_VER }}
334-
- name: Install OpenSSL
335-
if: steps.cache-openssl.outputs.cache-hit != 'true'
336-
run: python3 Tools/ssl/multissltests.py --steps=library --base-directory "$MULTISSL_DIR" --openssl "$OPENSSL_VER" --system Linux
337-
- name: Add ccache to PATH
332+
path: ./multissl/${{ matrix.ssllib.name }}/${{ matrix.ssllib.version }}
333+
key: ${{ matrix.os }}-multissl-${{ matrix.ssllib.name }}-${{ matrix.ssllib.version }}
334+
- name: Install SSL Library
335+
if: steps.cache-ssl-lib.outputs.cache-hit != 'true'
338336
run: |
339-
echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
337+
python3 Tools/ssl/multissltests.py \
338+
--steps=library \
339+
--base-directory "$MULTISSL_DIR" \
340+
'--${{ matrix.ssllib.name }}' '${{ matrix.ssllib.version }}' \
341+
--system Linux
340342
- name: Configure CPython
341-
run: ./configure CFLAGS="-fdiagnostics-format=json" --config-cache --enable-slower-safety --with-pydebug --with-openssl="$OPENSSL_DIR"
343+
run: |
344+
./configure CFLAGS="-fdiagnostics-format=json" \
345+
--config-cache \
346+
--enable-slower-safety \
347+
--with-pydebug \
348+
--with-openssl="$SSLLIB_DIR" \
349+
--with-builtin-hashlib-hashes=blake2 \
350+
--with-ssl-default-suites=openssl
342351
- name: Build CPython
343352
run: make -j4
344353
- name: Display build info
345354
run: make pythoninfo
355+
- name: Verify python is linked to the right lib
356+
run: |
357+
./python -c 'import ssl; print(ssl.OPENSSL_VERSION)' \
358+
| grep -iE '${{ matrix.ssllib.name }}.*${{ matrix.ssllib.version }}'
346359
- name: SSL tests
347360
run: ./python Lib/test/ssltests.py
348361

@@ -356,7 +369,7 @@ jobs:
356369
matrix:
357370
include:
358371
- arch: aarch64
359-
runs-on: macos-14
372+
runs-on: macos-26
360373
- arch: x86_64
361374
runs-on: ubuntu-24.04
362375

@@ -391,6 +404,12 @@ jobs:
391404
- name: Build and test
392405
run: python3 Apple ci iOS --fast-ci --simulator 'iPhone SE (3rd generation),OS=17.5'
393406

407+
build-emscripten:
408+
name: 'Emscripten'
409+
needs: build-context
410+
if: needs.build-context.outputs.run-emscripten == 'true'
411+
uses: ./.github/workflows/reusable-emscripten.yml
412+
394413
build-wasi:
395414
name: 'WASI'
396415
needs: build-context
@@ -428,9 +447,6 @@ jobs:
428447
- name: Install OpenSSL
429448
if: steps.cache-openssl.outputs.cache-hit != 'true'
430449
run: python3 Tools/ssl/multissltests.py --steps=library --base-directory "$MULTISSL_DIR" --openssl "$OPENSSL_VER" --system Linux
431-
- name: Add ccache to PATH
432-
run: |
433-
echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
434450
- name: Setup directory envs for out-of-tree builds
435451
run: |
436452
echo "CPYTHON_RO_SRCDIR=$(realpath -m "${GITHUB_WORKSPACE}"/../cpython-ro-srcdir)" >> "$GITHUB_ENV"
@@ -546,9 +562,6 @@ jobs:
546562
- name: Install OpenSSL
547563
if: steps.cache-openssl.outputs.cache-hit != 'true'
548564
run: python3 Tools/ssl/multissltests.py --steps=library --base-directory "$MULTISSL_DIR" --openssl "$OPENSSL_VER" --system Linux
549-
- name: Add ccache to PATH
550-
run: |
551-
echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
552565
- name: Configure CPython
553566
run: ./configure --config-cache --with-address-sanitizer --without-pymalloc
554567
- name: Build CPython
@@ -675,6 +688,7 @@ jobs:
675688
- build-ubuntu
676689
- build-ubuntu-ssltests
677690
- build-ios
691+
- build-emscripten
678692
- build-wasi
679693
- test-hypothesis
680694
- build-asan
@@ -689,6 +703,7 @@ jobs:
689703
with:
690704
allowed-failures: >-
691705
build-android,
706+
build-emscripten,
692707
build-windows-msi,
693708
build-ubuntu-ssltests,
694709
test-hypothesis,
@@ -725,5 +740,6 @@ jobs:
725740
}}
726741
${{ !fromJSON(needs.build-context.outputs.run-android) && 'build-android,' || '' }}
727742
${{ !fromJSON(needs.build-context.outputs.run-ios) && 'build-ios,' || '' }}
743+
${{ !fromJSON(needs.build-context.outputs.run-emscripten) && 'build-emscripten,' || '' }}
728744
${{ !fromJSON(needs.build-context.outputs.run-wasi) && 'build-wasi,' || '' }}
729745
jobs: ${{ toJSON(needs) }}

0 commit comments

Comments
 (0)