No PHP 8.5.0alpha3
Friday, 01 August 2025Yesterday, 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
?
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.