PHP 8.4.22 Release Candidate Fixes JIT Crashes and Memory Leaks Before Stable Launch
The first release candidate for PHP 8.4.22 is out, and it finally patches the tracing JIT crashes that have been tripping up developers using Opcache under heavy load. This build also cleans up memory leaks in SPL iterators, fixes OpenSSL 4.0 compatibility headaches, and corrects a few edge cases in date handling and version comparison. If you run production workloads on recent PHP versions, testing this candidate before the stable drop makes sense.
Opcache JIT Crash and Interrupt Handling
The tracing JIT crash fix is the headline here. Developers who push Opcache to its limits often hit assertion failures when a virtual machine interrupt fires during an observed user function call. That specific crash in zend_jit_trace.c has been sitting in bug reports for a while, and this release candidate finally closes it. If your application relies on JIT compilation for performance, skipping the stable version until this lands would be a mistake. The fix targets the exact moment where interrupt handling collides with trace observation, which means smoother execution during high traffic spikes or complex recursive calls.
SPL Memory Leaks and Iterator Cleanup
Memory leaks in the Standard PHP Library rarely make headlines until they eat up server RAM and trigger out of memory errors. This build patches a leak in SplFixedArray::setSize when a destructor expands during clearing, and it also resolves a use after free bug in MultipleIterator children. Those iterator issues tend to show up in legacy codebases that still rely on custom data traversal patterns. The fix ensures self freeing iterators clean up properly instead of dangling pointers waiting to corrupt memory later.
Testing the PHP 8.4.22 Release Candidate Before Stable Launch
Internationalization and cryptography extensions get a quiet but necessary upgrade cycle here. Spoofchecker restriction level APIs now work across all supported ICU versions, which saves developers from writing version specific fallback logic. Error messages in IntlDateFormatter and SpoofChecker::setAllowedChars() also switch to PHP constant names instead of raw ICU identifiers, making debugging sessions noticeably less frustrating. OpenSSL 4.0 compatibility gets a straightforward patch that prevents handshake failures when newer library headers change internal struct layouts. The standard library and database driver extensions round out the changelog with targeted fixes. version_compare() finally stops choking on strings that end with a dot, which breaks automated package managers and composer lock file parsers. ip2long() leading zeros handling gets corrected for AIX systems where octal interpretation differs from Linux defaults. MySQLnd also clears up a persistent free issue on non persistent connect_attr keys that could cause connection pool exhaustion under heavy load.
Release php-8.4.22RC1
Tag for php-8.4.22RC1
Grab the source tarball or compile it against your existing stack to verify nothing breaks before the stable release hits. The core team has been quiet lately, so this candidate is likely sitting close to final polish. Testing it now saves everyone from chasing down regression bugs next week.
