Back to Blog
PHP 8.6 RC1: What I'd Test Before GA
PHP 8.6.0RC1 builds are up for testing after the hard freeze. Here's what that milestone means and what I'd actually run before November GA.
Back
Engineering
Table of contents
PHP 8.6 RC1: What I'd Test Before GA
PHP 8.6.0 RC1 builds exist. As of 23 Sep 2026, the Windows QA team's packages and Release Manager Matteo Beccati's source tarballs are both live. Hard feature freeze hit on 22 Sep. Official news day on php.net is still scheduled for 24 Sep per the wiki calendar.
This is the RC1 milestone. Feature work stops, and the focus shifts to bugs, tests, and docs until GA on 19 Nov 2026.
So the question for me is practical. What would I test this week, and what would I wait on until GA?
Quick Answer
Pull RC1 on a throwaway environment. Run your full test suite. Keep production on 8.5.x or your current supported line. Learn on RC, cut over after GA when your suite is green.
What RC1 changes in the process
After the hard freeze on 22 Sep, new features require RM approval. That approval is for critical fixes, not for late RFCs. The timetable from this point is RC releases every two weeks (RC2 on 8 Oct, RC3 on 22 Oct, RC4 on 5 Nov, RC5 on 19 Nov if needed) and then GA on 19 Nov.
Between RC1 and GA, the focus is stability. Bug reports from real test suites matter. This is not a beta announcement where you skim features and move on. This is the window where you find the upgrade landmines on a safe branch before they find you on production.
What I'd test
I covered the feature tour in my earlier PHP 8.6 post. You can read that for PFA, clamp(), SortDirection, Duration, and session defaults. I am not repeating that here.
What I would run on RC1 is the boring stuff that catches real tickets.
PFA edge cases. The partial function application RFC is implemented. The optional-parameter follow-up landed. I would test a few edge cases: optional parameters in placeholders, variadic interaction, early binding behavior. If your codebase already uses arrow functions or closures heavily, run your suite.
clamp name collision. If you have a userland clamp() function in global scope, PHP 8.6 will collide with it. Rename your helper now, or namespace it, before you upgrade. Test on RC1 to confirm the collision is gone.
trim mask change. trim, ltrim, rtrim, and chop now include form-feed (\f) in the default whitespace mask. If you have string-cleaning tests that rely on the old behavior, they will break. Verify your edge cases.
Session defaults. The engine defaults changed: cookie_httponly=On, samesite=Lax, use_strict_mode=On. Frameworks may override these, but if you manage session configuration directly, check that your tests and staging environments reflect the new baseline before you hit production.
Intl and grapheme. If you have intl available, test grapheme_strrev with emoji and combining marks. I could not run it on the beta3 slim Docker image, but it is in the release. If you work with Unicode strings, this is worth a smoke test.
Real framework smoke. If you run Laravel, Symfony, or another framework, install RC1 in a dev container and run your full PHPUnit suite. Check for deprecation warnings, unexpected failures, and build-tool compatibility. If Composer or PHPUnit lag RC1 support, note that now rather than on upgrade day.
I would not invent a test matrix from secondary blogs. I would read the official php-src UPGRADING file on the PHP-8.6 branch and test the cases that match my own code.
What I would not do
I would not ship production on RC1. RC is for testing. GA is for production.
I would not treat secondary "five versions at once" roundup posts as gospel. Coordinated security releases for 8.2, 8.3, 8.4, and 8.5 sometimes land near an RC1 window. If you see a blog mention CVE lists but php.net's archive page does not yet have the security announcement, wait for the official post. Do not invent CVE details from secondary sources.
I would not assume Docker tags, Herd, Homebrew, or Forge images will have RC1 on the same day as the official tarballs. They usually lag by a few days to a few weeks. If you depend on a specific hosting image or local dev tool, check its release cadence before you commit to a test timeline.
My take
RC1 is the milestone where the release gets real. Feature freeze means no surprises, and the timetable from here to GA is predictable. I would use this window to run a full test suite on RC1, fix any collisions or edge cases, and document what breaks before GA.
Then I would wait for 19 Nov, pull the GA tag, re-run the suite, and cut over when it is green.
Learn on RC. Ship on GA.
Sources
- PHP 8.6 timetable and schedule
- PHP pre-release builds page (Windows RC1 packages)
- Matteo Beccati's RC1 source tarballs
- PHP archive 2026 (Beta 3 note about RC1)
- PHP 8.6: What's Coming (earlier feature post)
- php-src
UPGRADINGon thePHP-8.6branch (cross-check before ship)
Comments
No comments yet
Loading comments...