HomeRésuméOpen SourceWorkBlog

No PHP 8.5.0alpha3

Friday, 01 August 2025

Yesterday, I announced the release of the last alpha version of PHP 8.5.0, labeled 8.5.0alpha4. This comes two weeks after the previous version, 8.5.0alpha2, was announced. So, what happened to 8.5.0alpha3?

Missing alpha3 confusion

Up until the day before the announcement, the plan was for the release to be 8.5.0alpha3. However, there were some complications that necessitated incorporating a few more code changes.

Process

The release process (from the perspective of a release manager) is essentially split into two parts: creating an authoritative version of the code for a release ("packaging the release"), and then publicizing the availability of the release through various channels ("announcing the release"). The first part requires updating a few files throughout the PHP code base, running thousands of tests, and uploading the exact versions of the files that should be used for the release, both to the git history of the PHP repository, and as "tarballs" with all of the files compressed together. Once done, the release manager (usually) gets to take a break. This first part generally happens on a Tuesday, two days before the release is publicly announced.

The tarballs contain the source code for PHP, and while you could compile that code yourself (which is what developers do), most people probably do not want to do that. During the two days between packaging a release and announcing it, multiple versions of the code are compiled for various configurations so that you can just download an executable (Windows) or install a package (*nix). The Windows binaries are made available on windows.php.net, and for RPM-based *nix distributions (Fedora, Red Hat Enterprise Linux, etc.) packages are made available by Remi Collet. For Debian-based *nix distributions, releases will eventually be available via the Sury repository, but I'm not sure if that includes prerelease versions like 8.5.0alpha4.

Alpha3

On July 29th (Tuesday), I went through the process of packaging the 8.5.0alpha3 release. Other than one test that timed out before completion (and has consistently done so on my system), all of the tests passed. I created the php-8.5.0alpha3 git tag, uploaded it to the PHP repo, and created the tarballs. I then contacted the distribution list that handles building new releases to let people know that the new version was ready to be built.

When I woke up on July 30th (Wednesday), I saw messages that there were issues with both the Windows and RPM builds for the tag. Accordingly, we needed a new version of PHP to be tagged and built. While the documentation suggests that the git tag could have just been deleted and recreated, since the new version hadn't been announced yet, I've been told that that documentation is outdated and that tags should be considered immutable.

Alpha4

As a result, I had to go through the entire process of packaging the release again, but now with updated code that included fixes for the builds, and under the name 8.5.0alpha4 rather than 8.5.0alpha3. If you want to see the difference between the two tags, you can check the comparison on GitHub, since the alpha3 tag is still there in the history.

The list of changed files looks big (139 files in a single day!), but most of those changes are unrelated to fixing the build failures. The relevant fixes were fairly small - see GH-19301 for the RPM builds (three lines of code changed), and GH-19310 for the Windows builds (a different three lines of code changed). The trick is in knowing which three lines need to be changed. My thanks to those who implemented the fixes so quickly!

The two day window between packaging and announcing the release worked exactly as intended - it allowed for issues in the release to be caught and corrected, so that people who wanted to actually test out the new version (which should only be used for tests, it is not ready for production) could do so properly.