Skip to content

Commit f05a4d4

Browse files
ondrejmirtesclaude
andcommitted
Build and test the turbo extension for PHP 8.3
The Windows 8.3 leg links with the v142 toolset and uses the vs16 devel pack: official PHP 8.3 Windows binaries are VS16-built and the loader refuses modules linked with a newer toolset generation than the core. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J3tA6C4Y2tWpC7yZWoQtru
1 parent 0b20319 commit f05a4d4

1 file changed

Lines changed: 21 additions & 6 deletions

File tree

‎.github/workflows/phar.yml‎

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ jobs:
222222
strategy:
223223
fail-fast: false
224224
matrix:
225-
php-version: ["8.4", "8.5"]
225+
php-version: ["8.3", "8.4", "8.5"]
226226
target:
227227
- name: "linux-gnu-x86_64"
228228
runs-on: "ubuntu-latest"
@@ -416,7 +416,7 @@ jobs:
416416
strategy:
417417
fail-fast: false
418418
matrix:
419-
php-version: ["8.4", "8.5"]
419+
php-version: ["8.3", "8.4", "8.5"]
420420

421421
steps:
422422
- name: Harden the runner (Audit all outbound calls)
@@ -486,8 +486,21 @@ jobs:
486486
strategy:
487487
fail-fast: false
488488
matrix:
489-
php-version: ["8.4", "8.5"]
489+
php-version: ["8.3", "8.4", "8.5"]
490490
ts: ["nts", "zts"]
491+
# The official 8.3 Windows binaries are built with VS16 (linker
492+
# 14.2x) and PHP's module loader is one-directional (module toolset
493+
# generation <= core's), so the 8.3 DLL must be linked with the v142
494+
# toolset — which the windows-2022 image ships alongside the default
495+
# v143. The devel pack name carries the same vs infix.
496+
include:
497+
- php-version: "8.3"
498+
vs: "vs16"
499+
toolset: "14.29"
500+
- php-version: "8.4"
501+
vs: "vs17"
502+
- php-version: "8.5"
503+
vs: "vs17"
491504

492505
steps:
493506
- name: "Checkout"
@@ -517,7 +530,7 @@ jobs:
517530
FULL=$(php -r 'echo PHP_VERSION;')
518531
# thread-safe devel packs carry no infix, NTS ones carry -nts
519532
INFIX=$([ "${{ matrix.ts }}" = "zts" ] && echo "" || echo "-nts")
520-
PACK="php-devel-pack-$FULL$INFIX-Win32-vs17-x64.zip"
533+
PACK="php-devel-pack-$FULL$INFIX-Win32-${{ matrix.vs }}-x64.zip"
521534
echo "devel pack: $PACK"
522535
curl -fsSLo devel-pack.zip "https://windows.php.net/downloads/releases/$PACK" \
523536
|| curl -fsSLo devel-pack.zip "https://windows.php.net/downloads/releases/archives/$PACK"
@@ -530,6 +543,8 @@ jobs:
530543
uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0
531544
with:
532545
arch: x64
546+
# empty on the vs17 legs = the image's default (latest) toolset
547+
toolset: ${{ matrix.toolset }}
533548

534549
- name: "Build the extension"
535550
shell: cmd
@@ -652,11 +667,11 @@ jobs:
652667
# vs17-built official PHP loads it fine.
653668
matrix:
654669
operating-system: ["ubuntu-latest", "windows-latest"]
655-
php-version: ["8.4", "8.5"]
670+
php-version: ["8.3", "8.4", "8.5"]
656671
ts: ["nts", "zts"]
657672
script: ["make tests", "make phpstan"]
658673
# macOS runs the shipped ad-hoc-signed universal binary; there is no
659-
# macOS zts build, and 8.4 coverage comes from the other legs.
674+
# macOS zts build, and 8.3/8.4 coverage comes from the other legs.
660675
include:
661676
- operating-system: "macos-latest"
662677
php-version: "8.5"

0 commit comments

Comments
 (0)