The dominant topic on the PHP internals list this week was not code but communication. Subscribers debated how to handle list messages that appear to be written or heavily assisted by large language models. Around 24 messages followed. Nobody objected to machine translation, since English is a second or third language for many on the list. The objections targeted delegated authorship of arguments and the fact that LLM output is hard to detect reliably from the outside. No policy has been written down yet, but a thread in the community Discord at phpc.chat is working on guidelines.
Sepehr Mahmoudi opened a new RFC on Saturday, shortly after withdrawing his previous one. The proposal, array_match(), would filter an array to values containing a substring, implemented in C to avoid closure overhead. Resistance was immediate. Yuya Hamada pointed to array_filter(), to conflicting userland functions already named array_match, and to the declined str_icontains RFC. Tim Düsterhus noted that with partial function application in PHP 8.6 the same result is a one-liner, and Christian Schneider mentioned preg_grep(). Ayesh Karunaratne argued from profiling experience on Drupal, WordPress and other codebases that array string search has never been a bottleneck. Larry Garfield called it an XY problem, and mickmackusa suggested making str_contains() polymorphic like str_replace(). Mahmoudi dropped the case-insensitive flag, renamed the function to array_str_contain() and retargeted it to PHP 8.7, since 8.6 is frozen. So far the RFC has no supporters.
Nick Sdot proposed restructuring the PHP internals book inside php-src, converting pages from reStructuredText to Markdown in a 1,100-line mechanical diff. Ilija Tovilo, who set the book up, objected that the source is MyST rather than either format, and that the docs have stalled for lack of invested time, not because of syntax. Nick clarified that an old docs folder he wants to merge is already Markdown, so a conversion is unavoidable in one direction. The pull request remains open.
Robert Chapin revisited the January RFC Deprecate Fuzzy Type Casts by Alexandre Daubois and Nicolas Grekas, which still targets 8.6 despite no recent discussion. He showed that the RFC's migration examples do not hold: is_numeric() returns true for the string "1.5" and would still trigger the deprecation, is_int() and is_float() return false for every numeric string, and filter_var() does not guarantee an integer. His question whether developers are expected to replace a single cast with 8 lines of code went unanswered.
Mahmoudi also raised a process question: should the RFC template recommend including a userland polyfill for new functions? A polyfill pins down exact behaviour and edge cases without reading the C implementation, and gives projects like Symfony's polyfill packages a head start. Garfield called a recommend-but-not-require policy reasonable and added that a polyfill provides a benchmark target to verify whether a C implementation is actually faster.
Gina P. Banyard corrected Steven Wilton's accepted SNMP improvements RFC: its claim of targeting all supported PHP versions conflicts with the patch release policy, so the changes will land in 8.6 only. She also asked that new integer constants become PHP enums for better userland type safety, mirroring the C enums SNMP defines. The goal is to merge in time for 8.6.0 beta 2.
Weilin Du, maintainer of the intl extension, outlined work he wants to delegate: converting constants to enums, adding namespaces to classes to avoid collisions, closing gaps between PHP and the underlying ICU APIs, and improving error handling, which he bluntly called bad and a source of stupid bugs. Enums and namespaces could become an 8.7 RFC. Yuya Hamada noted that feedback from right-to-left language users is scarce industry-wide, which matters for internationalisation quality.
In short items: last week's array_search_range() RFC was officially withdrawn after a 7-point review by mickmackusa. Weilin Du's extension-name case sensitivity proposal will become an RFC because a core developer objected, with a vote planned after the 8.6 branch cut on September 22. And newcomer Zachary DuBois, told he needed only a pull request rather than an RFC, submitted sodium bindings for the post-quantum X-Wing and ML-KEM-768 key encapsulation algorithms as his first contribution. No RFC was in voting phase for the second consecutive week.




Comments
No comments yet — be the first.
Open the discussion
No account or password needed — just enter your e-mail and we’ll send you a one-time sign-in link. First time here? You’re set up automatically.
Your rating will be applied automatically after you sign in.
Check your inbox
We’ve sent a sign-in link to …. Open it on this device — this tab will sign you in automatically.
Nothing arrived? Check your spam folder — and mark the mail as "Not spam" so it lands in your inbox next time.