3535 COMPOSER_VERSION : " 2.9.2"
3636 COMPOSER_PHAR_SHA256 : " 471f2d857abf0ec18af7b055e61472214d91adb24f9bdbbb864c1c64faad7dd6"
3737 # setup-php installs an 8.6 nightly, which has no matching Windows devel pack.
38- PHP86_WINDOWS_VERSION : " 8.6.0beta3 "
38+ PHP86_WINDOWS_VERSION : " 8.6.0RC2 "
3939
4040jobs :
4141 compiler-tests :
@@ -326,9 +326,9 @@ jobs:
326326
327327 turbo-compile :
328328 name : " Compile Turbo Extension"
329- runs-on : ${{ matrix.php-version == '8.6' && matrix.target.family == 'gnu' && (matrix.target.name == 'linux-gnu-arm64' && 'ubuntu-22.04-arm' || 'ubuntu-22.04') || matrix. target.runs-on }}
329+ runs-on : ${{ matrix.target.runs-on }}
330330 # Container legs pin the built binaries' userland floor independently of
331- # the runner image. The 8.3–8.5 gnu legs run in a prebuilt ubuntu:22.04-based
331+ # the runner image. The gnu legs run in a prebuilt ubuntu:22.04-based
332332 # image (.github/turbo-build/Dockerfile, published to GHCR by
333333 # turbo-build-image.yml) with the PHP toolchain baked in: the glibc
334334 # symbol floor stays at 2.34 (RHEL 9, Ubuntu 22.04+, Debian 12+) and the
@@ -347,10 +347,9 @@ jobs:
347347 # not worth two binaries per PHP minor. Their binaries are deleted from
348348 # phpstan/phpstan by the commit job (TURBO_RETIRED_BINARIES). Windows
349349 # keeps its ZTS leg: XAMPP, WampServer and Scoop default to TS PHP.
350- # PHP 8.6 has no ondrej/php packages or prebuilt GNU image yet. Use
351- # setup-php on Jammy runners, preserving the shipped binary's glibc floor.
352- # Alpine's php86 packages are currently only in edge/testing.
353- container : ${{ matrix.target.family == 'gnu' && matrix.php-version != '8.6' && format('ghcr.io/phpstan/turbo-build:gnu-php{0}', matrix.php-version) || matrix.target.family == 'musl' && matrix.php-version == '8.6' && 'alpine:edge' || matrix.target.container }}
350+ # The gnu-php8.6 image builds the official 8.6 prerelease tarball (see the
351+ # Dockerfile). Alpine's php86 packages are currently only in edge/testing.
352+ container : ${{ matrix.target.family == 'gnu' && format('ghcr.io/phpstan/turbo-build:gnu-php{0}', matrix.php-version) || matrix.target.family == 'musl' && matrix.php-version == '8.6' && 'alpine:edge' || matrix.target.container }}
354353 timeout-minutes : 30
355354
356355 env :
@@ -393,7 +392,7 @@ jobs:
393392 # The Alpine leg installs PHP and tooling before checkout:
394393 # actions/checkout needs git inside the container, and the build needs
395394 # php/php-config symlinks pointing at the matrix PHP version. The GNU
396- # container legs have the toolchain baked in; 8.6 uses setup-php below .
395+ # container legs have the toolchain baked in.
397396 - name : " Install PHP and build tools (Alpine container)"
398397 if : matrix.target.family == 'musl'
399398 run : |
@@ -432,13 +431,6 @@ jobs:
432431 coverage : " none"
433432 php-version : " ${{ matrix.php-version }}"
434433
435- - name : " Install PHP (GNU runners)"
436- if : matrix.target.family == 'gnu' && matrix.php-version == '8.6'
437- uses : " shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240" # v2.37.2
438- with :
439- coverage : " none"
440- php-version : " ${{ matrix.php-version }}"
441-
442434 - name : " Compile phpstan_turbo with strict warnings"
443435 working-directory : " turbo-ext"
444436 # Exemptions, each caused by third-party macro expansions, not our code:
@@ -481,15 +473,11 @@ jobs:
481473 if : matrix.target.family != 'macos'
482474 # checksum-pinned composer, run under the matrix PHP so platform
483475 # requirements are validated against the interpreter the tests below
484- # run on. COMPOSER_HOME is isolated: on the runner (PHP 8.6) legs,
485- # setup-php seeds ~/.composer/auth.json with the workflow's GitHub
486- # token, which this pinned composer rejects at startup ("github oauth
487- # token contains invalid characters") — everything here comes from
488- # packagist dists, no auth needed.
476+ # run on
489477 run : |
490478 curl -fsSLo composer.phar "https://getcomposer.org/download/$COMPOSER_VERSION/composer.phar"
491479 echo "$COMPOSER_PHAR_SHA256 composer.phar" | sha256sum -c -
492- COMPOSER_HOME="$(mktemp -d)" php composer.phar install --no-interaction --no-progress
480+ php composer.phar install --no-interaction --no-progress
493481 rm composer.phar
494482
495483 - name : " Smoke test (differential: native vs PHP implementations)"
@@ -1027,6 +1015,13 @@ jobs:
10271015 exclude :
10281016 - operating-system : " ubuntu-latest"
10291017 ts : " zts"
1018+ # setup-php's Linux 8.6 is a nightly snapshot that can predate the
1019+ # release the binary is compiled against (on 2026-09-25 it still
1020+ # had the module API 8.6.0RC2 replaced), and a module API mismatch
1021+ # refuses to load the extension at all. turbo-docker-run runs the
1022+ # same checks with this binary in the official 8.6 prerelease image.
1023+ - operating-system : " ubuntu-latest"
1024+ php-version : " 8.6"
10301025 # macOS runs the shipped ad-hoc-signed arm64 binary; there is no
10311026 # macOS zts build, and 8.3/8.4 coverage comes from the other legs.
10321027 include :
0 commit comments