diff --git a/.github/pie-behaviour-tests/Dockerfile b/.github/pie-behaviour-tests/Dockerfile index 04d47aef..274aaffd 100644 --- a/.github/pie-behaviour-tests/Dockerfile +++ b/.github/pie-behaviour-tests/Dockerfile @@ -29,8 +29,13 @@ RUN export DEBIAN_FRONTEND="noninteractive"; \ ARG PHP_VERSION=8.4 RUN mkdir -p /usr/local/src/php; \ cd /usr/local/src/php; \ - FULL_LATEST_VERSION=`curl -fsSL "https://www.php.net/releases/index.php?json&max=1&version=$PHP_VERSION" | jq -r '.[].source[]|select(.filename|endswith(".gz")).filename'`; \ - wget -O php.tgz "https://www.php.net/distributions/$FULL_LATEST_VERSION" ; \ + if [ "${PHP_VERSION%-dev}" != "$PHP_VERSION" ]; then \ + PHP_SRC_DOWNLOAD_URL=`curl -fsSL "https://www.php.net/pre-release-builds.php?format=json" | jq -r --arg v "${PHP_VERSION%-dev}" 'to_entries[] | select(.key | startswith($v)) | .value.release.files.gz.path'` ; \ + else \ + FULL_LATEST_VERSION=`curl -fsSL "https://www.php.net/releases/index.php?json&max=1&version=$PHP_VERSION" | jq -r '.[].source[]|select(.filename|endswith(".gz")).filename'`; \ + PHP_SRC_DOWNLOAD_URL="https://www.php.net/distributions/$FULL_LATEST_VERSION" ; \ + fi; \ + wget -O php.tgz "$PHP_SRC_DOWNLOAD_URL" ; \ tar zxf php.tgz ; \ rm php.tgz ; \ ls -l ; \ @@ -44,7 +49,7 @@ RUN mkdir -p /usr/local/src/php; \ RUN touch /usr/local/lib/php.ini COPY --from=ghcr.io/php/pie:bin /pie /usr/local/bin/pie -RUN pie install xdebug/xdebug +RUN BOX_REQUIREMENT_CHECKER=0 pie install xdebug/xdebug COPY --from=clone_ext_repo /example-pie-extension /example-pie-extension diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index aab8204b..05597afd 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -21,6 +21,7 @@ jobs: - '8.3' - '8.4' - '8.5' + - '8.6' steps: - name: Setup PHP uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 #2.37.2 @@ -121,6 +122,7 @@ jobs: - '8.3' - '8.4' - '8.5' + #- '8.6' # @todo bundled repo doesn't support non-stable PHP versions steps: - name: "Purge built-in PHP version" run: | @@ -160,8 +162,15 @@ jobs: libzip-dev - name: "Set php-src download URL" run: | - DIST_URL=`curl -fsSL "https://www.php.net/releases/index.php?json&max=1&version=${{ matrix.php-versions }}" | jq -r '.[].source[]|select(.filename|endswith(".gz")).filename'` - echo "php_src_download_url=https://www.php.net/distributions/$DIST_URL" >> $GITHUB_ENV + if [[ "${{ matrix.php-versions }}" == *-dev ]]; then + VERSION="${{ matrix.php-versions }}" + VERSION="${VERSION%-dev}" + DIST_URL=`curl -fsSL "https://www.php.net/pre-release-builds.php?format=json" | jq -r --arg v "$VERSION" 'to_entries[] | select(.key | startswith($v)) | .value.release.files.gz.path'` + echo "php_src_download_url=$DIST_URL" >> $GITHUB_ENV + else + DIST_URL=`curl -fsSL "https://www.php.net/releases/index.php?json&max=1&version=${{ matrix.php-versions }}" | jq -r '.[].source[]|select(.filename|endswith(".gz")).filename'` + echo "php_src_download_url=https://www.php.net/distributions/$DIST_URL" >> $GITHUB_ENV + fi - name: "Install PHP ${{ matrix.php-versions }}" env: php_src_download_url: ${{ env.php_src_download_url }} @@ -220,6 +229,7 @@ jobs: - '8.3' - '8.4' - '8.5' + - '8.6-dev' steps: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 #v7.0.0 with: diff --git a/composer.json b/composer.json index 4087aef6..15ea7389 100644 --- a/composer.json +++ b/composer.json @@ -27,7 +27,7 @@ } ], "require": { - "php": "8.1.*||8.2.*||8.3.*||8.4.*||8.5.*", + "php": "8.1.*||8.2.*||8.3.*||8.4.*||8.5.*||8.6.*", "composer/composer": "^2.10.2", "composer/pcre": "^3.4.0", "composer/semver": "^3.4.4", @@ -49,7 +49,7 @@ "phpstan/phpstan": "^2.2.5", "phpstan/phpstan-phpunit": "^2.0.18", "phpstan/phpstan-webmozart-assert": "^2.0", - "phpunit/phpunit": "^10.5.63", + "phpunit/phpunit": "^10.5.64", "thecodingmachine/phpstan-safe-rule": "^1.4.7" }, "replace": { diff --git a/composer.lock b/composer.lock index 999aa8ba..bc7202e7 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "1f6ab4068638ae2fd252920019617e2b", + "content-hash": "6f326838532673606074a4937408a38b", "packages": [ { "name": "composer/ca-bundle", - "version": "1.5.12", + "version": "1.5.13", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "00a2f4201641d5c53f7fc0195e6c8d9fcc321a78" + "reference": "c008272789979f709f7fcb32c2ecf1d2db5e84e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/00a2f4201641d5c53f7fc0195e6c8d9fcc321a78", - "reference": "00a2f4201641d5c53f7fc0195e6c8d9fcc321a78", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/c008272789979f709f7fcb32c2ecf1d2db5e84e5", + "reference": "c008272789979f709f7fcb32c2ecf1d2db5e84e5", "shasum": "" }, "require": { @@ -64,7 +64,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.5.12" + "source": "https://github.com/composer/ca-bundle/tree/1.5.13" }, "funding": [ { @@ -76,7 +76,7 @@ "type": "github" } ], - "time": "2026-05-19T11:26:22+00:00" + "time": "2026-07-18T12:35:13+00:00" }, { "name": "composer/class-map-generator", @@ -3407,16 +3407,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "2.3.2", + "version": "2.3.3", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "a004701b11273a26cd7955a61d67a7f1e525a45a" + "reference": "fb19eedd2bb67ff8cf7a5502ad329e701d6398a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/a004701b11273a26cd7955a61d67a7f1e525a45a", - "reference": "a004701b11273a26cd7955a61d67a7f1e525a45a", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fb19eedd2bb67ff8cf7a5502ad329e701d6398a3", + "reference": "fb19eedd2bb67ff8cf7a5502ad329e701d6398a3", "shasum": "" }, "require": { @@ -3448,9 +3448,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.2" + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.3" }, - "time": "2026-01-25T14:56:51+00:00" + "time": "2026-07-08T07:01:06+00:00" }, { "name": "phpstan/phpstan", @@ -3948,24 +3948,24 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.63", + "version": "10.5.64", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "33198268dad71e926626b618f3ec3966661e4d90" + "reference": "0e8c1d19cea35ad97d4887f363d07c78e30fbf06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/33198268dad71e926626b618f3ec3966661e4d90", - "reference": "33198268dad71e926626b618f3ec3966661e4d90", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0e8c1d19cea35ad97d4887f363d07c78e30fbf06", + "reference": "0e8c1d19cea35ad97d4887f363d07c78e30fbf06", "shasum": "" }, "require": { "ext-dom": "*", + "ext-filter": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", - "ext-xml": "*", "ext-xmlwriter": "*", "myclabs/deep-copy": "^1.13.4", "phar-io/manifest": "^2.0.4", @@ -4029,31 +4029,15 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.63" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.64" }, "funding": [ { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", - "type": "tidelift" + "url": "https://phpunit.de/sponsoring.html", + "type": "other" } ], - "time": "2026-01-27T05:48:37+00:00" + "time": "2026-07-06T14:50:35+00:00" }, { "name": "sebastian/cli-parser", @@ -5769,7 +5753,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "8.1.*||8.2.*||8.3.*||8.4.*||8.5.*" + "php": "8.1.*||8.2.*||8.3.*||8.4.*||8.5.*||8.6.*" }, "platform-dev": { "ext-openssl": "*" diff --git a/src/Platform/TargetPlatform.php b/src/Platform/TargetPlatform.php index 1b8d25ef..f661abac 100644 --- a/src/Platform/TargetPlatform.php +++ b/src/Platform/TargetPlatform.php @@ -97,6 +97,9 @@ public static function fromPhpBinaryPath(PhpBinaryPath $phpBinaryPath, int|null case 'VS17': $windowsCompiler = WindowsCompiler::VS17; break; + case 'VS18': + $windowsCompiler = WindowsCompiler::VS18; + break; } } } diff --git a/src/Platform/WindowsCompiler.php b/src/Platform/WindowsCompiler.php index 7b5bc372..93466e57 100644 --- a/src/Platform/WindowsCompiler.php +++ b/src/Platform/WindowsCompiler.php @@ -15,4 +15,5 @@ enum WindowsCompiler case VC15; case VS16; case VS17; + case VS18; } diff --git a/test/assets/pie_test_ext_win/php_pie_test_ext-1.2.3-8.6-ts-vs16-x86_64.dll b/test/assets/pie_test_ext_win/php_pie_test_ext-1.2.3-8.6-ts-vs16-x86_64.dll new file mode 100644 index 00000000..c78b62b1 --- /dev/null +++ b/test/assets/pie_test_ext_win/php_pie_test_ext-1.2.3-8.6-ts-vs16-x86_64.dll @@ -0,0 +1 @@ +only a test file diff --git a/test/assets/pie_test_ext_win/php_pie_test_ext-1.2.3-8.6-ts-vs16-x86_64.pdb b/test/assets/pie_test_ext_win/php_pie_test_ext-1.2.3-8.6-ts-vs16-x86_64.pdb new file mode 100644 index 00000000..c78b62b1 --- /dev/null +++ b/test/assets/pie_test_ext_win/php_pie_test_ext-1.2.3-8.6-ts-vs16-x86_64.pdb @@ -0,0 +1 @@ +only a test file