Two RFC ballots are running on PHP's internals list this week. Tim Düsterhus opened voting Friday on the Time\Duration class: the primary ballot (needing a two-thirds majority) stands at 23-1, and a secondary ballot on naming favors full method names like multiplyBy/divideBy over abbreviations like mul/divBy, 18-1. Pierre Joye, who had leaned no over the fromSeconds() nanoseconds argument, switched to yes after finding that per-unit constructors already addressed his objection. Both ballots close July 31.
Separately, Holly Schilling announced she is drafting a Value Structs RFC for after the 8.6 window, arguing Duration would work better as a struct than a class, ideally shipping together with structs in PHP 9. Ilija Tovilo pointed to his own existing structs-v2 draft; Schilling said she deliberately diverged from it to keep mutating and non-mutating behavior separate. Düsterhus argued standard-library improvements shouldn't wait on a still-draft idea.
Eric Norris opened a second ballot Thursday on minimum supported versions for PHP 8.6. Requiring autoconf 2.71 for git builds stands at 20-3-4 (yes-no-abstain); requiring COM_RESET_CONNECTION, which sets a floor of MySQL 5.7.3 or MariaDB 10.2.4 so persistent connections actually reset, stands at 21-0-3. Alexander Kurilo asked for an opt-in instead, warning older databases would silently lose persistence; Norris noted MySQL 5.7.3 dates to December 2013. Jakub Zelenka voted no over Red Hat Enterprise Linux 8/9 build concerns; Düsterhus offered to push that particular change to early 8.7. Both votes close July 30.
Pierre Joye opened a large RFC for gd 2.4 Saturday night with three parts: syncing the bundled gd extension with upstream libgd (new codecs QOI, JPEG XL and UltraHDR, animated GIF/WebP, multi-page TIFF, real metadata), an additive object-oriented Gd\ API, and a new 2D vector canvas built on FreeType's rasterizer with Cairo-style compositing. His 14-day discussion window running to August 1 lands after PHP 9's cutoff, since alpha 1 shipped July 2 and the final-RFC-state deadline was July 14 — four days before the thread opened. Release manager Matteo Beccati and Jakub Zelenka confirmed no exception can be granted without a policy change. Joye said the implementation, including a security audit, was essentially done, but his pull request had stalled on an automated bot reviewer that could never approve it, so he merged it himself. gd 2.4 is now aimed at whichever release follows 8.6. Larry Garfield separately asked the list to hold new business until September 1 so reviewers can focus on the 8.6 finish line.
Caleb White's pipe assignment operator |>= is contested by a competing proposal: Vadim Dvorovenko published a left-to-right assignment RFC using the same token with opposite, mutable semantics, arguing it would undercut the functional pipe concept. Larry Garfield moved to a no vote on White's proposal, but Düsterhus disputed Garfield's claim that no pipe RFC could make 8.6, noting a vote could still open July 27 and close August 10 before the freeze.
Paul M. Jones's strict-namespace RFC spent the week arguing over its name rather than its substance, with Rowan Tommins, Ilija Tovilo and Düsterhus (who prefers global_fallback=0) all objecting to "strict." Theodore Brown noted he proposed similar wording back in 2019. Benjamin Außenhofer suggested splitting the concept and the name into separate votes; Tommins warned this creates an awkward choice for supporters who dislike the proposed name.
Nicolas Grekas defended his serializable closures RFC after Ilija Tovilo voted against it, arguing the real benefit is skipping frameworks' repeated metadata pipeline rather than caching a single attribute. He refused to weaken the security design against gadget risks, and released version 0.3 Saturday, dropping the reflection API entirely while keeping serialize() support, which he says underlies most PHP cache systems.
Wendell Adriel's typed array declarations proposal (array<int, string> syntax with three enforcement levels) drew fast pushback over mutable-array subtyping issues, overlap with the on-hold reified generics work, and a runtime gap in functions like parse_str(). Larry Garfield called the array type "already dangerously overloaded" and asked for real typed list/set/dictionary objects instead; Wendell shelved the RFC himself and volunteered to help build those alternatives.
Juliette Reinders Folmer scanned roughly 450,000 files across Packagist's top 4,000 packages to gauge real-world usage ahead of PHP 8.6's frozen deprecations vote. list() appears over 12,000 times, prompting her to now oppose deprecating it, versus spl_object_hash() at 625 uses and is_integer() at 303, with several other proposals scoring zero. Gina P. Banyard confirmed deprecation votes open Monday, July 27, running two weeks to close before 8.6.
Other items: Go Kudo revived a standalone user_cache extension decoupled from OPcache, redirected toward PHP 8.7 (or "9"); a 4x performance fix for non-public asymmetric setters was confirmed to need only PR review, not an RFC; a proposal surfaced for engine-native PSR-4 autoloading via spl_autoload_psr4_register(); the TrueAsync project published a pre-RFC for an async scheduler interface with no user-visible changes; and Osama Aldemeery received RFC karma to formalize PREG_THROW_ON_ERROR.
On releases, PHP 8.6.0alpha2, 8.5.9RC1 and 8.4.24RC1 shipped this week, with alpha 3 and the 8.5/8.4 GA releases converging on July 30. The 8.6 schedule sets soft feature freeze for August 11 and beta 1 for August 13, with all votes required to close before then.