6464 run : |
6565 apt update && apt install git -yq
6666 git config --global --add safe.directory "$GITHUB_WORKSPACE"
67- - uses : actions/checkout@v6
67+ - uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
6868 with :
6969 fetch-depth : 1
7070 persist-credentials : false
@@ -101,10 +101,10 @@ jobs:
101101 needs : build-context
102102 if : needs.build-context.outputs.run-tests == 'true'
103103 steps :
104- - uses : actions/checkout@v6
104+ - uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
105105 with :
106106 persist-credentials : false
107- - uses : actions/setup-python@v6
107+ - uses : actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
108108 with :
109109 python-version : ' 3.x'
110110 - name : Runner image version
@@ -165,13 +165,21 @@ jobs:
165165 free-threading :
166166 - false
167167 - true
168+ interpreter :
169+ - switch-case
168170 exclude :
169171 # Skip Win32 on free-threaded builds
170172 - { arch: Win32, free-threading: true }
173+ include :
174+ # msvc::musttail is currently only supported on x64,
175+ # and only supported on 3.15+.
176+ - { arch: x64, free-threading: false, interpreter: tail-call }
177+ - { arch: x64, free-threading: true, interpreter: tail-call }
171178 uses : ./.github/workflows/reusable-windows.yml
172179 with :
173180 arch : ${{ matrix.arch }}
174181 free-threading : ${{ matrix.free-threading }}
182+ interpreter : ${{ matrix.interpreter }}
175183
176184 build-windows-msi :
177185 # ${{ '' } is a hack to nest jobs under the same sidebar category.
@@ -198,16 +206,16 @@ jobs:
198206 strategy :
199207 fail-fast : false
200208 matrix :
201- # macos-14 is M1 , macos-15 -intel is Intel.
202- # macos-15 -intel only runs tests against the GIL-enabled CPython.
209+ # macos-26 is Apple Silicon , macos-26 -intel is Intel.
210+ # macos-26 -intel only runs tests against the GIL-enabled CPython.
203211 os :
204- - macos-14
205- - macos-15 -intel
212+ - macos-26
213+ - macos-26 -intel
206214 free-threading :
207215 - false
208216 - true
209217 exclude :
210- - os : macos-15 -intel
218+ - os : macos-26 -intel
211219 free-threading : true
212220 uses : ./.github/workflows/reusable-macos.yml
213221 with :
@@ -283,7 +291,7 @@ jobs:
283291 SSLLIB_DIR : ${{ github.workspace }}/multissl/${{ matrix.ssllib.name }}/${{ matrix.ssllib.version }}
284292 LD_LIBRARY_PATH : ${{ github.workspace }}/multissl/${{ matrix.ssllib.name }}/${{ matrix.ssllib.version }}/lib
285293 steps :
286- - uses : actions/checkout@v6
294+ - uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
287295 with :
288296 persist-credentials : false
289297 - name : Runner image version
@@ -294,7 +302,7 @@ jobs:
294302 run : sudo ./.github/workflows/posix-deps-apt.sh
295303 - name : ' Restore SSL library build'
296304 id : cache-ssl-lib
297- uses : actions/cache@v5
305+ uses : actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
298306 with :
299307 path : ./multissl/${{ matrix.ssllib.name }}/${{ matrix.ssllib.version }}
300308 key : ${{ matrix.os }}-multissl-${{ matrix.ssllib.name }}-${{ matrix.ssllib.version }}
@@ -336,13 +344,13 @@ jobs:
336344 matrix :
337345 include :
338346 - arch : aarch64
339- runs-on : macos-14
347+ runs-on : macos-26
340348 - arch : x86_64
341349 runs-on : ubuntu-24.04
342350
343351 runs-on : ${{ matrix.runs-on }}
344352 steps :
345- - uses : actions/checkout@v6
353+ - uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
346354 with :
347355 persist-credentials : false
348356 - name : Build and test
@@ -355,7 +363,7 @@ jobs:
355363 timeout-minutes : 60
356364 runs-on : macos-14
357365 steps :
358- - uses : actions/checkout@v6
366+ - uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
359367 with :
360368 persist-credentials : false
361369
@@ -369,7 +377,13 @@ jobs:
369377 sudo xcode-select --switch /Applications/Xcode_15.4.app
370378
371379 - name : Build and test
372- run : python3 Apple ci iOS --fast-ci --simulator 'iPhone SE (3rd generation),OS=17.5'
380+ run : python3 Platforms/Apple ci iOS --fast-ci --simulator 'iPhone SE (3rd generation),OS=17.5'
381+
382+ build-emscripten :
383+ name : ' Emscripten'
384+ needs : build-context
385+ if : needs.build-context.outputs.run-emscripten == 'true'
386+ uses : ./.github/workflows/reusable-emscripten.yml
373387
374388 build-wasi :
375389 name : ' WASI'
@@ -387,7 +401,7 @@ jobs:
387401 OPENSSL_VER : 3.5.5
388402 PYTHONSTRICTEXTENSIONBUILD : 1
389403 steps :
390- - uses : actions/checkout@v6
404+ - uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
391405 with :
392406 persist-credentials : false
393407 - name : Register gcc problem matcher
@@ -401,7 +415,7 @@ jobs:
401415 echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> "$GITHUB_ENV"
402416 - name : ' Restore OpenSSL build'
403417 id : cache-openssl
404- uses : actions/cache@v5
418+ uses : actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
405419 with :
406420 path : ./multissl/openssl/${{ env.OPENSSL_VER }}
407421 key : ${{ runner.os }}-multissl-openssl-${{ env.OPENSSL_VER }}
@@ -448,7 +462,7 @@ jobs:
448462 ./python -m venv "$VENV_LOC" && "$VENV_PYTHON" -m pip install -r "${GITHUB_WORKSPACE}/Tools/requirements-hypothesis.txt"
449463 - name : ' Restore Hypothesis database'
450464 id : cache-hypothesis-database
451- uses : actions/cache@v5
465+ uses : actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
452466 with :
453467 path : ${{ env.CPYTHON_BUILDDIR }}/.hypothesis/
454468 key : hypothesis-database-${{ github.head_ref || github.run_id }}
@@ -475,7 +489,7 @@ jobs:
475489 -x test_subprocess \
476490 -x test_signal \
477491 -x test_sysconfig
478- - uses : actions/upload-artifact@v7
492+ - uses : actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
479493 if : always()
480494 with :
481495 name : hypothesis-example-db
@@ -496,7 +510,7 @@ jobs:
496510 PYTHONSTRICTEXTENSIONBUILD : 1
497511 ASAN_OPTIONS : detect_leaks=0:allocator_may_return_null=1:handle_segv=0
498512 steps :
499- - uses : actions/checkout@v6
513+ - uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
500514 with :
501515 persist-credentials : false
502516 - name : Runner image version
@@ -506,7 +520,7 @@ jobs:
506520 - name : Install dependencies
507521 run : sudo ./.github/workflows/posix-deps-apt.sh
508522 - name : Set up GCC-10 for ASAN
509- uses : egor-tensin/setup-gcc@v2
523+ uses : egor-tensin/setup-gcc@a2861a8b8538f49cf2850980acccf6b05a1b2ae4 # v2.0
510524 with :
511525 version : 10
512526 - name : Configure OpenSSL env vars
@@ -516,7 +530,7 @@ jobs:
516530 echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> "$GITHUB_ENV"
517531 - name : ' Restore OpenSSL build'
518532 id : cache-openssl
519- uses : actions/cache@v5
533+ uses : actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
520534 with :
521535 path : ./multissl/openssl/${{ env.OPENSSL_VER }}
522536 key : ${{ matrix.os }}-multissl-openssl-${{ env.OPENSSL_VER }}
@@ -563,7 +577,7 @@ jobs:
563577 needs : build-context
564578 if : needs.build-context.outputs.run-ubuntu == 'true'
565579 steps :
566- - uses : actions/checkout@v6
580+ - uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
567581 with :
568582 persist-credentials : false
569583 - name : Runner image version
@@ -650,6 +664,7 @@ jobs:
650664 - build-ubuntu
651665 - build-ubuntu-ssltests
652666 - build-ios
667+ - build-emscripten
653668 - build-wasi
654669 - test-hypothesis
655670 - build-asan
@@ -664,6 +679,7 @@ jobs:
664679 with :
665680 allowed-failures : >-
666681 build-android,
682+ build-emscripten,
667683 build-windows-msi,
668684 build-ubuntu-ssltests,
669685 test-hypothesis,
@@ -706,5 +722,6 @@ jobs:
706722 }}
707723 ${{ !fromJSON(needs.build-context.outputs.run-android) && 'build-android,' || '' }}
708724 ${{ !fromJSON(needs.build-context.outputs.run-ios) && 'build-ios,' || '' }}
725+ ${{ !fromJSON(needs.build-context.outputs.run-emscripten) && 'build-emscripten,' || '' }}
709726 ${{ !fromJSON(needs.build-context.outputs.run-wasi) && 'build-wasi,' || '' }}
710727 jobs : ${{ toJSON(needs) }}
0 commit comments