<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>#externals</title><link>https://externals.io</link><description>Opening PHP's #internals to the outside</description><pubDate>Sun, 02 Aug 2026 16:14:45 +0000</pubDate><lastBuildDate>Sun, 02 Aug 2026 16:14:45 +0000</lastBuildDate><item><title>[META] This Week In PHP Internals | July 29, 2026</title><link>https://externals.io/message/132163</link><description>&lt;p&gt;Hi Contributors,&lt;/p&gt;
&lt;p&gt;This week's episode came out a few days late — it was recorded live at &lt;br&gt;
Laracon US in Boston, and the trip home didn't cooperate. Here's the video, &lt;br&gt;
plus everywhere else it landed for visibility.&lt;/p&gt;
&lt;p&gt;As always, if I got something wrong, reply in this thread and I'll make &lt;br&gt;
corrections. That includes how I'm pronouncing your names — I know some of &lt;br&gt;
those still need work.&lt;/p&gt;
&lt;p&gt;If you'd rather read than watch, the &lt;a href="http://dev.to" rel="nofollow" target="_blank"&gt;dev.to&lt;/a&gt; post carries the full episode &lt;br&gt;
as an article, which also makes it the easiest version to quote when &lt;br&gt;
correcting me.&lt;/p&gt;
&lt;p&gt;youtube &lt;a href="https://youtu.be/Af_8W6wxx6k" rel="nofollow" target="_blank"&gt;https://youtu.be/Af_8W6wxx6k&lt;/a&gt; &lt;br&gt;
r/php &lt;br&gt;
&lt;a href="https://www.reddit.com/r/PHP/comments/1vdbx24/this_week_in_php_internals_july_29_2026/" rel="nofollow" target="_blank"&gt;https://www.reddit.com/r/PHP/comments/1vdbx24/this_week_in_php_internals_july_29_2026/&lt;/a&gt; &lt;br&gt;
r/symfony &lt;br&gt;
&lt;a href="https://www.reddit.com/r/symfony/comments/1vdc1g5/this_week_in_php_internals_july_29_2026/" rel="nofollow" target="_blank"&gt;https://www.reddit.com/r/symfony/comments/1vdc1g5/this_week_in_php_internals_july_29_2026/&lt;/a&gt; &lt;br&gt;
r/laravel &lt;br&gt;
&lt;a href="https://www.reddit.com/r/laravel/comments/1vdc4zt/this_week_in_php_internals_july_29_2026/" rel="nofollow" target="_blank"&gt;https://www.reddit.com/r/laravel/comments/1vdc4zt/this_week_in_php_internals_july_29_2026/&lt;/a&gt; &lt;br&gt;
&lt;a href="http://dev.to" rel="nofollow" target="_blank"&gt;dev.to&lt;/a&gt; &lt;br&gt;
&lt;a href="https://dev.to/projektgopher/this-week-in-php-internals-july-29-2026-45ge" rel="nofollow" target="_blank"&gt;https://dev.to/projektgopher/this-week-in-php-internals-july-29-2026-45ge&lt;/a&gt; &lt;br&gt;
mastodon &lt;a href="https://phpc.social/@ProjektGopher/117024912100832320" rel="nofollow" target="_blank"&gt;https://phpc.social/@ProjektGopher/117024912100832320&lt;/a&gt; &lt;br&gt;
threads &lt;a href="https://www.threads.com/@projektgopher/post/DbiIVcnlK3d" rel="nofollow" target="_blank"&gt;https://www.threads.com/@projektgopher/post/DbiIVcnlK3d&lt;/a&gt; &lt;br&gt;
bsky &lt;a href="https://bsky.app/profile/projektgopher.com/post/3ms3p556ydf26" rel="nofollow" target="_blank"&gt;https://bsky.app/profile/projektgopher.com/post/3ms3p556ydf26&lt;/a&gt; &lt;br&gt;
twitter &lt;a href="https://x.com/ProjektGopher/status/2083848350277980393" rel="nofollow" target="_blank"&gt;https://x.com/ProjektGopher/status/2083848350277980393&lt;/a&gt; &lt;br&gt;
linkedin &lt;br&gt;
&lt;a href="https://www.linkedin.com/feed/update/urn:li:activity:7489602847550939136/" rel="nofollow" target="_blank"&gt;https://www.linkedin.com/feed/update/urn:li:activity:7489602847550939136/&lt;/a&gt; &lt;br&gt;
pinkary &lt;br&gt;
&lt;a href="https://pinkary.com/@ProjektGopher/questions/019fc1e2-aaec-7143-bed3-ae909edd5ed5" rel="nofollow" target="_blank"&gt;https://pinkary.com/@ProjektGopher/questions/019fc1e2-aaec-7143-bed3-ae909edd5ed5&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Cheers, &lt;br&gt;
Len&lt;/p&gt;
</description><guid>CAEwAiAF+Y+sz-tsyMEt8qiWJOZKXqY1+UvVY=p5ttAFefLStFA@mail.gmail.com</guid><pubDate>Sun, 02 Aug 2026 10:03:03 +0000</pubDate></item><item><title>How to handle sensitive parameters to curl_setopt?</title><link>https://externals.io/message/132162</link><description>&lt;p&gt;On Sat, Aug 1, 2026, 2:09 PM Sjoerd Langkemper &lt;a href="mailto:sjoerd-php@linuxonly.nl"&gt;sjoerd-php@linuxonly.nl&lt;/a&gt; &lt;br&gt;
wrote:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hello list,&lt;/p&gt;
&lt;p&gt;I would like to reduce the chance that sensitive information passed to &lt;br&gt;
curl_setopt is leaked. There's the SensitiveParameter attribute to prevent &lt;br&gt;
parameters being exposed in stack traces. For example, openssl_encrypt has &lt;br&gt;
its passphrase parameter marked as SensitiveParameter, so it won't be shown &lt;br&gt;
in a stack trace. This mechanism doesn't work so well for curl_setopt, &lt;br&gt;
which has the ability to set many options, both sensitive and not. The &lt;br&gt;
value for &lt;code&gt;CURLOPT_PASSWORD&lt;/code&gt; is likely sensitive, the value for &lt;br&gt;
&lt;code&gt;CURLOPT_RETURNTRANSFER&lt;/code&gt; is not, and &lt;code&gt;CURLOPT_URL&lt;/code&gt; may be sensitive sometimes.&lt;/p&gt;
&lt;p&gt;I have thought of the following solutions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Mark the parameter as SensitiveParameter. This improves security, &lt;br&gt;
but also obscures non-sensitive information. I am not sure how big of a &lt;br&gt;
disadvantage that actually is? The curl error messages could already use &lt;br&gt;
improvement, but when the value is hidden (because it's sensitive) it &lt;br&gt;
becomes even more important to provide better errors.&lt;/li&gt;
&lt;li&gt;Let curl_setopt determine whether to mark the parameter as &lt;br&gt;
sensitive, depending on which option is being set. This is nice &lt;br&gt;
functionally, but needs changes in the engine to store sensitivity of each &lt;br&gt;
parameter in the stack, which comes with performance costs. &lt;br&gt;
&lt;a href="https://github.com/php/php-src/pull/22938" rel="nofollow" target="_blank"&gt;https://github.com/php/php-src/pull/22938&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Be able to pass a SensitiveParameterValue to curl_setopt. This puts &lt;br&gt;
the burden on the user to correctly wrap their sensitive values. &lt;br&gt;
&lt;a href="https://github.com/php/php-src/pull/22960" rel="nofollow" target="_blank"&gt;https://github.com/php/php-src/pull/22960&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;Not optimal, but some other options, all requiring userland intervention:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Additional optional boolean flag parameter to curl_setopt that, when &lt;br&gt;
true, indicates that the value provided is sensitive and which flags to the &lt;br&gt;
engine to wrap it in SensitiveParameter.&lt;/li&gt;
&lt;li&gt;An integer constant that you | into the option name; when detected, the &lt;br&gt;
engine wraps the provided value argument in SensitiveParameter.&lt;/li&gt;
&lt;li&gt;Allow the engine to accept SensitiveParameter instances directly to any &lt;br&gt;
function call. This would allow users to opt-in regardless of the function &lt;br&gt;
signature.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The problem with curl_setopt is that auto detection will be difficult and a &lt;br&gt;
game of whack-a-mole - considering opts are how you set HTTP headers and &lt;br&gt;
content, which can be arbitrary. Allowing the user to determine what is and &lt;br&gt;
isn't sensitive would allow more flexibility, and play nice with the &lt;br&gt;
observer API for precisely the security use cases you describe.&lt;/p&gt;
&lt;p&gt;-- &lt;br&gt;
Matthew Weier O'Phinney &lt;br&gt;
&lt;a href="mailto:mweierophinney@gmail.com" rel="nofollow" target="_blank"&gt;mweierophinney@gmail.com&lt;/a&gt; &lt;br&gt;
&lt;a href="https://mwop.net/" rel="nofollow" target="_blank"&gt;https://mwop.net/&lt;/a&gt; &lt;br&gt;
he/him&lt;/p&gt;
</description><guid>CAJp_myXgUfGqaKCX27fMBHzf25oh8OF=98kHLxOu8z=jHvm+yg@mail.gmail.com</guid><pubDate>Sat, 01 Aug 2026 21:16:42 +0000</pubDate></item><item><title>How to handle sensitive parameters to curl_setopt?</title><link>https://externals.io/message/132161</link><description>&lt;p&gt;On Sat, Aug 1, 2026 at 10:11 PM Sjoerd Langkemper &lt;a href="mailto:sjoerd-php@linuxonly.nl"&gt;sjoerd-php@linuxonly.nl&lt;/a&gt; &lt;br&gt;
wrote:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hello list,&lt;/p&gt;
&lt;p&gt;I would like to reduce the chance that sensitive information passed to &lt;br&gt;
curl_setopt is leaked. There's the SensitiveParameter attribute to prevent &lt;br&gt;
parameters being exposed in stack traces. For example, openssl_encrypt has &lt;br&gt;
its passphrase parameter marked as SensitiveParameter, so it won't be shown &lt;br&gt;
in a stack trace. This mechanism doesn't work so well for curl_setopt, &lt;br&gt;
which has the ability to set many options, both sensitive and not. The &lt;br&gt;
value for &lt;code&gt;CURLOPT_PASSWORD&lt;/code&gt; is likely sensitive, the value for &lt;br&gt;
&lt;code&gt;CURLOPT_RETURNTRANSFER&lt;/code&gt; is not, and &lt;code&gt;CURLOPT_URL&lt;/code&gt; may be sensitive sometimes.&lt;/p&gt;
&lt;p&gt;I have thought of the following solutions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Mark the parameter as SensitiveParameter. This improves security, &lt;br&gt;
but also obscures non-sensitive information. I am not sure how big of a &lt;br&gt;
disadvantage that actually is? The curl error messages could already use &lt;br&gt;
improvement, but when the value is hidden (because it's sensitive) it &lt;br&gt;
becomes even more important to provide better errors.&lt;/li&gt;
&lt;li&gt;Let curl_setopt determine whether to mark the parameter as &lt;br&gt;
sensitive, depending on which option is being set. This is nice &lt;br&gt;
functionally, but needs changes in the engine to store sensitivity of each &lt;br&gt;
parameter in the stack, which comes with performance costs. &lt;br&gt;
&lt;a href="https://github.com/php/php-src/pull/22938" rel="nofollow" target="_blank"&gt;https://github.com/php/php-src/pull/22938&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Be able to pass a SensitiveParameterValue to curl_setopt. This puts &lt;br&gt;
the burden on the user to correctly wrap their sensitive values. &lt;br&gt;
&lt;a href="https://github.com/php/php-src/pull/22960" rel="nofollow" target="_blank"&gt;https://github.com/php/php-src/pull/22960&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;What do you think?&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Sjoerd&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Stack traces are available on dev machines only unless everything is &lt;br&gt;
misconfigured so I don't see how it can leak something. Imagine you &lt;br&gt;
request an API with the wrong password because a co-worker changed it. How &lt;br&gt;
would you know? Just my 2 cents.&lt;/p&gt;
&lt;p&gt;-- &lt;br&gt;
Iliya Miroslavov Iliev &lt;br&gt;
&lt;a href="mailto:i.miroslavov@gmail.com" rel="nofollow" target="_blank"&gt;i.miroslavov@gmail.com&lt;/a&gt;&lt;/p&gt;
</description><guid>CAGwLL8VJoonw_HtJgh-+2o-fYSTB3QA5upcqsiJQxbF_vEDL7g@mail.gmail.com</guid><pubDate>Sat, 01 Aug 2026 19:29:36 +0000</pubDate></item><item><title>How to handle sensitive parameters to curl_setopt?</title><link>https://externals.io/message/132160</link><description>&lt;p&gt;Hello list,&lt;/p&gt;
&lt;p&gt;I would like to reduce the chance that sensitive information passed to curl_setopt is leaked. There's the SensitiveParameter attribute to prevent parameters being exposed in stack traces. For example, openssl_encrypt has its passphrase parameter marked as SensitiveParameter, so it won't be shown in a stack trace. This mechanism doesn't work so well for curl_setopt, which has the ability to set many options, both sensitive and not. The value for &lt;code&gt;CURLOPT_PASSWORD&lt;/code&gt; is likely sensitive, the value for &lt;code&gt;CURLOPT_RETURNTRANSFER&lt;/code&gt; is not, and &lt;code&gt;CURLOPT_URL&lt;/code&gt; may be sensitive sometimes.&lt;/p&gt;
&lt;p&gt;I have thought of the following solutions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Mark the parameter as SensitiveParameter. This improves security, but also obscures non-sensitive information. I am not sure how big of a disadvantage that actually is? The curl error messages could already use improvement, but when the value is hidden (because it's sensitive) it becomes even more important to provide better errors.&lt;/li&gt;
&lt;li&gt;Let curl_setopt determine whether to mark the parameter as sensitive, depending on which option is being set. This is nice functionally, but needs changes in the engine to store sensitivity of each parameter in the stack, which comes with performance costs. &lt;a href="https://github.com/php/php-src/pull/22938" rel="nofollow" target="_blank"&gt;https://github.com/php/php-src/pull/22938&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Be able to pass a SensitiveParameterValue to curl_setopt. This puts the burden on the user to correctly wrap their sensitive values. &lt;a href="https://github.com/php/php-src/pull/22960" rel="nofollow" target="_blank"&gt;https://github.com/php/php-src/pull/22960&lt;/a&gt; &lt;br&gt;
What do you think?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Sjoerd&lt;/p&gt;
</description><guid>77522846-d679-4616-9765-648325329086@app.fastmail.com</guid><pubDate>Sat, 01 Aug 2026 19:07:34 +0000</pubDate></item><item><title>Request for RFC karma</title><link>https://externals.io/message/132159</link><description>&lt;p&gt;Dear Internals,&lt;/p&gt;
&lt;p&gt;I'd like to request RFC karma for kamazee wiki account.&lt;/p&gt;
&lt;p&gt;A prior RFC about the minimum versions &lt;br&gt;
(&lt;a href="https://wiki.php.net/rfc/min_supported_versions_php_8_6" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/min_supported_versions_php_8_6&lt;/a&gt;) introduced few &lt;br&gt;
BC breaks that can be observed even with newer DBMS versions which was &lt;br&gt;
not mentioned in the RFC itself, and thus would like to propose another &lt;br&gt;
way to handle the reset -- optionally, without breaking any of the &lt;br&gt;
existing code. The author wasn't open to considering making the new flag &lt;br&gt;
optional, so I would like to discuss it more explicitly with a wider &lt;br&gt;
community.&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;
&lt;p&gt;Alex&lt;/p&gt;
</description><guid>9607e5ef-086f-42a8-954f-53e23f4d1f7f@kurilo.me</guid><pubDate>Sat, 01 Aug 2026 08:13:32 +0000</pubDate></item><item><title>[RFC] Function Autoloading (mark 5)</title><link>https://externals.io/message/132158</link><description>&lt;p&gt;Hi Tim,&lt;/p&gt;
&lt;p&gt;I posted this in the other thread, but I'm not sure it got through, so I'll repost here; apologies if both show up at once.&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Without giving it detailed thought, I believe “Namespaced function, Autoload namespaced function, Global fallback” (i.e. swap steps 2 and 3) would result in much more predictable semantics already - the global fallback would work just as before, it just wouldn't have autoloading support.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;Semantically, that makes most sense, but it leads to terrible performance for the global fallback case, unless there's some way to avoid multiple checks for the same namespaced function. That's why we keep going round in circles on the whole issue.&lt;/p&gt;
&lt;p&gt;I think Michael's &amp;quot;namespace autoloader&amp;quot; idea is a much cleaner way forward - it avoids the fallback issue without creating lots of extra special cases, and in reality &amp;quot;load a file with all functions for namespace Foo\Bar&amp;quot; is likely to be more common than &amp;quot;load a file which specifically defines function Foo\Bar\baz()&amp;quot;.&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Rowan Tommins &lt;br&gt;
[IMSoP]&lt;/p&gt;
</description><guid>F33F47AF-FC7F-432F-9ABC-3EC709136934@rwec.co.uk</guid><pubDate>Fri, 31 Jul 2026 21:57:06 +0000</pubDate></item><item><title>[RFC] [VOTE] Function Autoloading (mark 5)</title><link>https://externals.io/message/132157</link><description>&lt;p&gt;Hi Tim,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Without giving it detailed thought, I believe “Namespaced function, Autoload namespaced function, Global fallback” (i.e. swap steps 2 and 3) would result in much more predictable semantics already - the global fallback would work just as before, it just wouldn't have autoloading support.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Semantically, that makes most sense, but it leads to terrible performance for the global fallback case, unless there's some way to avoid multiple checks for the same namespaced function. That's why we keep going round in circles on the whole issue.&lt;/p&gt;
&lt;p&gt;I think Michael's &amp;quot;namespace autoloader&amp;quot; idea is a much cleaner way forward - it avoids the fallback issue without creating lots of extra special cases, and in reality &amp;quot;load a file with all functions for namespace Foo\Bar&amp;quot; is likely to be more common than &amp;quot;load a file which specifically defines function Foo\Bar\baz()&amp;quot;.&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Rowan Tommins &lt;br&gt;
[IMSoP]&lt;/p&gt;
</description><guid>9D199E68-57C4-4B98-BD07-E27896E4DE31@rwec.co.uk</guid><pubDate>Fri, 31 Jul 2026 16:07:44 +0000</pubDate></item><item><title>[VOTE] Duration class</title><link>https://externals.io/message/132156</link><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Wiki Page: &lt;a href="https://wiki.php.net/rfc/duration_class" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/duration_class&lt;/a&gt; &lt;br&gt;
Discussion Thread: &lt;a href="https://news-web.php.net/php.internals/131376" rel="nofollow" target="_blank"&gt;https://news-web.php.net/php.internals/131376&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The RFC contains two votes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One primary vote requiring a 2/3 majority to accept the proposal.&lt;/li&gt;
&lt;li&gt;One secondary vote to decide on method naming, where the abbreviated &lt;br&gt;
names will be selected if they reach a 2/3 majority, and the full names &lt;br&gt;
otherwise.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Voting closes 2026-07-31 17:00:00 UTC.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Voting just closed. The RFC was accepted with 35 (Yes) to 1 (No) votes &lt;br&gt;
and 2 Abstentions, which is 97%.&lt;/p&gt;
&lt;p&gt;The secondary vote for the method names was in favor of full names with &lt;br&gt;
30 of 32 votes (94%) and 3 Abstentions.&lt;/p&gt;
&lt;p&gt;Best regards &lt;br&gt;
Tim Düsterhus&lt;/p&gt;
</description><guid>2f2290543a4dba94f3d514c9b1ad81e9@bastelstu.be</guid><pubDate>Fri, 31 Jul 2026 17:23:25 +0000</pubDate></item><item><title>[RFC] Function Autoloading (mark 5)</title><link>https://externals.io/message/132155</link><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The RFC has been updated to un-incorporate the strict-namespace &lt;br&gt;
elements; if there are no further substantive comments, I would like to &lt;br&gt;
open the vote in 2-ish weeks.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;To put my remark in the (canceled) voting thread into the correct place, &lt;br&gt;
quoting myself from &lt;a href="https://news-web.php.net/php.internals/132151" rel="nofollow" target="_blank"&gt;https://news-web.php.net/php.internals/132151&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Without giving it detailed thought, I believe “Namespaced function, &lt;br&gt;
Autoload namespaced function, Global fallback” (i.e. swap steps 2 and &lt;br&gt;
3) would result in much more predictable semantics already - the global &lt;br&gt;
fallback would work just as before, it just wouldn't have autoloading &lt;br&gt;
support. It's quite possible I'm changing my mind on that as well when &lt;br&gt;
I think more about it […]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Best regards &lt;br&gt;
Tim Düsterhus&lt;/p&gt;
</description><guid>cd875f121508983a66cdf1bd85887c8c@bastelstu.be</guid><pubDate>Fri, 31 Jul 2026 17:12:01 +0000</pubDate></item><item><title>[RFC] [VOTE] Function Autoloading (mark 5)</title><link>https://externals.io/message/132154</link><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I have edited the RFC to set the vote to &amp;quot;closed&amp;quot; -- let me know if &lt;br&gt;
some other approach is preferred.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Thanks. You should also adjust the title of the voting widget to clear &lt;br&gt;
out any votes and move the RFC in the overview back to “Under &lt;br&gt;
Discussion”. Actual discussion of the RFC should then continue in the &lt;br&gt;
discussion thread, I'll repeat my suggestion from my previous email &lt;br&gt;
there to have a discussion starter and to bump the thread.&lt;/p&gt;
&lt;p&gt;Best regards &lt;br&gt;
Tim Düsterhus&lt;/p&gt;
</description><guid>d9ba693c52e797625033c1e28062fdbf@bastelstu.be</guid><pubDate>Fri, 31 Jul 2026 17:10:21 +0000</pubDate></item><item><title>[RFC] [Discussion] Literal Scalar Types</title><link>https://externals.io/message/132153</link><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;For what it's worth, I agree with your wider point: a vote that closes &lt;br&gt;
at the freeze boundary leaves no room to react if implementation or &lt;br&gt;
wider testing turns something up. Landing early in the next cycle is &lt;br&gt;
the better home for a type-system change in any case.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I also agree here: This very much feels like a proposal that should land &lt;br&gt;
early in the cycle, particularly due to the impact on existing &lt;br&gt;
extensions and the ecosystem, which might have already started preparing &lt;br&gt;
the adjustments for PHP 8.6.&lt;/p&gt;
&lt;p&gt;I have just given the RFC another read and just have a very minor &lt;br&gt;
comment regarding the vote:&lt;/p&gt;
&lt;p&gt;The “Matching semantics for literal scalar types?” vote has no &lt;br&gt;
explicitly stated tie-breaker. The RFC states “The author recommends &lt;br&gt;
strict matching” which &lt;em&gt;could&lt;/em&gt; be considered a tie-breaker in favor of &lt;br&gt;
“strict matching”. But since we now have some time, you could as well &lt;br&gt;
spell that out explicitly.&lt;/p&gt;
&lt;p&gt;No further comments to the contents of the actual proposal. The cleanup &lt;br&gt;
of the “accepted literal syntax“ section made the RFC much easier to &lt;br&gt;
follow.&lt;/p&gt;
&lt;p&gt;Best regards &lt;br&gt;
Tim Düsterhus&lt;/p&gt;
</description><guid>c201e35781e22af66b53048a77dfda11@bastelstu.be</guid><pubDate>Fri, 31 Jul 2026 16:15:35 +0000</pubDate></item><item><title>[RFC] [VOTE] Function Autoloading (mark 5)</title><link>https://externals.io/message/132152</link><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;In fact the start of the vote is in violation of our policy, since there was no “intent to vote” message in the last 7 days. &lt;br&gt;
Ah so -- my apologies. I'll pull the vote and wait for ... looks like ~6 weeks?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;According to policy you could cancel the vote now, which results in a 2-week cooldown, which means you could theoretically re-open in the middle of August (after another “Intent to Vote”).&lt;/p&gt;
&lt;p&gt;However given the preliminary voting results and under the assumption that folks didn't just vote against due to the policy violation, it is likely not useful to reopen the vote without making further changes - or without the circumstances changing (specifically your “Strict Namespace Resolution” RFC getting a decision). In any case, there will be plenty of time until PHP 8.7.&lt;/p&gt;
&lt;p&gt;Without giving it detailed thought, I believe “Namespaced function, Autoload namespaced function, Global fallback” (i.e. swap steps 2 and 3) would result in much more predictable semantics already - the global fallback would work just as before, it just wouldn't have autoloading support. It's quite possible I'm changing my mind on that as well when I think more about it, but I wanted to provide some food for thought as to how the RFC could possibly be adjusted to make it better.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sure, no hurry on my part. Can come back to it after 8.6 is fully out the door.&lt;/p&gt;
&lt;p&gt;I have edited the RFC to set the vote to &amp;quot;closed&amp;quot; -- let me know if some other approach is preferred.&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;
&lt;p&gt;-- pmj&lt;/p&gt;
</description><guid>DA9AE2E6-55D1-4C53-85FF-6DAE079F01B8@pmjones.io</guid><pubDate>Fri, 31 Jul 2026 16:03:37 +0000</pubDate></item><item><title>[RFC] [VOTE] Function Autoloading (mark 5)</title><link>https://externals.io/message/132151</link><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;In fact the start of the vote is in violation of our policy, since &lt;br&gt;
there was no “intent to vote” message in the last 7 days.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ah so -- my apologies. I'll pull the vote and wait for ... looks like &lt;br&gt;
~6 weeks?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;According to policy you could cancel the vote now, which results in a &lt;br&gt;
2-week cooldown, which means you could theoretically re-open in the &lt;br&gt;
middle of August (after another “Intent to Vote”).&lt;/p&gt;
&lt;p&gt;However given the preliminary voting results and under the assumption &lt;br&gt;
that folks didn't just vote against due to the policy violation, it is &lt;br&gt;
likely not useful to reopen the vote without making further changes - or &lt;br&gt;
without the circumstances changing (specifically your “Strict Namespace &lt;br&gt;
Resolution” RFC getting a decision). In any case, there will be plenty &lt;br&gt;
of time until PHP 8.7.&lt;/p&gt;
&lt;p&gt;Without giving it detailed thought, I believe “Namespaced function, &lt;br&gt;
Autoload namespaced function, Global fallback” (i.e. swap steps 2 and 3) &lt;br&gt;
would result in much more predictable semantics already - the global &lt;br&gt;
fallback would work just as before, it just wouldn't have autoloading &lt;br&gt;
support. It's quite possible I'm changing my mind on that as well when I &lt;br&gt;
think more about it, but I wanted to provide some food for thought as to &lt;br&gt;
how the RFC could possibly be adjusted to make it better.&lt;/p&gt;
&lt;p&gt;Best regards &lt;br&gt;
Tim Düsterhus&lt;/p&gt;
</description><guid>17c9763618b251f6cbc1022e8bd86ace@bastelstu.be</guid><pubDate>Fri, 31 Jul 2026 15:52:21 +0000</pubDate></item><item><title>[RFC] [Discussion] Literal Scalar Types</title><link>https://externals.io/message/132150</link><description>&lt;p&gt;Hey Matteo  :)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi Pierre,&lt;/p&gt;
&lt;p&gt;Il 31/07/2026 13:06, Pierre Joye ha scritto:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;beta phases exist exactly for this reason. wider base of testers.&lt;/p&gt;
&lt;p&gt;alpha is, heh, this is what we have so far, more or less stable, go test &lt;br&gt;
it already!&lt;/p&gt;
&lt;p&gt;RCs are everything should be stable, that's the final state, last &lt;br&gt;
stage(s) for any bugs or breaks that didn't get caught earlier.&lt;/p&gt;
&lt;p&gt;we should not expect &amp;quot;widely tested&amp;quot; new features, never released before &lt;br&gt;
per se.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yes indeed. But often unexpected side effects and breakages are caught &lt;br&gt;
by various CIs running daily snapshots with OSS projects&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;right, and many use snapshot. and our ci is already very complete tbh. took &lt;br&gt;
a while to make it green from a greenfield additions.&lt;/p&gt;
&lt;p&gt;and yes, that's what beta are for  :)&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;between the limited time induced by the updated policies, the Christmas &lt;br&gt;
break &amp;quot;pls don't&amp;quot;, and this, one needs to take holidays to make it &lt;br&gt;
somehow as the time left in a year is low, very low, now.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I hear you, it's just that undoing or amending an RFC is a convoluted &lt;br&gt;
process too, especially very late in the release cycle.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;we are technically still in alpha.... it is not late. It is early in my &lt;br&gt;
book  ;-)&lt;/p&gt;
</description><guid>CAEZPtU5a01CvVbnzXSCu9fyqtK6XWukAEjQrR=5t99QvGKOJ=g@mail.gmail.com</guid><pubDate>Fri, 31 Jul 2026 13:43:12 +0000</pubDate></item><item><title>[RFC] [Discussion] Literal Scalar Types</title><link>https://externals.io/message/132149</link><description>&lt;p&gt;Hi Pierre,&lt;/p&gt;
&lt;p&gt;Il 31/07/2026 13:06, Pierre Joye ha scritto:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;beta phases exist exactly for this reason. wider base of testers.&lt;/p&gt;
&lt;p&gt;alpha is, heh, this is what we have so far, more or less stable, go test &lt;br&gt;
it already!&lt;/p&gt;
&lt;p&gt;RCs are everything should be stable, that's the final state, last &lt;br&gt;
stage(s) for any bugs or breaks that didn't get caught earlier.&lt;/p&gt;
&lt;p&gt;we should not expect &amp;quot;widely tested&amp;quot; new features, never released before &lt;br&gt;
per se.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yes indeed. But often unexpected side effects and breakages are caught &lt;br&gt;
by various CIs running daily snapshots with OSS projects.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;between the limited time induced by the updated policies, the Christmas &lt;br&gt;
break &amp;quot;pls don't&amp;quot;, and this, one needs to take holidays to make it &lt;br&gt;
somehow as the time left in a year is low, very low, now.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I hear you, it's just that undoing or amending an RFC is a convoluted &lt;br&gt;
process too, especially very late in the release cycle.&lt;/p&gt;
&lt;h2&gt;Cheers&lt;/h2&gt;
&lt;p&gt;Matteo Beccati&lt;/p&gt;
</description><guid>f544f841-01c8-48ca-8b40-a8b674df761c@beccati.com</guid><pubDate>Fri, 31 Jul 2026 13:39:22 +0000</pubDate></item><item><title>[RFC] [VOTE] Function Autoloading (mark 5)</title><link>https://externals.io/message/132148</link><description>&lt;blockquote&gt;
&lt;p&gt;Hi&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Per my message from a couple of weeks ago &lt;a href="https://externals.io/message/131332#131945"&gt;https://externals.io/message/131332#131945&lt;/a&gt; I have opened the vote for Function Autoloading (mark 5):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://wiki.php.net/rfc/function-autoloading-five-oh"&gt;https://wiki.php.net/rfc/function-autoloading-five-oh&lt;/a&gt; &lt;br&gt;
The vote runs for two weeks and will close automatically at 14:45 UTC on Thu 13 Aug 2026. &lt;br&gt;
N.b.: Voters concerned about shadowed global functions should note that such cases, while real in principle, are extremely rare in practice; those very few cases can be mitigated easily. Cf. &lt;a href="https://wiki.php.net/rfc/function-autoloading-five-oh#how_common_is_the_shadow-global_case"&gt;https://wiki.php.net/rfc/function-autoloading-five-oh#how_common_is_the_shadow-global_case&lt;/a&gt;. &lt;br&gt;
I think this is the best autoloading proposal up to date. &lt;br&gt;
Most likely I would have voted yes if the target was 8.7, leaving us plenty of time to intervene in case of issues. &lt;br&gt;
Perhaps I'm biased as RM, but last minute RFCs are making me nervous, I hope you understand.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;In fact the start of the vote is in violation of our policy, since there was no “intent to vote” message in the last 7 days.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ah so -- my apologies. I'll pull the vote and wait for ... looks like ~6 weeks?&lt;/p&gt;
&lt;p&gt;Again, sorry for the hassle.&lt;/p&gt;
&lt;p&gt;-- pmj&lt;/p&gt;
</description><guid>F4B3AD94-994C-44C2-8A76-C2F86ADD660A@pmjones.io</guid><pubDate>Fri, 31 Jul 2026 13:09:15 +0000</pubDate></item><item><title>[RFC] [Discussion] Literal Scalar Types</title><link>https://externals.io/message/132147</link><description>&lt;p&gt;Hey Matteo :)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi Seifeddine,&lt;/p&gt;
&lt;p&gt;Il 30/07/2026 01:59, Seifeddine Gmati ha scritto:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I asked the 8.6 Release Manager about the feature freeze. The &lt;br&gt;
effective cutoff is not the beta1 announcement on August 13 but the &lt;br&gt;
creation of the beta1 tag, which happens on Tuesday, August 11, &lt;br&gt;
mid-morning US Central time. A vote opened today would close on August &lt;br&gt;
13, after the tag exists, so inclusion in 8.6 is not possible. I will &lt;br&gt;
therefore not reopen the vote, and the Intent to Vote I posted on July &lt;br&gt;
23 is withdrawn.&lt;/p&gt;
&lt;p&gt;I have retargeted the RFC to the next PHP version, whether that is 8.7 &lt;br&gt;
or 9.0. RFC text is otherwise unchanged and remains final: &lt;br&gt;
&lt;a href="https://wiki.php.net/rfc/literal_scalar_types" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/literal_scalar_types&lt;/a&gt; &lt;br&gt;
I could have made an honest mistake when announcing the deadlines, but &lt;br&gt;
all my emails were pointing the 13th as deadline for RFCs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The rationale being that the implementation didn't have to land in beta1 &lt;br&gt;
necessarily, so the beta1 release date seemed better than &amp;quot;tagging day&amp;quot; &lt;br&gt;
as deadline.&lt;/p&gt;
&lt;p&gt;I think that having RFCs end voting so close to the feature freeze is a &lt;br&gt;
terrible idea as it gives very little wiggle room in case something &lt;br&gt;
unexpected comes out once implemented and more widely tested.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;beta phases exist exactly for this reason. wider base of testers.&lt;/p&gt;
&lt;p&gt;alpha is, heh, this is what we have so far, more or less stable, go test it &lt;br&gt;
already!&lt;/p&gt;
&lt;p&gt;RCs are everything should be stable, that's the final state, last stage(s) &lt;br&gt;
for any bugs or breaks that didn't get caught earlier.&lt;/p&gt;
&lt;p&gt;we should not expect &amp;quot;widely tested&amp;quot; new features, never released before &lt;br&gt;
per se.&lt;/p&gt;
&lt;p&gt;between the limited time induced by the updated policies, the Christmas &lt;br&gt;
break &amp;quot;pls don't&amp;quot;, and this, one needs to take holidays to make it somehow &lt;br&gt;
as the time left in a year is low, very low, now.&lt;/p&gt;
&lt;p&gt;That said, another RFC went to voting a few minutes ago, so we'd better&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;be consistent. I apologise for the confusion!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I can't talk for the author,  you are in your role here :) applying &lt;br&gt;
policies, even broken ones  :)&lt;/p&gt;
&lt;p&gt;-- &lt;br&gt;
Pierre&lt;/p&gt;
&lt;p&gt;@pierrejoye&lt;/p&gt;
</description><guid>CAEZPtU7cy4BNiapY8G82t5soe3OH=CwSFR1=QmxfuKZZZBixWg@mail.gmail.com</guid><pubDate>Fri, 31 Jul 2026 11:06:40 +0000</pubDate></item><item><title>[RFC] [VOTE] Function Autoloading (mark 5)</title><link>https://externals.io/message/132146</link><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Per my message from a couple of weeks ago &lt;br&gt;
&lt;a href="https://externals.io/message/131332#131945"&gt;https://externals.io/message/131332#131945&lt;/a&gt; I have opened the vote &lt;br&gt;
for Function Autoloading (mark 5):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://wiki.php.net/rfc/function-autoloading-five-oh"&gt;https://wiki.php.net/rfc/function-autoloading-five-oh&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The vote runs for two weeks and will close automatically at 14:45 UTC &lt;br&gt;
on Thu 13 Aug 2026.&lt;/p&gt;
&lt;p&gt;N.b.: Voters concerned about shadowed global functions should note &lt;br&gt;
that such cases, while real in principle, are extremely rare in &lt;br&gt;
practice; those very few cases can be mitigated easily. Cf. &lt;br&gt;
&lt;a href="https://wiki.php.net/rfc/function-autoloading-five-oh#how_common_is_the_shadow-global_case"&gt;https://wiki.php.net/rfc/function-autoloading-five-oh#how_common_is_the_shadow-global_case&lt;/a&gt;. &lt;br&gt;
I think this is the best autoloading proposal up to date.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Most likely I would have voted yes if the target was 8.7, leaving us &lt;br&gt;
plenty of time to intervene in case of issues.&lt;/p&gt;
&lt;p&gt;Perhaps I'm biased as RM, but last minute RFCs are making me nervous, I &lt;br&gt;
hope you understand.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In fact the start of the vote is in violation of our policy, since there &lt;br&gt;
was no “intent to vote” message in the last 7 days.&lt;/p&gt;
&lt;p&gt;I regretfully missed the email #131945 from two weeks ago, but also &lt;br&gt;
didn't expect this RFC to go to vote, since:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The namespace-resolution-declare was just split out of it and in my &lt;br&gt;
opinion having a decision on that first would be helpful to make an &lt;br&gt;
educated decision on this one.&lt;/li&gt;
&lt;li&gt;With the major change on the Wednesday, July 15th it was not able to &lt;br&gt;
meet the soft freeze deadline that I calculated with (which should've &lt;br&gt;
been Tuesday, August 11 according to policy).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;As indicated during the discussion, I consider it unacceptable for the &lt;br&gt;
autoloading to fail when a global function with the same unqualified &lt;br&gt;
name exists. This adds further inconsistency to the language and I &lt;br&gt;
expect the proposed behavior to be a source of bug reports from users &lt;br&gt;
wondering why the autoloading doesn't work as expected.&lt;/p&gt;
&lt;p&gt;Best regards &lt;br&gt;
Tim Düsterhus&lt;/p&gt;
</description><guid>4f355b3c4c5f22c3c8b891d812d7748e@bastelstu.be</guid><pubDate>Fri, 31 Jul 2026 08:10:29 +0000</pubDate></item><item><title>[RFC] [VOTE] Function Autoloading (mark 5)</title><link>https://externals.io/message/132145</link><description>&lt;p&gt;Hi Paul,&lt;/p&gt;
&lt;p&gt;Il 30/07/2026 16:46, Paul M. Jones ha scritto:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi all,&lt;/p&gt;
&lt;p&gt;Per my message from a couple of weeks ago &lt;a href="https://externals.io/message/131332#131945"&gt;https://externals.io/message/131332#131945&lt;/a&gt; I have opened the vote for Function Autoloading (mark 5):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://wiki.php.net/rfc/function-autoloading-five-oh"&gt;https://wiki.php.net/rfc/function-autoloading-five-oh&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The vote runs for two weeks and will close automatically at 14:45 UTC on Thu 13 Aug 2026.&lt;/p&gt;
&lt;p&gt;N.b.: Voters concerned about shadowed global functions should note that such cases, while real in principle, are extremely rare in practice; those very few cases can be mitigated easily. Cf. &lt;a href="https://wiki.php.net/rfc/function-autoloading-five-oh#how_common_is_the_shadow-global_case"&gt;https://wiki.php.net/rfc/function-autoloading-five-oh#how_common_is_the_shadow-global_case&lt;/a&gt;. &lt;br&gt;
I think this is the best autoloading proposal up to date.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Most likely I would have voted yes if the target was 8.7, leaving us &lt;br&gt;
plenty of time to intervene in case of issues.&lt;/p&gt;
&lt;p&gt;Perhaps I'm biased as RM, but last minute RFCs are making me nervous, I &lt;br&gt;
hope you understand.&lt;/p&gt;
&lt;h2&gt;Cheers&lt;/h2&gt;
&lt;p&gt;Matteo&lt;/p&gt;
</description><guid>52246290-dd34-45d7-b86b-bce2b8997a1b@beccati.com</guid><pubDate>Fri, 31 Jul 2026 07:57:35 +0000</pubDate></item><item><title>[RFC] [Discussion] PREG_THROW_ON_ERROR</title><link>https://externals.io/message/132144</link><description>&lt;p&gt;On Thu, Jul 30, 2026 at 6:09 PM Christian Schneider &lt;br&gt;
&lt;a href="mailto:cschneid@cschneid.com"&gt;cschneid@cschneid.com&lt;/a&gt; wrote:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Am 28.07.2026 um 02:56 schrieb Osama Aldemeery &lt;a href="mailto:aldemeery@gmail.com"&gt;aldemeery@gmail.com&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The flag only changes how an error is delivered. A call does exactly the same thing with it or without it, byte for byte. &lt;br&gt;
The only difference is that at the end, any error the call would have recorded is additionally thrown, carrying the same code and &lt;br&gt;
message &lt;code&gt;preg_last_error()&lt;/code&gt;/&lt;code&gt;preg_last_error_msg()&lt;/code&gt; would report.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Reading the RFC and specifically the line&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;// The detailed &amp;quot;Compilation failed: ...&amp;quot; warning is still emitted, as always.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I assume compilation (and other?) failures will then trigger BOTH the &lt;code&gt;E_WARNING&lt;/code&gt; and an Exception?&lt;/p&gt;
&lt;p&gt;This sounds weird to me, do we have a precedent for this behavior? &lt;br&gt;
I would have expected the Exception to replace the E_WARNING.&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Chris&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hi Chris,&lt;/p&gt;
&lt;p&gt;Good question, and you're reading it right: under the flag, a compile &lt;br&gt;
failure emits both the &lt;code&gt;E_WARNING&lt;/code&gt; and the exception. &lt;br&gt;
One clarification though...That doubling only happens for compile &lt;br&gt;
errors, which warn today. &lt;br&gt;
Execution errors on the other hand (e.g. bad UTF-8, backtrack limit, &lt;br&gt;
and so on) don't emit a warning at all, so those just throw.&lt;/p&gt;
&lt;p&gt;On precedent, as far as I know there isn't a precedent for somethig like this. &lt;br&gt;
But the reason it's currently warning-plus-exception rather than &lt;br&gt;
exception-instead-of-warning is because the useful detail only lives &lt;br&gt;
in the warning. &lt;br&gt;
A compile failure sets the generic &lt;code&gt;PREG_INTERNAL_ERROR&lt;/code&gt; / &lt;code&gt;&amp;quot;Internal error&amp;quot;&lt;/code&gt; in the error functions, while the actual &lt;code&gt;&amp;quot;Compilation failed: ... at offset N&amp;quot;&lt;/code&gt; text is only in the warning. &lt;br&gt;
So if the exception replaced the warning today, you'd get an exception &lt;br&gt;
saying &lt;code&gt;&amp;quot;Internal error&amp;quot;&lt;/code&gt; and nothing about where or why. &lt;br&gt;
Keeping the warning is what preserves that detail for now.&lt;/p&gt;
&lt;p&gt;It's worth mentioning though that I do think &lt;br&gt;
exception-instead-of-warning is the cleaner end state. &lt;br&gt;
But it becomes the right move once the exception can carry that detail &lt;br&gt;
itself, and that requires changing the message &lt;code&gt;preg_last_message()&lt;/code&gt; &lt;br&gt;
reports, which is the richer &lt;br&gt;
compile-error reporting I've put under future scope. &lt;br&gt;
Until then, dropping the warning would make the flag strictly worse &lt;br&gt;
for debugging a bad pattern.&lt;/p&gt;
&lt;p&gt;Happy to hear if you or others see it differently.&lt;/p&gt;
&lt;p&gt;Thanks, &lt;br&gt;
Osama&lt;/p&gt;
</description><guid>CABE7Eu85sXNR9jtTiGCTuqcL0p1y8XtyVbXU-EkJdaDb+3CvJA@mail.gmail.com</guid><pubDate>Thu, 30 Jul 2026 18:56:40 +0000</pubDate></item><item><title>[RFC] [Discussion] PREG_THROW_ON_ERROR</title><link>https://externals.io/message/132143</link><description>&lt;p&gt;On Thu, Jul 30, 2026 at 3:22 AM B.J.Scharp &amp;lt; &lt;br&gt;
&lt;a href="mailto:php.list.internals@bitwise-operators.com" rel="nofollow" target="_blank"&gt;php.list.internals@bitwise-operators.com&lt;/a&gt;&amp;gt; wrote:&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi all,&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;The exception name is settled from the pre-RFC as &lt;code&gt;\PregException&lt;/code&gt; &lt;br&gt;
(thanks Tim) and the flag as &lt;code&gt;PREG_THROW_ON_ERROR&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;From the RFC:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The flag covers both classes of PCRE failure.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;have you considered throwing different Exception types for the two &lt;br&gt;
failure types? (e.g. PregExecutionException and PregCompilationException)&lt;/p&gt;
&lt;p&gt;You could have both be child classes of PregException, but in actual &lt;br&gt;
fact, the second should probably be a child of LogicException, while the &lt;br&gt;
former really is a RuntimeException...&lt;/p&gt;
&lt;p&gt;Regards, &lt;br&gt;
Bernard&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hi Bernard,&lt;/p&gt;
&lt;p&gt;Sorry, my last message got misformatted, so I am sending it again.&lt;/p&gt;
&lt;p&gt;Thanks again for bringing this up.&lt;/p&gt;
&lt;p&gt;As Rowan pointed out, the throwables policy settles half of it: additional &lt;br&gt;
exceptions must extend the extension's base or each other, not the SPL &lt;br&gt;
classes. &lt;br&gt;
So the LogicException / RuntimeException parents are out regardless.&lt;/p&gt;
&lt;p&gt;That leaves one &lt;code&gt;PregException&lt;/code&gt; versus two under it (like your suggested &lt;br&gt;
&lt;code&gt;PregCompilationException&lt;/code&gt; / &lt;code&gt;PregExecutionException&lt;/code&gt;), which is a judgment &lt;br&gt;
call. &lt;br&gt;
My starting point for the whole flag is that it only changes how an error &lt;br&gt;
is delivered and nothing more. &lt;br&gt;
That is the code and the message are exactly what &lt;code&gt;preg_last_error()&lt;/code&gt; and &lt;br&gt;
&lt;code&gt;preg_last_error_msg()&lt;/code&gt; already give you. &lt;br&gt;
A single exception sits most naturally on top of that.&lt;/p&gt;
&lt;p&gt;There's a concrete nudge the same way....A compile failure only carries the &lt;br&gt;
generic &lt;code&gt;PREG_INTERNAL_ERROR&lt;/code&gt; / &lt;code&gt;&amp;quot;Internal error&amp;quot;&lt;/code&gt; through the error &lt;br&gt;
functions. &lt;br&gt;
The real detail (&lt;code&gt;&amp;quot;Compilation failed: ... at offset N&amp;quot;&lt;/code&gt;) is in a warning, &lt;br&gt;
not &lt;code&gt;preg_last_error_msg()&lt;/code&gt;. &lt;br&gt;
So a &lt;code&gt;PregCompilationException&lt;/code&gt; would carry &lt;code&gt;&amp;quot;Internal error&amp;quot;&lt;/code&gt; and little &lt;br&gt;
else until that detail is surfaced properly, which I've left as future &lt;br&gt;
scope.&lt;/p&gt;
&lt;p&gt;The upside of two types is letting people catch the two failure modes &lt;br&gt;
separately. &lt;br&gt;
I'm not sure how often that's needed in practice (given that &lt;br&gt;
&lt;code&gt;pre_last_error()&lt;/code&gt; already does not differentiate between them), but I &lt;br&gt;
don't object if people feel &lt;br&gt;
it's the better design. &lt;br&gt;
For now I'd still favor the single &lt;code&gt;PregException&lt;/code&gt;, with the door open.&lt;/p&gt;
&lt;p&gt;Thanks, &lt;br&gt;
Osama&lt;/p&gt;
</description><guid>CABE7Eu8T+dQLggqCg68t26UrQtJ_47EUde7aWZ2vOdpD_-vi5w@mail.gmail.com</guid><pubDate>Thu, 30 Jul 2026 18:45:14 +0000</pubDate></item><item><title>[RFC] [Discussion] PREG_THROW_ON_ERROR</title><link>https://externals.io/message/132142</link><description>&lt;p&gt;On Thu, Jul 30, 2026 at 3:22 AM B.J.Scharp &lt;br&gt;
&lt;a href="mailto:php.list.internals@bitwise-operators.com"&gt;php.list.internals@bitwise-operators.com&lt;/a&gt; wrote:&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi all,&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;The exception name is settled from the pre-RFC as &lt;code&gt;\PregException&lt;/code&gt; &lt;br&gt;
(thanks Tim) and the flag as &lt;code&gt;PREG_THROW_ON_ERROR&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;From the RFC:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The flag covers both classes of PCRE failure.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;have you considered throwing different Exception types for the two &lt;br&gt;
failure types? (e.g. PregExecutionException and PregCompilationException)&lt;/p&gt;
&lt;p&gt;You could have both be child classes of PregException, but in actual &lt;br&gt;
fact, the second should probably be a child of LogicException, while the &lt;br&gt;
former really is a RuntimeException...&lt;/p&gt;
&lt;p&gt;Regards, &lt;br&gt;
Bernard&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hi Bernard,&lt;/p&gt;
&lt;p&gt;Thanks for bringing this up.&lt;/p&gt;
&lt;p&gt;As Rowan pointed out, the throwables policy settles half of it: &lt;br&gt;
additional exceptions must extend the extension's base or each other, &lt;br&gt;
not the SPL classes. &lt;br&gt;
So the LogicException / RuntimeException parents are out regardless.&lt;/p&gt;
&lt;p&gt;That leaves one &lt;code&gt;PregException&lt;/code&gt; versus two under it (like your &lt;br&gt;
suggested &lt;code&gt;PregCompilationException&lt;/code&gt; / &lt;code&gt;PregExecutionException&lt;/code&gt;), &lt;br&gt;
which is a judgment call. &lt;br&gt;
My starting point for the whole flag is that it only changes how an &lt;br&gt;
error is delivered and nothing more. &lt;br&gt;
That is the code and the message are exactly what &lt;code&gt;preg_last_error()&lt;/code&gt; &lt;br&gt;
and &lt;code&gt;preg_last_error_msg()&lt;/code&gt; already give you. &lt;br&gt;
A single exception sits most naturally on top of that.&lt;/p&gt;
&lt;p&gt;There's a concrete nudge the same way....A compile failure only &lt;br&gt;
carries the generic &lt;br&gt;
&lt;code&gt;PREG_INTERNAL_ERROR&lt;/code&gt; / &lt;code&gt;&amp;quot;Internal error&amp;quot;&lt;/code&gt; through the error functions. &lt;br&gt;
The real detail (&lt;code&gt;&amp;quot;Compilation failed: ... at offset N&amp;quot;&lt;/code&gt;) is in a &lt;br&gt;
warning, not &lt;code&gt;preg_last_error_msg()&lt;/code&gt;. &lt;br&gt;
So a &lt;code&gt;PregCompilationException&lt;/code&gt; would carry &lt;code&gt;&amp;quot;Internal error&amp;quot;&lt;/code&gt; and &lt;br&gt;
little else until that detail is surfaced properly, which I've left as &lt;br&gt;
future scope.&lt;/p&gt;
&lt;p&gt;The upside of two types is letting people catch the two failure modes &lt;br&gt;
separately. &lt;br&gt;
I'm not sure how often that's needed in practice (given that &lt;br&gt;
&lt;code&gt;pre_last_error()&lt;/code&gt; already does not differentiate between them), but I &lt;br&gt;
don't object if people feel &lt;br&gt;
it's the better design. For now I'd still favor the single &lt;br&gt;
&lt;code&gt;PregException&lt;/code&gt;, with the door open.&lt;/p&gt;
&lt;p&gt;Thanks, &lt;br&gt;
Osama&lt;/p&gt;
</description><guid>CABE7Eu-yvKbVYJvr5NLcBQs5c57RN2hLVCSpb5xo=XfR40NAKw@mail.gmail.com</guid><pubDate>Thu, 30 Jul 2026 18:36:52 +0000</pubDate></item><item><title>[RFC] [Discussion] Literal Scalar Types</title><link>https://externals.io/message/132141</link><description>&lt;blockquote&gt;
&lt;p&gt;Hi Seifeddine,&lt;/p&gt;
&lt;p&gt;Il 30/07/2026 01:59, Seifeddine Gmati ha scritto:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I asked the 8.6 Release Manager about the feature freeze. The &lt;br&gt;
effective cutoff is not the beta1 announcement on August 13 but the &lt;br&gt;
creation of the beta1 tag, which happens on Tuesday, August 11, &lt;br&gt;
mid-morning US Central time. A vote opened today would close on August &lt;br&gt;
13, after the tag exists, so inclusion in 8.6 is not possible. I will &lt;br&gt;
therefore not reopen the vote, and the Intent to Vote I posted on July &lt;br&gt;
23 is withdrawn.&lt;/p&gt;
&lt;p&gt;I have retargeted the RFC to the next PHP version, whether that is 8.7 &lt;br&gt;
or 9.0. RFC text is otherwise unchanged and remains final: &lt;br&gt;
&lt;a href="https://wiki.php.net/rfc/literal_scalar_types" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/literal_scalar_types&lt;/a&gt; &lt;br&gt;
I could have made an honest mistake when announcing the deadlines, but &lt;br&gt;
all my emails were pointing the 13th as deadline for RFCs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The rationale being that the implementation didn't have to land in beta1 &lt;br&gt;
necessarily, so the beta1 release date seemed better than &amp;quot;tagging day&amp;quot; &lt;br&gt;
as deadline.&lt;/p&gt;
&lt;p&gt;I think that having RFCs end voting so close to the feature freeze is a &lt;br&gt;
terrible idea as it gives very little wiggle room in case something &lt;br&gt;
unexpected comes out once implemented and more widely tested.&lt;/p&gt;
&lt;p&gt;That said, another RFC went to voting a few minutes ago, so we'd better &lt;br&gt;
be consistent. I apologise for the confusion!&lt;/p&gt;
&lt;h2&gt;Cheers&lt;/h2&gt;
&lt;p&gt;Matteo Beccati&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hi Matteo,&lt;/p&gt;
&lt;p&gt;Thanks for clarifying, and no apology needed.&lt;/p&gt;
&lt;p&gt;For this RFC the point is moot either way. My retarget announcement is &lt;br&gt;
already out and, being a change to the voting widgets, it started a &lt;br&gt;
fourteen-day Cooldown Period under the Feature Proposals policy. Even &lt;br&gt;
under the August 13 reading, the earliest the vote could now open is &lt;br&gt;
mid-August, so 8.6 was out of reach the moment that email hit the &lt;br&gt;
list. The RFC stays targeted at the next PHP version.&lt;/p&gt;
&lt;p&gt;For what it's worth, I agree with your wider point: a vote that closes &lt;br&gt;
at the freeze boundary leaves no room to react if implementation or &lt;br&gt;
wider testing turns something up. Landing early in the next cycle is &lt;br&gt;
the better home for a type-system change in any case.&lt;/p&gt;
&lt;p&gt;Good luck with the 8.6 releases.&lt;/p&gt;
&lt;p&gt;Cheers, &lt;br&gt;
Seifeddine&lt;/p&gt;
</description><guid>CAFyg4HgGb+ELzaasUV_qEdnz2-_+KRyQMai8vC5ff26rGSjfew@mail.gmail.com</guid><pubDate>Thu, 30 Jul 2026 16:55:27 +0000</pubDate></item><item><title>[RFC] [VOTE] Minimum supported versions for PHP 8.6</title><link>https://externals.io/message/132140</link><description>&lt;blockquote&gt;
&lt;p&gt;Hello all,&lt;/p&gt;
&lt;p&gt;I'm announcing the start of the vote for the &amp;quot;Minimum supported &lt;br&gt;
versions for PHP 8.6&amp;quot; RFC. The voting will end at 2026-07-30 15:48:00 &lt;br&gt;
UTC. There are multiple votes, one for each minimum version &lt;br&gt;
requirement.&lt;/p&gt;
&lt;p&gt;RFC: &lt;a href="https://wiki.php.net/rfc/min_supported_versions_php_8_6" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/min_supported_versions_php_8_6&lt;/a&gt; &lt;br&gt;
Discussion: &lt;a href="https://news-web.php.net/php.internals/131707" rel="nofollow" target="_blank"&gt;https://news-web.php.net/php.internals/131707&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thanks! &lt;br&gt;
Eric&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hello!&lt;/p&gt;
&lt;p&gt;The voting period has now ended for this RFC with the following outcomes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;quot;Implement autoconf 2.71 requirement as outlined in the RFC?&amp;quot; has &lt;br&gt;
passed, with 27 votes for, 2 against, and 5 abstentions.&lt;/li&gt;
&lt;li&gt;&amp;quot;Implement COM_RESET_CONNECTION requirement as outlined in the RFC?&amp;quot; &lt;br&gt;
has passed, with 26 votes for, 0 against, and 5 abstentions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thank you all for your time, and for the time of those who will help &lt;br&gt;
merge the implementations. &lt;br&gt;
Eric&lt;/p&gt;
</description><guid>CA+NMNO2_oWgL7jmL=0xu5Su4dVFRNxQBcYpLhoWUOFnUsve-Tg@mail.gmail.com</guid><pubDate>Thu, 30 Jul 2026 16:07:05 +0000</pubDate></item><item><title>[RFC] [Discussion] Literal Scalar Types</title><link>https://externals.io/message/132139</link><description>&lt;p&gt;Hi Seifeddine,&lt;/p&gt;
&lt;p&gt;Il 30/07/2026 01:59, Seifeddine Gmati ha scritto:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I asked the 8.6 Release Manager about the feature freeze. The &lt;br&gt;
effective cutoff is not the beta1 announcement on August 13 but the &lt;br&gt;
creation of the beta1 tag, which happens on Tuesday, August 11, &lt;br&gt;
mid-morning US Central time. A vote opened today would close on August &lt;br&gt;
13, after the tag exists, so inclusion in 8.6 is not possible. I will &lt;br&gt;
therefore not reopen the vote, and the Intent to Vote I posted on July &lt;br&gt;
23 is withdrawn.&lt;/p&gt;
&lt;p&gt;I have retargeted the RFC to the next PHP version, whether that is 8.7 &lt;br&gt;
or 9.0. RFC text is otherwise unchanged and remains final: &lt;br&gt;
&lt;a href="https://wiki.php.net/rfc/literal_scalar_types" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/literal_scalar_types&lt;/a&gt; &lt;br&gt;
I could have made an honest mistake when announcing the deadlines, but &lt;br&gt;
all my emails were pointing the 13th as deadline for RFCs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The rationale being that the implementation didn't have to land in beta1 &lt;br&gt;
necessarily, so the beta1 release date seemed better than &amp;quot;tagging day&amp;quot; &lt;br&gt;
as deadline.&lt;/p&gt;
&lt;p&gt;I think that having RFCs end voting so close to the feature freeze is a &lt;br&gt;
terrible idea as it gives very little wiggle room in case something &lt;br&gt;
unexpected comes out once implemented and more widely tested.&lt;/p&gt;
&lt;p&gt;That said, another RFC went to voting a few minutes ago, so we'd better &lt;br&gt;
be consistent. I apologise for the confusion!&lt;/p&gt;
&lt;h2&gt;Cheers&lt;/h2&gt;
&lt;p&gt;Matteo Beccati&lt;/p&gt;
</description><guid>5b18a7b7-e720-49c5-a62d-e443a137cc15@beccati.com</guid><pubDate>Thu, 30 Jul 2026 15:28:20 +0000</pubDate></item><item><title>[RFC] [VOTE] Deprecations for PHP 8.6</title><link>https://externals.io/message/132138</link><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;removing the redundant parameter. By removing the parameter we cannot &lt;br&gt;
break any userland code, so modifying the warning message won't help &lt;br&gt;
with anything.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;For native functions passing parameters in excess of the function’s &lt;br&gt;
arity will throw an &lt;code&gt;ArgumentCountError&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; php &amp;gt; define('X', 'X', true, 'extra');
 PHP Warning:  Uncaught ArgumentCountError: `define()` expects at most 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;3 arguments, 4 given in php shell code:1&lt;/p&gt;
&lt;p&gt;Making it explicit (and deciding) that the parameter will go in PHP 9 is &lt;br&gt;
a good thing.&lt;/p&gt;
&lt;p&gt;Best regards &lt;br&gt;
Tim Düsterhus&lt;/p&gt;
</description><guid>f8847372b8a413f0e4869cb39fe95b65@bastelstu.be</guid><pubDate>Thu, 30 Jul 2026 15:21:31 +0000</pubDate></item><item><title>PHP 8.4.24 Released</title><link>https://externals.io/message/132137</link><description>&lt;p&gt;The PHP development team announces the immediate availability of PHP &lt;br&gt;
8.4.24. This is a security release.&lt;/p&gt;
&lt;p&gt;All PHP 8.4 users are encouraged to upgrade to this version.&lt;/p&gt;
&lt;p&gt;For source downloads of PHP 8.4.24 please visit our downloads page. &lt;br&gt;
Windows binaries can be found on the PHP for Windows site. &lt;br&gt;
The list of changes is recorded in the ChangeLog.&lt;/p&gt;
&lt;p&gt;Release Announcement: &lt;a href="https://php.net/releases/8_4_24.php"&gt;https://php.net/releases/8_4_24.php&lt;/a&gt; &lt;br&gt;
Downloads:            &lt;a href="https://php.net/downloads"&gt;https://php.net/downloads&lt;/a&gt; &lt;br&gt;
Windows downloads:    &lt;a href="https://www.php.net/downloads.php?os=windows&amp;amp;version=8.4"&gt;https://www.php.net/downloads.php?os=windows&amp;amp;version=8.4&lt;/a&gt; &lt;br&gt;
Changelog:            &lt;a href="https://php.net/ChangeLog-8.php#8.4.24"&gt;https://php.net/ChangeLog-8.php#8.4.24&lt;/a&gt; &lt;br&gt;
Release Manifest:     &lt;a href="https://gist.github.com/NattyNarwhal/9ff44d1941f7fc5e84d4199b81d3888e"&gt;https://gist.github.com/NattyNarwhal/9ff44d1941f7fc5e84d4199b81d3888e&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Many thanks to all the contributors and supporters!&lt;/p&gt;
&lt;p&gt;Regards, &lt;br&gt;
Calvin Buckley, Saki Takamachi, and Eric Mann&lt;/p&gt;
&lt;p&gt;php-8.4.24.tar.bz2 &lt;br&gt;
SHA256 hash: 286890447588510df110ede9e9ce09f1eb4f9856630b47fdc40ece70e20373cf &lt;br&gt;
PGP signature: &lt;br&gt;
-----BEGIN PGP SIGNATURE-----&lt;/p&gt;
&lt;p&gt;iJEEABYKADkWIQSdf5mgy48FyKaVjWJWqXr3YAo5pgUCammWlxsUgAAAAAAEAA5t &lt;br&gt;
YW51MiwyLjUrMS4xMiwwLDMACgkQVql692AKOaa5RQD/VHOaZLqLnznbHEWA3Yxt &lt;br&gt;
iGHnZACVKQoyXcgRMvY0WB8BAPLbfSteqxsFAtPlFzqUqh/dzC32c8egQgCAToHe &lt;br&gt;
G6sB &lt;br&gt;
=Zpre &lt;br&gt;
-----END PGP SIGNATURE-----&lt;/p&gt;
&lt;p&gt;php-8.4.24.tar.gz &lt;br&gt;
SHA256 hash: d5fe6a1d7633e70645dc757461eeb7b764ff6a04d0487f076dd56f1f9d8059db &lt;br&gt;
PGP signature: &lt;br&gt;
-----BEGIN PGP SIGNATURE-----&lt;/p&gt;
&lt;p&gt;iJEEABYKADkWIQSdf5mgy48FyKaVjWJWqXr3YAo5pgUCammWlxsUgAAAAAAEAA5t &lt;br&gt;
YW51MiwyLjUrMS4xMiwwLDMACgkQVql692AKOaazbAD/ZN8l1G2PuGRCPz3saTDX &lt;br&gt;
9+3qJmI0FNiO/jP90QoPKtUA/0vooLHOrTKlX9e+jEZYnPTRcitvVcw5rShKbftF &lt;br&gt;
WvcP &lt;br&gt;
=zbN3 &lt;br&gt;
-----END PGP SIGNATURE-----&lt;/p&gt;
&lt;p&gt;php-8.4.24.tar.xz &lt;br&gt;
SHA256 hash: e127be09a8506f4327c5cfa78a614b00d210714484ec215ce0011b4a03c00731 &lt;br&gt;
PGP signature: &lt;br&gt;
-----BEGIN PGP SIGNATURE-----&lt;/p&gt;
&lt;p&gt;iJEEABYKADkWIQSdf5mgy48FyKaVjWJWqXr3YAo5pgUCammWmBsUgAAAAAAEAA5t &lt;br&gt;
YW51MiwyLjUrMS4xMiwwLDMACgkQVql692AKOaYjxQEA4JM91wpTjDXkfFFmE/4C &lt;br&gt;
BTe60xD1D1g9dpnNHEnJ0+MA/RkY5jNIdCTzjB3xinvrqB8xVx6tJYyigcfxNfZn &lt;br&gt;
SqgG &lt;br&gt;
=Lrrc &lt;br&gt;
-----END PGP SIGNATURE&lt;/p&gt;
</description><guid>f34de777-e56d-42a8-a435-1b86a2810b1c@app.fastmail.com</guid><pubDate>Thu, 30 Jul 2026 15:14:34 +0000</pubDate></item><item><title>PHP 8.3.33 Released</title><link>https://externals.io/message/132136</link><description>&lt;p&gt;The PHP development team announces the immediate availability of PHP 8.3.33. This is a security release.&lt;/p&gt;
&lt;p&gt;All PHP 8.3 users are encouraged to upgrade to this version.&lt;/p&gt;
&lt;p&gt;Release Announcement: &lt;a href="https://php.net/releases/8_3_33.php"&gt;https://php.net/releases/8_3_33.php&lt;/a&gt; &lt;br&gt;
Downloads:            &lt;a href="https://php.net/downloads"&gt;https://php.net/downloads&lt;/a&gt; &lt;br&gt;
Windows downloads:    &lt;a href="https://www.php.net/downloads.php?os=windows&amp;amp;version=8.3"&gt;https://www.php.net/downloads.php?os=windows&amp;amp;version=8.3&lt;/a&gt; &lt;br&gt;
Changelog:            &lt;a href="https://php.net/ChangeLog-8.php#8.3.33"&gt;https://php.net/ChangeLog-8.php#8.3.33&lt;/a&gt; &lt;br&gt;
Release Manifest:     &lt;a href="https://gist.github.com/ericmann/9ca630d036f957c356e01bbc39263d76"&gt;https://gist.github.com/ericmann/9ca630d036f957c356e01bbc39263d76&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Many thanks to all the contributors and supporters!&lt;/p&gt;
&lt;p&gt;Regards, &lt;br&gt;
Eric Mann, Jakub Zelenka, and Pierrick Charron&lt;/p&gt;
&lt;p&gt;php-8.3.33.tar.bz2 &lt;br&gt;
SHA256 hash: f9c9f4d0cd7692c6e3da363cd4ca72a826a49ae18f5ed430b6fcae7bc2881e18 &lt;br&gt;
PGP signature: &lt;br&gt;
-----BEGIN PGP SIGNATURE-----&lt;/p&gt;
&lt;p&gt;iQIzBAABCAAdFiEESx/A2d+SMhztn2FdvsVV4ioUNVMFAmpo7sMACgkQvsVV4ioU &lt;br&gt;
NVOrwQ/+LeK0UPJUwMGPXeJKqjihpyqi03COjPe98F+5jp3XC+7Ie3BVcNIAOC5f &lt;br&gt;
VPbXK2nzhUaLU+P6IJDshAj4kqTlKsg8lp6nH4Zpr4i20kTGIQoNiOzentkwLPGV &lt;br&gt;
6PzmRspM63dbi2Mo8D6iqCuxXA+N22aGK8qmuhhgeYWw0QwXP+O4EPVprM9AiL/u &lt;br&gt;
O9HwV9DG4LQGOpmdA3Tth8or1tlGkrzneolRXvqOtfUcLzaawOWjB99S2u4LfxwA &lt;br&gt;
jSBgsS9LuBGzFElcXAorgtlrD0crFNdjvz5I7k4yZ/elIjf+KA4QXPrhdoaf9rJM &lt;br&gt;
vMF65qqVahaT2shYgXNcl+ZQFh2aPM/y+RkngGefHoBmJqgxmCluY3yj6VMLJrkS &lt;br&gt;
4PU4TeFxQG7bLqHQP5z0Mz5aJUxRAVYpHRD6k0dbqlt6V0tru6v8LST4DFkIL2tn &lt;br&gt;
6oi3+Ysi3J+tlKP4vU04AFng6Wt8YzNyfNgZ6QLpvoTXbm1DizPhUvTfwgdw7cVa &lt;br&gt;
XFwwJvS9daq2unnLI6mv4/ihgwkZYMtqpgVOYvkSnRXfZzfMwrxxT0z2T8AqjE16 &lt;br&gt;
qvCEvO28q8OEdIyzxpSOPu7PsUfkii2UOFVfMYPZFPjDOfBZxVhqN9f14kJh6oQE &lt;br&gt;
6CYezWPIMcWDghzMOIE4Wldbw7+g4XwyDAoceULlKSatZ5gxfa0= &lt;br&gt;
=6/Ik &lt;br&gt;
-----END PGP SIGNATURE-----&lt;/p&gt;
&lt;p&gt;php-8.3.33.tar.gz &lt;br&gt;
SHA256 hash: f43566da482abeb1614a512dabeda74967847ce8e176a977390d7a115e7812fd &lt;br&gt;
PGP signature: &lt;br&gt;
-----BEGIN PGP SIGNATURE-----&lt;/p&gt;
&lt;p&gt;iQIzBAABCAAdFiEESx/A2d+SMhztn2FdvsVV4ioUNVMFAmpo7sMACgkQvsVV4ioU &lt;br&gt;
NVM27BAAnid4yO0Yyc91TngsBtUJTS37sujRGfNTc4FagupgLv7iwJU6ZYaYBKzo &lt;br&gt;
iqog9ikjKuk1fpeFHgRVAHEFtXKy80EdFpYaydhpCXnTuVUFZn44DPDhnnTasP1R &lt;br&gt;
H5+wZ2q7Ykko9CBMXTP3N7Zu4MrXa+w6j8ga6jtbDj44L1NC77rHaWm0rBEhonaD &lt;br&gt;
aQHJ/Y8X5tIIoGY/TAtBJcP2wJX7doj7C1zUuq89EjUw8pdkas+buHsLCXqEI9qu &lt;br&gt;
GaPbMGEPVLl50PldVrXteyB+Zm4g9PpCd4w84qJWkcNngKKgNluEeBuly40h10bq &lt;br&gt;
kGUUuFiwZgi/qIAo+C1c1VeApAwY27TbedwJ5ez8D+tEzEr/O+kbuvW30b117fIt &lt;br&gt;
rotN6LkuMSm+K4PA2EsbCkdYUwBtuyVtrx/Rgv+zPb5JBFJRhScI+0T8to+Suf6S &lt;br&gt;
BtiIf/zAe/wU1FoV8zejqLzihO/tbCFHbhPtWDYyLET8Xy5RV33fNMu50tr0PPPF &lt;br&gt;
k5rhIIUpj9OYi0GE8r2ZsmHHbAsSfawPxjDi6etOkZhXXoptqPVPRCi8UgG421Xz &lt;br&gt;
B/5DxcGsd8Pl0SQJLWvcpu00suDo2XX3vLMzxzSZpO0XmPh3d/QLUMjK+vQ+lJbW &lt;br&gt;
nFsGGMJVUe2DKN3YYnCRpfSempR0Lb9emPwLDnSMP1c3uVFwqjc= &lt;br&gt;
=f1Uv &lt;br&gt;
-----END PGP SIGNATURE-----&lt;/p&gt;
&lt;p&gt;php-8.3.33.tar.xz &lt;br&gt;
SHA256 hash: e293ed620cec74651bb4a071317892a478aa6840fab22db45c72d77cd42f9676 &lt;br&gt;
PGP signature: &lt;br&gt;
-----BEGIN PGP SIGNATURE-----&lt;/p&gt;
&lt;p&gt;iQIzBAABCAAdFiEESx/A2d+SMhztn2FdvsVV4ioUNVMFAmpo7sMACgkQvsVV4ioU &lt;br&gt;
NVOQyhAAsx6xeijTn55N3e4Zhy0igfRXBfCdiwhuao6yD+mhzX8mNGyX/XKy7MHo &lt;br&gt;
cHhV3HAKZuO2bqGvyGyAWOCGbdUa+qqZixMiXVexyZbv+1cQ1mItK2ogRMk3pFrv &lt;br&gt;
umeDUSzG1GPDK4bj5FhJ4bXkWNet2IgN8EsfGMav6kDk+jZ4UAAs+3A8T9x30p8t &lt;br&gt;
LjJJKsiUzfZ+I5sFQSpbbvJXc69SEthwAWbtiRcdCW5Y/jpK9w7hJ2M/vC/nIxh7 &lt;br&gt;
qRdpVqfLmgGZN5FmCum7VmuK6YZfMXm0wxmYKrBg9Evb59II1v1M5n+qlYBAkHTr &lt;br&gt;
TokIDNNGWkLTZmCUvEmVoC7vtj0vqBNfWl5djBz7Vyikm5dltC2ecH63BCb8bVlv &lt;br&gt;
2pc0ubw7VVExmf3ZJYXavaalrIca2zZeJO4bneVZ8tXaLieBoZZ5+GeAXpM2euO+ &lt;br&gt;
n0RHxB2TqHt8WwN0kkT8RLc+THnIMrDAZ34SOUqA6hs44exqmn9Ji2W0iy/nsurp &lt;br&gt;
zkdkt9BKdEm160dqJXl9JEoadXQFi9IfmRrz5TL59NLuOH6DHP4cOZ6S80P7pksd &lt;br&gt;
8anZmbSaTkP9gGUImqgMziD6bjwdBWx/RD7jezbDmTFZKl95VuEEotRaws87jyHH &lt;br&gt;
qTyX9xqRJyak72wFAPKMhVn8H4peCsxbCvWGrfHfQRGls/PPCjA= &lt;br&gt;
=lz/q &lt;br&gt;
-----END PGP SIGNATURE&lt;/p&gt;
</description><guid>20e6e161-5b8b-4861-868e-a545f528e1f5@app.fastmail.com</guid><pubDate>Thu, 30 Jul 2026 15:11:43 +0000</pubDate></item><item><title>[RFC] [Discussion] PREG_THROW_ON_ERROR</title><link>https://externals.io/message/132135</link><description>&lt;p&gt;Am 28.07.2026 um 02:56 schrieb Osama Aldemeery &lt;a href="mailto:aldemeery@gmail.com"&gt;aldemeery@gmail.com&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The flag only changes how an error is delivered. A call does exactly the same thing with it or without it, byte for byte. &lt;br&gt;
The only difference is that at the end, any error the call would have recorded is additionally thrown, carrying the same code and &lt;br&gt;
message &lt;code&gt;preg_last_error()&lt;/code&gt;/&lt;code&gt;preg_last_error_msg()&lt;/code&gt; would report.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Reading the RFC and specifically the line&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;// The detailed &amp;quot;Compilation failed: ...&amp;quot; warning is still emitted, as always.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I assume compilation (and other?) failures will then trigger BOTH the &lt;code&gt;E_WARNING&lt;/code&gt; and an Exception?&lt;/p&gt;
&lt;p&gt;This sounds weird to me, do we have a precedent for this behavior? &lt;br&gt;
I would have expected the Exception to replace the E_WARNING.&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Chris&lt;/li&gt;
&lt;/ul&gt;
</description><guid>1EED80D5-AF5B-4844-A8F1-E4393342F676@cschneid.com</guid><pubDate>Thu, 30 Jul 2026 15:08:33 +0000</pubDate></item><item><title>[RFC] [VOTE] Function Autoloading (mark 5)</title><link>https://externals.io/message/132134</link><description>&lt;p&gt;Hi all,&lt;/p&gt;
&lt;p&gt;Per my message from a couple of weeks ago &lt;a href="https://externals.io/message/131332#131945"&gt;https://externals.io/message/131332#131945&lt;/a&gt; I have opened the vote for Function Autoloading (mark 5):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://wiki.php.net/rfc/function-autoloading-five-oh"&gt;https://wiki.php.net/rfc/function-autoloading-five-oh&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The vote runs for two weeks and will close automatically at 14:45 UTC on Thu 13 Aug 2026.&lt;/p&gt;
&lt;p&gt;N.b.: Voters concerned about shadowed global functions should note that such cases, while real in principle, are extremely rare in practice; those very few cases can be mitigated easily. Cf. &lt;a href="https://wiki.php.net/rfc/function-autoloading-five-oh#how_common_is_the_shadow-global_case"&gt;https://wiki.php.net/rfc/function-autoloading-five-oh#how_common_is_the_shadow-global_case&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;
&lt;p&gt;-- pmj&lt;/p&gt;
</description><guid>BA6A4426-7F89-4033-A7BE-DCFAD43E491A@pmjones.io</guid><pubDate>Thu, 30 Jul 2026 14:46:21 +0000</pubDate></item><item><title>[RFC] [Discussion] PREG_THROW_ON_ERROR</title><link>https://externals.io/message/132133</link><description>&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi all,&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;The exception name is settled from the pre-RFC as &lt;code&gt;\PregException&lt;/code&gt; &lt;br&gt;
(thanks Tim) and the flag as &lt;code&gt;PREG_THROW_ON_ERROR&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;From the RFC:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The flag covers both classes of PCRE failure.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;have you considered throwing different Exception types for the two failure types? (e.g. PregExecutionException and PregCompilationException)&lt;/p&gt;
&lt;p&gt;You could have both be child classes of PregException, but in actual fact, the second should probably be a child of LogicException, while the former really is a RuntimeException...&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;We actually have an agreed policy for this: &lt;a href="https://github.com/php/policies/blob/main/coding-standards-and-naming.rst#throwables"&gt;https://github.com/php/policies/blob/main/coding-standards-and-naming.rst#throwables&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;According to that, there has to be a single base extension, which extends directly from \Exception.&lt;/p&gt;
&lt;p&gt;Having more specific extensions is definitely encouraged, but these must all extend the extension's base exception (or each other), not any of the SPL classes like RuntimeException.&lt;/p&gt;
&lt;p&gt;If it was a new extension the base exception name would be \Pcre\PcreException but there's flexibility when adding to existing extensions.&lt;/p&gt;
&lt;p&gt;Thanks for bringing up this point,&lt;/p&gt;
&lt;p&gt;Rowan Tommins &lt;br&gt;
[IMSoP]&lt;/p&gt;
</description><guid>9A7557C4-34CD-42FD-B72B-16F9A79B3060@rwec.co.uk</guid><pubDate>Thu, 30 Jul 2026 14:22:24 +0000</pubDate></item><item><title>PHP 8.6.0alpha3 is available for testing</title><link>https://externals.io/message/132132</link><description>&lt;p&gt;PHP 8.6.0alpha3 has just been released and may be downloaded from &lt;br&gt;
&lt;a href="https://downloads.php.net/~mbeccati/" rel="nofollow" target="_blank"&gt;https://downloads.php.net/~mbeccati/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Or use the git tag: php-8.6.0alpha3&lt;/p&gt;
&lt;p&gt;This is an early test release and not intended for production use.&lt;/p&gt;
&lt;p&gt;Windows binaries are available at: &lt;a href="https://windows.php.net/qa/" rel="nofollow" target="_blank"&gt;https://windows.php.net/qa/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Please test it carefully, and report any bugs at &lt;br&gt;
&lt;a href="https://github.com/php/php-src/issues/new?template=bug_report.yml" rel="nofollow" target="_blank"&gt;https://github.com/php/php-src/issues/new?template=bug_report.yml&lt;/a&gt; &lt;br&gt;
on GitHub.&lt;/p&gt;
&lt;p&gt;8.6.0beta1 should be expected in 2 weeks, i.e. on 13 Aug 2026.&lt;/p&gt;
&lt;p&gt;Hash values and PGP signatures can be found below or at &lt;br&gt;
&lt;a href="https://gist.github.com/mbeccati/a78ae3c3bafa22839c619d1c81d286ae" rel="nofollow" target="_blank"&gt;https://gist.github.com/mbeccati/a78ae3c3bafa22839c619d1c81d286ae&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thank you, and happy testing!&lt;/p&gt;
&lt;p&gt;Regards, &lt;br&gt;
Matteo Beccati, Joe Ferguson &amp;amp; Daniel Scherzer&lt;/p&gt;
&lt;p&gt;php-8.6.0alpha3.tar.bz2 &lt;br&gt;
SHA256 hash: &lt;br&gt;
34bf91f3c6f880ed196ff6855f850ec466a75540f78320540d367b349e49bf16 &lt;br&gt;
PGP signature: &lt;br&gt;
-----BEGIN PGP SIGNATURE-----&lt;/p&gt;
&lt;p&gt;iHUEABYKAB0WIQQBaJXemkdREdU3puaRNP8wvFqZtQUCamiA8gAKCRCRNP8wvFqZ &lt;br&gt;
tbBsAQDfOdq5Ge6ETCHxRT203UgPZ47w8mYn75gQpiTV/pl9sQEAuAmKRkBaLaw+ &lt;br&gt;
gxNcCWEvQN2Of66lu0KkpGnQX/1s+AA= &lt;br&gt;
=bBxG &lt;br&gt;
-----END PGP SIGNATURE-----&lt;/p&gt;
&lt;p&gt;php-8.6.0alpha3.tar.gz &lt;br&gt;
SHA256 hash: &lt;br&gt;
e63ffdbae7ee90b43ce11b2ec16f62c6b623eec39c726060dba920af6088527b &lt;br&gt;
PGP signature: &lt;br&gt;
-----BEGIN PGP SIGNATURE-----&lt;/p&gt;
&lt;p&gt;iHUEABYKAB0WIQQBaJXemkdREdU3puaRNP8wvFqZtQUCamiA8gAKCRCRNP8wvFqZ &lt;br&gt;
tSqrAQC8lU5+pYhKKGEPIo62x7ClzDzJfZexlxAcJAowQgJHLAEArH2XNTMNzyCC &lt;br&gt;
jwiyve2FB1mAYA4lDt76aH6bho5TAwI= &lt;br&gt;
=1+lj &lt;br&gt;
-----END PGP SIGNATURE-----&lt;/p&gt;
&lt;p&gt;php-8.6.0alpha3.tar.xz &lt;br&gt;
SHA256 hash: &lt;br&gt;
5eec9db06195860097005309eb6176309ae738df28f56eb23c87be5887d86c78 &lt;br&gt;
PGP signature: &lt;br&gt;
-----BEGIN PGP SIGNATURE-----&lt;/p&gt;
&lt;p&gt;iHUEABYKAB0WIQQBaJXemkdREdU3puaRNP8wvFqZtQUCamiA8wAKCRCRNP8wvFqZ &lt;br&gt;
tXzqAP9aGMcN4vJXUWOSeDkMz7Dq+36pI1xuXduinoK/bQX83gEAiOLPPaYtDE6m &lt;br&gt;
1unOIk4TM5i8eiE+WZ2FC+LmckQzoAc= &lt;br&gt;
=NyTI &lt;br&gt;
-----END PGP SIGNATURE&lt;/p&gt;
</description><guid>24b66ea9-4f5e-4b97-af1a-e36588e2a894@php.net</guid><pubDate>Thu, 30 Jul 2026 14:11:21 +0000</pubDate></item><item><title>PHP 8.5.9 Released</title><link>https://externals.io/message/132131</link><description>&lt;p&gt;The PHP development team announces the immediate availability of PHP &lt;br&gt;
8.5.9. This is a security release.&lt;/p&gt;
&lt;p&gt;All PHP 8.5 users are encouraged to upgrade to this version.&lt;/p&gt;
&lt;p&gt;For source downloads of PHP 8.5.9 please visit our downloads page. &lt;br&gt;
Windows binaries can be found on the same page. &lt;br&gt;
The list of changes is recorded in the ChangeLog.&lt;/p&gt;
&lt;p&gt;Release Announcement: &lt;a href="https://www.php.net/releases/8_5_9.php"&gt;https://www.php.net/releases/8_5_9.php&lt;/a&gt; &lt;br&gt;
Downloads:            &lt;a href="https://www.php.net/downloads.php?source=Y"&gt;https://www.php.net/downloads.php?source=Y&lt;/a&gt; &lt;br&gt;
Changelog:            &lt;a href="https://php.net/ChangeLog-8.php#8.5.9"&gt;https://php.net/ChangeLog-8.php#8.5.9&lt;/a&gt; &lt;br&gt;
Release Manifest: &lt;br&gt;
&lt;a href="https://gist.github.com/edorian/cfc86a2a5c79df2a51a20203ba7ad735"&gt;https://gist.github.com/edorian/cfc86a2a5c79df2a51a20203ba7ad735&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Many thanks to all the contributors and supporters!&lt;/p&gt;
&lt;p&gt;Regards, &lt;br&gt;
Volker Dusch, Daniel Scherzer, and Pierrick Charron&lt;/p&gt;
&lt;p&gt;php-8.5.9.tar.bz2 &lt;br&gt;
SHA256 hash: 703c082ad9d2946ac647f3596812300d2c62b360d2f31a999021692a9b39476c &lt;br&gt;
PGP signature: &lt;br&gt;
-----BEGIN PGP SIGNATURE-----&lt;/p&gt;
&lt;p&gt;iKIEABYKAEoWIQRJ2a9rxyqA1mkXGciqI/W+nHCX1AUCamirChsUgAAAAAAEAA5t &lt;br&gt;
YW51MiwyLjUrMS4xMiwwLDMQHGVkb3JpYW5AcGhwLm5ldAAKCRCqI/W+nHCX1Fhb &lt;br&gt;
AP9mohaDeKkWy1XfwYbp2nshB+bhxRsYaiyrhbmJfG4RcwD7BSwDi1jmYa+oqDXe &lt;br&gt;
/OdWpGvH0lNaKAA1RZXn84vJbAo= &lt;br&gt;
=lEmk &lt;br&gt;
-----END PGP SIGNATURE-----&lt;/p&gt;
&lt;p&gt;php-8.5.9.tar.gz &lt;br&gt;
SHA256 hash: d735459c2cbaeb0673d416c33d372d9ff261d562f6b29da48f3e6aeaeca083af &lt;br&gt;
PGP signature: &lt;br&gt;
-----BEGIN PGP SIGNATURE-----&lt;/p&gt;
&lt;p&gt;iKIEABYKAEoWIQRJ2a9rxyqA1mkXGciqI/W+nHCX1AUCamirChsUgAAAAAAEAA5t &lt;br&gt;
YW51MiwyLjUrMS4xMiwwLDMQHGVkb3JpYW5AcGhwLm5ldAAKCRCqI/W+nHCX1Nna &lt;br&gt;
AQDqYsBdDgY6yKHuUL57YJQK16cN/iLp7W9hSoM8LwNItwEAwj3wAB09eyHz37nm &lt;br&gt;
Ts/Ef2E1Q0Z6gCBuOeqhly+2Dws= &lt;br&gt;
=YHoj &lt;br&gt;
-----END PGP SIGNATURE-----&lt;/p&gt;
&lt;p&gt;php-8.5.9.tar.xz &lt;br&gt;
SHA256 hash: 0db7855f25bcd0ab1d592cdb35e284d6f6a5d2ae0f6f621122e364cc39b708f4 &lt;br&gt;
PGP signature: &lt;br&gt;
-----BEGIN PGP SIGNATURE-----&lt;/p&gt;
&lt;p&gt;iKIEABYKAEoWIQRJ2a9rxyqA1mkXGciqI/W+nHCX1AUCamirChsUgAAAAAAEAA5t &lt;br&gt;
YW51MiwyLjUrMS4xMiwwLDMQHGVkb3JpYW5AcGhwLm5ldAAKCRCqI/W+nHCX1L2Z &lt;br&gt;
AQDvcR4sfJ9DkvPT9h1FXs0+Kz6F8m497RxBSJ78ejwlZgD/aqPD121W7HgCrQBG &lt;br&gt;
bHCrDeekatbw43Fwz9/UKzmyNgg= &lt;br&gt;
=ixq6 &lt;br&gt;
-----END PGP SIGNATURE&lt;/p&gt;
</description><guid>CAMmyQQJ8E6E6yFDeXSt_AiC8VV+uWfY0KVDXVDcP86qg6U9ceg@mail.gmail.com</guid><pubDate>Thu, 30 Jul 2026 13:16:37 +0000</pubDate></item><item><title>PHP 8.2.33 Released!</title><link>https://externals.io/message/132130</link><description>&lt;p&gt;The PHP development team announces the immediate availability of PHP 8.2.33.&lt;/p&gt;
&lt;p&gt;This is a security release.&lt;/p&gt;
&lt;p&gt;All PHP 8.2 users are advised to upgrade to this version.&lt;/p&gt;
&lt;p&gt;For source downloads of PHP 8.2.33 please visit our downloads page. &lt;br&gt;
Windows binaries can be found on the PHP for Windows site. &lt;br&gt;
The list of changes is recorded in the ChangeLog.&lt;/p&gt;
&lt;p&gt;Release Announcement: &lt;a href="https://php.net/releases/8_2_33.php"&gt;https://php.net/releases/8_2_33.php&lt;/a&gt; &lt;br&gt;
Downloads:            &lt;a href="https://php.net/downloads"&gt;https://php.net/downloads&lt;/a&gt; &lt;br&gt;
Windows downloads:    &lt;a href="https://www.php.net/downloads.php?os=windows&amp;amp;version=8.2"&gt;https://www.php.net/downloads.php?os=windows&amp;amp;version=8.2&lt;/a&gt; &lt;br&gt;
Changelog:            &lt;a href="https://php.net/ChangeLog-8.php#8.2.33"&gt;https://php.net/ChangeLog-8.php#8.2.33&lt;/a&gt; &lt;br&gt;
Release Manifest:     &lt;a href="https://gist.github.com/saundefined/68ef63f3608373b939005f4bed504832"&gt;https://gist.github.com/saundefined/68ef63f3608373b939005f4bed504832&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Many thanks to all the contributors and supporters!&lt;/p&gt;
&lt;p&gt;Pierrick Charron, Sergey Panteleev &amp;amp; Ben Ramsey&lt;/p&gt;
&lt;p&gt;php-8.2.33.tar.bz2 &lt;br&gt;
SHA256 hash: 5362f2a7a0e7168ce722fea0048b1a1d28e0f7cc265c417df670c65670695018 &lt;br&gt;
PGP signature: &lt;br&gt;
-----BEGIN PGP SIGNATURE-----&lt;/p&gt;
&lt;p&gt;iQIzBAABCAAdFiEE5gkT5N8gmQfY4w2WZZqXyc8qeVoFAmpogjgACgkQZZqXyc8q &lt;br&gt;
eVrVUA//XGdv2a9uwKEYbALWhG1lfhjkUYcUHYbprbGWFxDeqtVdTEvDyAEOvG0j &lt;br&gt;
HhmKL8/Lq5uzbBxjWvVd2YoDElFG3KW9Go0Xsa/X7T4EGe/JYV7AWafXbKyMFrW6 &lt;br&gt;
wjUiXIzUnjC/7VI5b7qd1MSivN+6XqY3AF6TbF1SQYnCU7rO7oiS6jWFX7ZMwJ2C &lt;br&gt;
t0wLtrvSsKshGWPr/QkKYRmexVHCOgBhiG1XR5CupDci+zh4c4F0bXsCBgofK7mK &lt;br&gt;
YA9CY4m9mnUnO7vVF7n9Haheg3MBSrhkwsL5w176fZmxgRHqHcXtR6ygAKuAT9dN &lt;br&gt;
/n5okJXfy/Iai/ZLt0uNDw8v+r1ekPPXz/QnxY8w2p1nKp2I/m02bXvm0afLdKvu &lt;br&gt;
8GcpzWRAJq+s681p61QeIpkNzxFQ6k/fcvQ6wNXa4rAFRi9oUDpItmWlEorL33Pa &lt;br&gt;
k1kFErrlyL7Bqc59FXLe2hD/GuBrL15POWVq9DArMHUzDI7U7W/tGPYmUmPzbibE &lt;br&gt;
Xx+guQEPWm9H/X3RomeVPrOhcNtfwaSSABRmIU4BSOMZkTdRHlAkN0vUdTmgleQC &lt;br&gt;
wbo+Msv2t138/7iY1SzhmkGNtOS2rvkAt5wL6FW7AZ7VxiU/riC8hciUyuCrY4/n &lt;br&gt;
OFB2Luf2iwME9TWYEDbvziB6oVbWYbWiVe8zlCntyfKvaWCjZcc= &lt;br&gt;
=nM+5 &lt;br&gt;
-----END PGP SIGNATURE-----&lt;/p&gt;
&lt;p&gt;php-8.2.33.tar.gz &lt;br&gt;
SHA256 hash: 9a525d4db1237ede408e454b46f5a93b9e45d83d71753592e3f921903d917e07 &lt;br&gt;
PGP signature: &lt;br&gt;
-----BEGIN PGP SIGNATURE-----&lt;/p&gt;
&lt;p&gt;iQIzBAABCAAdFiEE5gkT5N8gmQfY4w2WZZqXyc8qeVoFAmpogj8ACgkQZZqXyc8q &lt;br&gt;
eVpOAA//Uuu5S5amdIyWAITJg01GUqO4ka8frqgdna27Nm1Ya0lbdY4f1fxxSGkH &lt;br&gt;
Ps3WU8C3iLTv5EbxSZ0eCc7wRibQ/vFPKFXgwHpwWllvZy1cuageXwLpmQjx9GjP &lt;br&gt;
rtF1GbXlCWvHDA9vvOU6g6JYRgKkUNFfijXfzI4770+AVIRam3pzz7T32xK7fiDg &lt;br&gt;
UMj1OAG/Y5F54NM4rNOvu1HZb8nBUdIGWe/NlvTmA62FJoMDStKPe6aadTWV98pR &lt;br&gt;
Sy63LFIX/WmwL8csgN0M4o+wPjzH4munhAyAkhCMdXQp2pJ/ntOpOp9aBjy6LFyA &lt;br&gt;
78QS51605Gyo8tGplmfEn3mPQQExNI5CGoDd5yRMDRCaZW3DJFP3d5kjF0WhymPU &lt;br&gt;
u+MYK1JPTJGwMK53hvl7Y+d4RT2rYf55eI5L+Xcdl1fKPH10HzX29rccjRdsIVn6 &lt;br&gt;
rAgdS4LuY1G54yi8XEsBD1PSF0RtvNxeRj2XrZ2bAeXXYl1bXgZJ39mLRYg6apk8 &lt;br&gt;
rH/3z8nbkPJlI10eJ72gk0rLdMpkwCh2FCB4j2tM2QUkHhzz9yFznw+dOfnIX3ZL &lt;br&gt;
VM9zFTIDDxem6m1sx893PIWQ9SOy32qQFBFG72JyzXajNz+r/Iy8313ONRT8vEqB &lt;br&gt;
dyE6VsgD2VREmcwVEqm2dskJCWSrqhZ5GUABnMwW8uApOtOhyPA= &lt;br&gt;
=woaV &lt;br&gt;
-----END PGP SIGNATURE-----&lt;/p&gt;
&lt;p&gt;php-8.2.33.tar.xz &lt;br&gt;
SHA256 hash: fbdeace9b38220436a4c8fd79b900df92878151db145e641750743a283b514c1 &lt;br&gt;
PGP signature: &lt;br&gt;
-----BEGIN PGP SIGNATURE-----&lt;/p&gt;
&lt;p&gt;iQIzBAABCAAdFiEE5gkT5N8gmQfY4w2WZZqXyc8qeVoFAmpogkAACgkQZZqXyc8q &lt;br&gt;
eVqmUQ//cw6ZWso1xaodTbTcXBVpdjy9f7s7irmm5ZEmK6KG1ksA/c/dLLPAGsmp &lt;br&gt;
QuyoCUU62wZJFg2qXMslG4X5KS65+2q5pjp+WgV8L6QWZU4tupEJpEpEO1hiF6uL &lt;br&gt;
bVbu+8vcWTNO/ZnuLh0xWdtqV5mcX9UDN0pG4fOqb+manWQVRgk3w4LnEE9hWMK0 &lt;br&gt;
C2ZUW7IE1LFLMawDEvMOPmphp+1mhIAAT6bLiiSzlVHUv975kPaVVw7Ou6CnHpaF &lt;br&gt;
tv4Dvi5pKbOiSGba3nNEMQwQE8uLWo4CVvD5eA0kATRws5wdRz46EPrdcuXCOxZC &lt;br&gt;
k1myAqeI7Tp3Ve+21zEMlm5dyOMmGJJlzI/OT05GTcNqomCJex4bLJrA5Utb4Htl &lt;br&gt;
Hi9dchIEP5SPUF/IXJPvET4MQhFqdwf552tSHkpEb1jDMfnmDC8K33bJvHnVddOV &lt;br&gt;
sRoWwtgfJA5lMR9fckek+6bZt7et+hNGhbzAfu9GwT+p5o6M0Vu8/3xLMGKHaL4A &lt;br&gt;
7MsC+VhVvDG97mxOxibp44dJGajaR3VA+LmHg9xi7Dgja5it7apk21Vydf5zY6FU &lt;br&gt;
LgB5ha/o91rltwpN3+IM0JUa3ratcTFJrB61lgqYPJ0Lkd0cQb9u+349n7RDRGJ+ &lt;br&gt;
hFLcspl4MUrKvv6FBCgs8ag55SHyViwuDTN64VouygH4z1g4AWw= &lt;br&gt;
=VzAX &lt;br&gt;
-----END PGP SIGNATURE&lt;/p&gt;
</description><guid>AB642DD1-524B-4256-83CA-C6EE064E5CDA@php.net</guid><pubDate>Thu, 30 Jul 2026 11:55:03 +0000</pubDate></item><item><title>[RFC] [Discussion] PREG_THROW_ON_ERROR</title><link>https://externals.io/message/132129</link><description>&lt;blockquote&gt;
&lt;p&gt;Hi all,&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;The exception name is settled from the pre-RFC as &lt;code&gt;\PregException&lt;/code&gt; &lt;br&gt;
(thanks Tim) and the flag as &lt;code&gt;PREG_THROW_ON_ERROR&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;From the RFC:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The flag covers both classes of PCRE failure.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;have you considered throwing different Exception types for the two &lt;br&gt;
failure types? (e.g. PregExecutionException and PregCompilationException)&lt;/p&gt;
&lt;p&gt;You could have both be child classes of PregException, but in actual &lt;br&gt;
fact, the second should probably be a child of LogicException, while the &lt;br&gt;
former really is a RuntimeException...&lt;/p&gt;
&lt;p&gt;Regards, &lt;br&gt;
Bernard&lt;/p&gt;
</description><guid>937559ce-9c0f-4f84-869d-fc818099189a@bitwise-operators.com</guid><pubDate>Thu, 30 Jul 2026 00:21:29 +0000</pubDate></item><item><title>[RFC] [Discussion] Literal Scalar Types</title><link>https://externals.io/message/132128</link><description>&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Subject: Re: [RFC] Literal Scalar Types&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hello Internals,&lt;/p&gt;
&lt;p&gt;I'd like to start the discussion on a new RFC adding literal scalar &lt;br&gt;
types to PHP.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RFC: &lt;a href="https://wiki.php.net/rfc/literal_scalar_types" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/literal_scalar_types&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Implementation: &lt;a href="https://github.com/php/php-src/pull/22314" rel="nofollow" target="_blank"&gt;https://github.com/php/php-src/pull/22314&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks, &lt;br&gt;
Seifeddine.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hi internals,&lt;/p&gt;
&lt;p&gt;I have updated the Literal Scalar Types RFC to version 1.0, which I consider the final revision: &lt;a href="https://wiki.php.net/rfc/literal_scalar_types" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/literal_scalar_types&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The changes are editorial, based on feedback in this thread. I merged the &amp;quot;Accepted literal syntax&amp;quot; section into the per-type sections so each literal kind is described in one place, added a paragraph to the introduction on where literal types fit next to enums, tightened the reasoning in the matching semantics section, and added a short note on enum comparisons to the Performance section. The proposal itself is unchanged: the syntax, the semantics and the three votes are the same as in 0.3.&lt;/p&gt;
&lt;p&gt;Since this is a minor revision, I am opening voting shortly. A separate [VOTE] thread will follow.&lt;/p&gt;
&lt;p&gt;Thanks to everyone who took part in the discussion.&lt;/p&gt;
&lt;p&gt;Seifeddine&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hello internals,&lt;/p&gt;
&lt;p&gt;A procedural update, following my retraction in the [VOTE] thread.&lt;/p&gt;
&lt;p&gt;Earlier I opened voting on this RFC without meeting the prerequisites: no Intent to Vote had been posted two days in advance, and the 1.0 update I announced earlier is a Minor change, which starts a seven-day Cooldown Period. I retracted the vote. The widgets are closed, and the RFC is back to Under Discussion. The text is unchanged since the 1.0 announcement and I intend to keep it frozen until the vote.&lt;/p&gt;
&lt;p&gt;Please consider this message my formal Intent to Vote. The Cooldown Period ends on July 30, and I plan to reopen the vote that morning (UTC), running for the standard fourteen days within the Intent to Vote lifetime.&lt;/p&gt;
&lt;p&gt;One open question is the PHP 8.6 feature freeze. A vote opened on July 30 closes on August 13, the day of beta1, and the tag is created on August 11, so a merge would happen during the beta period and needs Release Manager approval. I am checking with the 8.6 RMs whether that is acceptable. If it is not, I will retarget the RFC to PHP 8.7 (or 9.0?) instead. Retargeting changes the voting widgets, so it would be announced here as a change, trigger its own Cooldown Period, and be followed by a fresh Intent to Vote, with no deadline pressure.&lt;/p&gt;
&lt;p&gt;Thanks for your patience.&lt;/p&gt;
&lt;p&gt;Seifeddine.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hello internals,&lt;/p&gt;
&lt;p&gt;An update on timing: this RFC will no longer target PHP 8.6.&lt;/p&gt;
&lt;p&gt;I asked the 8.6 Release Manager about the feature freeze. The &lt;br&gt;
effective cutoff is not the beta1 announcement on August 13 but the &lt;br&gt;
creation of the beta1 tag, which happens on Tuesday, August 11, &lt;br&gt;
mid-morning US Central time. A vote opened today would close on August &lt;br&gt;
13, after the tag exists, so inclusion in 8.6 is not possible. I will &lt;br&gt;
therefore not reopen the vote, and the Intent to Vote I posted on July &lt;br&gt;
23 is withdrawn.&lt;/p&gt;
&lt;p&gt;I have retargeted the RFC to the next PHP version, whether that is 8.7 &lt;br&gt;
or 9.0. RFC text is otherwise unchanged and remains final: &lt;br&gt;
&lt;a href="https://wiki.php.net/rfc/literal_scalar_types" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/literal_scalar_types&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Seifeddine&lt;/p&gt;
</description><guid>CAFyg4Hha4v=z1b2qE12Q56ND7XyPnRNMkuR6wipXrLLjQsLR0w@mail.gmail.com</guid><pubDate>Wed, 29 Jul 2026 23:59:00 +0000</pubDate></item><item><title>[RFC] [VOTE] Literal Scalar Types</title><link>https://externals.io/message/132127</link><description>&lt;blockquote&gt;
&lt;p&gt;Hello internals,&lt;/p&gt;
&lt;p&gt;Voting is now open on the Literal Scalar Types RFC, as announced in the discussion thread earlier.&lt;/p&gt;
&lt;p&gt;There are three votes on the RFC page, running concurrently:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Primary vote, requires a 2/3 majority: add integer and string literal types.&lt;/li&gt;
&lt;li&gt;Second vote, requires a 2/3 majority, independent of the first: add floating point literal types. The RFC is accepted if at least one of the two type votes passes; if both fail, it is rejected.&lt;/li&gt;
&lt;li&gt;Third vote, simple majority, effective only if at least one type vote passes: matching semantics, strict vs coercive. The RFC recommends strict matching.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The vote started on 2026-07-23 and ends on 2026-08-06.&lt;/p&gt;
&lt;p&gt;RFC: &lt;a href="https://wiki.php.net/rfc/literal_scalar_types" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/literal_scalar_types&lt;/a&gt; &lt;br&gt;
Discussion thread: &lt;a href="https://news-web.php.net/php.internals/131249" rel="nofollow" target="_blank"&gt;https://news-web.php.net/php.internals/131249&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Seifeddine &lt;br&gt;
Cheers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hello internals,&lt;/p&gt;
&lt;p&gt;An update on timing: this RFC will no longer target PHP 8.6.&lt;/p&gt;
&lt;p&gt;I asked the 8.6 Release Manager about the feature freeze. The &lt;br&gt;
effective cutoff is not the beta1 announcement on August 13 but the &lt;br&gt;
creation of the beta1 tag, which happens on Tuesday, August 11, &lt;br&gt;
mid-morning US Central time. A vote opened today would close on August &lt;br&gt;
13, after the tag exists, so inclusion in 8.6 is not possible. I will &lt;br&gt;
therefore not reopen the vote, and the Intent to Vote I posted on July &lt;br&gt;
23 is withdrawn.&lt;/p&gt;
&lt;p&gt;I have retargeted the RFC to the next PHP version, whether that is 8.7 &lt;br&gt;
or 9.0. RFC text is otherwise unchanged and remains final: &lt;br&gt;
&lt;a href="https://wiki.php.net/rfc/literal_scalar_types" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/literal_scalar_types&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Seifeddine&lt;/p&gt;
</description><guid>CAFyg4HgzSn=+80jtPm8A5sfrRzD4d+XP=JvWtyCS2FJtC4oMzQ@mail.gmail.com</guid><pubDate>Wed, 29 Jul 2026 23:53:52 +0000</pubDate></item><item><title>[RFC] [VOTE]</title><link>https://externals.io/message/132126</link><description>&lt;p&gt;&amp;gt; Nora isn't on the list, but she points out: &lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; The text for the metaphone deprecation isn't fully right. It lists &lt;br&gt;
&amp;gt; &amp;quot;linguistics&amp;quot; as a replacement package, but that one actually uses &lt;br&gt;
&amp;gt; php-src's metaphone internally too. So it is affected by the &lt;br&gt;
&amp;gt; deprecation, not a replacement. &lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; As demonstrated by: &lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; &amp;lt;?php &lt;br&gt;
&amp;gt; require 'vendor/autoload.php'; &lt;br&gt;
&amp;gt; \Linguistics\Phonetics::metaphone('foo');&lt;/p&gt;
&lt;p&gt;Thanks for noticing.&lt;/p&gt;
&lt;p&gt;Worth noticing that only the Phonetics::metaphone function use php's &lt;br&gt;
&lt;code&gt;metaphone()&lt;/code&gt;. Also, that function is barely a bridge for applying &lt;br&gt;
existent functions of PHP. All other advanced algorithms ain't affected &lt;br&gt;
by the metaphone deprecation.&lt;/p&gt;
&lt;p&gt;My point in deprecating it is to stop using ancient metaphone algo as a whole. &lt;br&gt;
And Linguistics offers loads of implementation. So this is still a replacement. &lt;br&gt;
However, I do see the reason to make this clear in the RFC text.&lt;/p&gt;
&lt;p&gt;I also forward this to Nora.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Weilin&lt;/li&gt;
&lt;/ul&gt;
</description><guid>tencent_705859EC4B3E3A2EF12B0207D7C9D20C6F07@qq.com</guid><pubDate>Wed, 29 Jul 2026 16:49:35 +0000</pubDate></item><item><title>[RFC] [VOTE]</title><link>https://externals.io/message/132125</link><description>&lt;blockquote&gt;
&lt;p&gt;Hello internals,&lt;/p&gt;
&lt;p&gt;As announced last week I've opened the vote for the 8.6 mass deprecation RFC: &lt;br&gt;
&lt;a href="https://wiki.php.net/rfc/deprecations_php_8_6" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/deprecations_php_8_6&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The vote runs for two weeks and will close automatically on the 10th of August 2026 at 13:00:00 UTC.&lt;/p&gt;
&lt;p&gt;Please remember that the wiki is only capable to handle a single vote at a time, &lt;br&gt;
so each vote MUST be submitted individually.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Gina P. Banyard&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Nora isn't on the list, but she points out:&lt;/p&gt;
&lt;p&gt;The text for the metaphone deprecation isn't fully right. It lists &lt;br&gt;
&amp;quot;linguistics&amp;quot; as a replacement package, but that one actually uses &lt;br&gt;
php-src's metaphone internally too. So it is affected by the &lt;br&gt;
deprecation, not a replacement.&lt;/p&gt;
&lt;p&gt;As demonstrated by:&lt;/p&gt;
&lt;p&gt;&amp;lt;?php &lt;br&gt;
require 'vendor/autoload.php'; &lt;br&gt;
\Linguistics\Phonetics::metaphone('foo');&lt;/p&gt;
</description><guid>45C5CD1E-631E-4196-A251-C3D068C03751@cmpct.info</guid><pubDate>Wed, 29 Jul 2026 14:03:30 +0000</pubDate></item><item><title>[RFC] [VOTE] Deprecations for PHP 8.6</title><link>https://externals.io/message/132124</link><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Seeing this discussion during the voting phase makes me think the discussion phase wasn't properly completed yet, and I did a poor job in merging all opinions into a RFC proposal. I would rather not fuel the discussion any further, but I would prefer to let the voting play out.&lt;/p&gt;
&lt;p&gt;Jakub Zelenka wrote:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The problem is that there wasn't enough time&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I don't know your situation, but it seems you have quite a lot of work on your plate. Is there something I or anyone can do to reduce your load?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This is exactly a half baked deprecation because ... this does not give us any code removal and we still need to maintain it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is true, but my goal was to prevent abuse of the dechunk filter in filter chain attacks, not to reduce maintainance load. See also my PR to make filter chain attacks more difficult: &lt;a href="https://github.com/php/php-src/pull/22110" rel="nofollow" target="_blank"&gt;https://github.com/php/php-src/pull/22110&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;to properly investigate if the things can be improved on the C side.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I tried some solutions, the most promising here: &lt;a href="https://github.com/php/php-src/pull/22548" rel="nofollow" target="_blank"&gt;https://github.com/php/php-src/pull/22548&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;There was just some bug and then immediate proposal to deprecate it without first not even realising that it's used by chunked encdoing which I needed to point out.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;For reference, this was in &lt;a href="https://github.com/php/php-src/pull/22036" rel="nofollow" target="_blank"&gt;https://github.com/php/php-src/pull/22036&lt;/a&gt;, and there is some more information in &lt;a href="https://github.com/php/php-src/issues/21983" rel="nofollow" target="_blank"&gt;https://github.com/php/php-src/issues/21983&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Sjoerd Langkemper&lt;/p&gt;
</description><guid>430dd251-4e03-479a-ba98-702110fb434a@app.fastmail.com</guid><pubDate>Wed, 29 Jul 2026 10:02:15 +0000</pubDate></item><item><title>[RFC] [VOTE]</title><link>https://externals.io/message/132123</link><description>&lt;blockquote&gt;
&lt;p&gt;Hello internals,&lt;/p&gt;
&lt;p&gt;As announced last week I've opened the vote for the 8.6 mass deprecation RFC: &lt;br&gt;
&lt;a href="https://wiki.php.net/rfc/deprecations_php_8_6" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/deprecations_php_8_6&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Since Juliette kindly added some raw usage data, but proposers have refused to spend any time looking at it, I would like to point out that one of the uses found for &amp;quot;is&amp;quot; as a keyword is in Hamcrest, a cross-language test assertion framework. The PHP version has 500 million installs tracked by Packagist.&lt;/p&gt;
&lt;p&gt;The is() function is part of the design inherited from the original Java library, and is used in many of the examples in the README so is likely to be widely used in the wild: &lt;a href="https://github.com/hamcrest/hamcrest-php#usage" rel="nofollow" target="_blank"&gt;https://github.com/hamcrest/hamcrest-php#usage&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I think we should think very carefully whether we can avoid disrupting that much code.&lt;/p&gt;
&lt;p&gt;Rowan Tommins &lt;br&gt;
[IMSoP]&lt;/p&gt;
</description><guid>B0F8EB97-EDD8-4566-AE35-E694AA2401C3@rwec.co.uk</guid><pubDate>Wed, 29 Jul 2026 09:24:12 +0000</pubDate></item><item><title>[RFC] [VOTE] Deprecations for PHP 8.6</title><link>https://externals.io/message/132122</link><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hey Jakub,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This is exactly a half baked deprecation because we need to keep it for &lt;br&gt;
internal use anyway (it uses http stream wrapper for chunked encoding) so &lt;br&gt;
this does not give us any code removal and we still need to maintain it. I &lt;br&gt;
don’t understand why we need to rush it as there is no real reason for that.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yes and no. Having internal uses only down the road is significantly &lt;br&gt;
easier to deal with than having to support this from a userland &lt;br&gt;
perspective. There is some time to think about it and make it cleaner &lt;br&gt;
or safer to be used for the purpose of fopen/file_get_contents like &lt;br&gt;
usages. But the select issues may remain, not sure yet. I don't think &lt;br&gt;
this is something that can't be solved.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I actually resolved that select issue (if it's what I think it is - &lt;br&gt;
limitation using select on filtered streams which I got rid of) in the &lt;br&gt;
current master so it will be part of 8.6. See &lt;br&gt;
&lt;a href="https://github.com/php/php-src/pull/20540" rel="nofollow" target="_blank"&gt;https://github.com/php/php-src/pull/20540&lt;/a&gt; .&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Also we cannot just decide not to deprecate it in RC. We would need &lt;br&gt;
extra approval from RM and then new RFC. We had exactly this sort of &lt;br&gt;
situation last year with __sleep and it was huge pain to change. It also &lt;br&gt;
took lots of our time that we could use for much more important stuff.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I hear you.&lt;/p&gt;
&lt;p&gt;Important has very different lists depending who we talk to. And &lt;br&gt;
everyone has time when it is possible, being paid to do it or in their &lt;br&gt;
free time. Cumulated time to deal with something we know is broken and &lt;br&gt;
we could fix in a decade or more surely used an order of magnitude &lt;br&gt;
time for too many people than reveriting a deprecation or adapting it. &lt;br&gt;
Even if it happens some RMs will need to deal with it, but you and &lt;br&gt;
others are not alone, dropping a mail here does not hurt and I am sure &lt;br&gt;
some, or I when I know the area, can jump in too. Communication is &lt;br&gt;
sometimes hard but amazingly helpful :).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The problem is that there wasn't enough time to properly investigate if the &lt;br&gt;
things can be improved on the C side. There was just some bug and then &lt;br&gt;
immediate proposal to deprecate it without first not even realising that &lt;br&gt;
it's used by chunked encdoing which I needed to point out. Then the idea &lt;br&gt;
was to deprecate it for user space only which I actually wasn't against as &lt;br&gt;
I assumed there was a proper research into the the usage but that wasn't &lt;br&gt;
the case because Nicolas then pointed out that it is used in Symfony but &lt;br&gt;
the deprecation proposal didn't get removed.&lt;/p&gt;
&lt;p&gt;What I think is that deprecation should be proposed only if there a deep &lt;br&gt;
knowledge of the problem and the context which I'm not sure is the case &lt;br&gt;
here (and in some other proposals as well).&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;/p&gt;
&lt;p&gt;Jakub&lt;/p&gt;
</description><guid>CAEKnhAHdYxViAjDYmNnD5==ARQjXQHS4VbzMPR4h_+9+jvXDKw@mail.gmail.com</guid><pubDate>Tue, 28 Jul 2026 15:52:32 +0000</pubDate></item><item><title>[RFC] [VOTE] Deprecations for PHP 8.6</title><link>https://externals.io/message/132121</link><description>&lt;p&gt;Hey Jakub,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This is exactly a half baked deprecation because we need to keep it for internal use anyway (it uses http stream wrapper for chunked encoding) so this does not give us any code removal and we still need to maintain it. I don’t understand why we need to rush it as there is no real reason for that.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yes and no. Having internal uses only down the road is significantly &lt;br&gt;
easier to deal with than having to support this from a userland &lt;br&gt;
perspective. There is some time to think about it and make it cleaner &lt;br&gt;
or safer to be used for the purpose of fopen/file_get_contents like &lt;br&gt;
usages. But the select issues may remain, not sure yet. I don't think &lt;br&gt;
this is something that can't be solved.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Also we cannot just decide not to deprecate it in RC. We would need extra approval from RM and then new RFC. We had exactly this sort of situation last year with __sleep and it was huge pain to change. It also took lots of our time that we could use for much more important stuff.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I hear you.&lt;/p&gt;
&lt;p&gt;Important has very different lists depending who we talk to. And &lt;br&gt;
everyone has time when it is possible, being paid to do it or in their &lt;br&gt;
free time. Cumulated time to deal with something we know is broken and &lt;br&gt;
we could fix in a decade or more surely used an order of magnitude &lt;br&gt;
time for too many people than reveriting a deprecation or adapting it. &lt;br&gt;
Even if it happens some RMs will need to deal with it, but you and &lt;br&gt;
others are not alone, dropping a mail here does not hurt and I am sure &lt;br&gt;
some, or I when I know the area, can jump in too. Communication is &lt;br&gt;
sometimes hard but amazingly helpful :).&lt;/p&gt;
&lt;h2&gt;Cheers,&lt;/h2&gt;
&lt;p&gt;Pierre&lt;/p&gt;
&lt;p&gt;@pierrejoye&lt;/p&gt;
</description><guid>CAEZPtU4CsUjFvvsuwMS+kHFdgvsxTAa1v1ouw=eVKA+jLBAEFg@mail.gmail.com</guid><pubDate>Tue, 28 Jul 2026 13:50:44 +0000</pubDate></item><item><title>[RFC] [VOTE] Deprecations for PHP 8.6</title><link>https://externals.io/message/132120</link><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hey Matteo,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi Pierre,&lt;/p&gt;
&lt;p&gt;Il 28/07/2026 05:52, Pierre Joye ha scritto:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;For example, Symfony's native http client disable it by default as it &lt;br&gt;
fails/failed to work correctly with stream_select, according to the &lt;br&gt;
inline comment in&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/symfony/symfony/blob/bb5999123482057647a0831010d14b6b34fe443c/src/Symfony/Component/HttpClient/NativeHttpClient.php#L227" rel="nofollow" target="_blank"&gt;https://github.com/symfony/symfony/blob/bb5999123482057647a0831010d14b6b34fe443c/src/Symfony/Component/HttpClient/NativeHttpClient.php#L227&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;FYI, Symfony has implemented a pure-PHP alternative in 8.2:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/symfony/symfony/commit/dca372b185100e82c556a741a96cbae1538162f2" rel="nofollow" target="_blank"&gt;https://github.com/symfony/symfony/commit/dca372b185100e82c556a741a96cbae1538162f2&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;That's why your search pointed in the wrong direction. Pre-8.2 there are &lt;br&gt;
a couple of:&lt;/p&gt;
&lt;p&gt;stream_filter_append(..., 'dechunk', \STREAM_FILTER_WRITE);&lt;/p&gt;
&lt;p&gt;in the code, if for whatever reason the Curl client is not in use.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I would go with keeping that deprecation, and if anything went off the &lt;br&gt;
radar, the major frameworks components will surely, or hopefully, &lt;br&gt;
provide the feedback required to revisit this deprecation before RC1. &lt;br&gt;
Yet, feedback on how to improve/mitigate was provided and ignored during &lt;br&gt;
the discussion period. Avoiding the deprecation on &lt;br&gt;
&lt;code&gt;stream_filter_append()&lt;/code&gt;, as suggested, would have been nice.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;Thanks :)&lt;/p&gt;
&lt;p&gt;I miss the 8.2 switch. That being said, deprecation is for php 9 &lt;br&gt;
removal as a target ideally. Keeping stream_filter_append that brings &lt;br&gt;
little to support users to migrate to a final solution earlier. Half &lt;br&gt;
baked deprecation can lead to missing places where implementation &lt;br&gt;
should be updated&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is exactly a half baked deprecation because we need to keep it for &lt;br&gt;
internal use anyway (it’s used http stream wrapper for chunked encoding) so &lt;br&gt;
this does not give us any code removal and we still need to maintain it. I &lt;br&gt;
don’t understand why we need to rush it as there is no real reason for that.&lt;/p&gt;
&lt;p&gt;Also we cannot just decide not to deprecate it in RC. We would need extra &lt;br&gt;
approval from RM and then new RFC. We had exactly this sort of situation &lt;br&gt;
last year with __sleep and it was huge pain to change. It also took lots of &lt;br&gt;
our time that we could use for much more important stuff.&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;/p&gt;
&lt;p&gt;Jakub&lt;/p&gt;
</description><guid>CAEKnhAHdQykAE=6U7rHfu_hteAN3U81rCdPN+Sg0kt3=BDXDng@mail.gmail.com</guid><pubDate>Tue, 28 Jul 2026 10:16:17 +0000</pubDate></item><item><title>[RFC] [VOTE] Deprecations for PHP 8.6</title><link>https://externals.io/message/132119</link><description>&lt;p&gt;Hey Matteo,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi Pierre,&lt;/p&gt;
&lt;p&gt;Il 28/07/2026 05:52, Pierre Joye ha scritto:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;For example, Symfony's native http client disable it by default as it &lt;br&gt;
fails/failed to work correctly with stream_select, according to the &lt;br&gt;
inline comment in &lt;br&gt;
&lt;a href="https://github.com/symfony/symfony/blob/bb5999123482057647a0831010d14b6b34fe443c/src/Symfony/Component/HttpClient/NativeHttpClient.php#L227" rel="nofollow" target="_blank"&gt;https://github.com/symfony/symfony/blob/bb5999123482057647a0831010d14b6b34fe443c/src/Symfony/Component/HttpClient/NativeHttpClient.php#L227&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;FYI, Symfony has implemented a pure-PHP alternative in 8.2:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/symfony/symfony/commit/dca372b185100e82c556a741a96cbae1538162f2" rel="nofollow" target="_blank"&gt;https://github.com/symfony/symfony/commit/dca372b185100e82c556a741a96cbae1538162f2&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That's why your search pointed in the wrong direction. Pre-8.2 there are &lt;br&gt;
a couple of:&lt;/p&gt;
&lt;p&gt;stream_filter_append(..., 'dechunk', \STREAM_FILTER_WRITE);&lt;/p&gt;
&lt;p&gt;in the code, if for whatever reason the Curl client is not in use.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I would go with keeping that deprecation, and if anything went off the &lt;br&gt;
radar, the major frameworks components will surely, or hopefully, &lt;br&gt;
provide the feedback required to revisit this deprecation before RC1. &lt;br&gt;
Yet, feedback on how to improve/mitigate was provided and ignored during &lt;br&gt;
the discussion period. Avoiding the deprecation on &lt;br&gt;
&lt;code&gt;stream_filter_append()&lt;/code&gt;, as suggested, would have been nice.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;Thanks :)&lt;/p&gt;
&lt;p&gt;I miss the 8.2 switch. That being said, deprecation is for php 9 &lt;br&gt;
removal as a target ideally. Keeping stream_filter_append that brings &lt;br&gt;
little to support users to migrate to a final solution earlier. Half &lt;br&gt;
baked deprecation can lead to missing places where implementation &lt;br&gt;
should be updated (not in project mentioned here tho' but many &lt;br&gt;
internal code out there).&lt;/p&gt;
&lt;h2&gt;Cheers,&lt;/h2&gt;
&lt;p&gt;Pierre&lt;/p&gt;
&lt;p&gt;@pierrejoye&lt;/p&gt;
</description><guid>CAEZPtU74-1WkYU63mxpGdhwzO5p-2NyAStJ0vKz3O3QfnbpCtw@mail.gmail.com</guid><pubDate>Tue, 28 Jul 2026 08:58:47 +0000</pubDate></item><item><title>[RFC] [VOTE] Deprecations for PHP 8.6</title><link>https://externals.io/message/132118</link><description>&lt;p&gt;Hi Pierre,&lt;/p&gt;
&lt;p&gt;Il 28/07/2026 05:52, Pierre Joye ha scritto:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;For example, Symfony's native http client disable it by default as it &lt;br&gt;
fails/failed to work correctly with stream_select, according to the &lt;br&gt;
inline comment in &lt;br&gt;
&lt;a href="https://github.com/symfony/symfony/blob/bb5999123482057647a0831010d14b6b34fe443c/src/Symfony/Component/HttpClient/NativeHttpClient.php#L227" rel="nofollow" target="_blank"&gt;https://github.com/symfony/symfony/blob/bb5999123482057647a0831010d14b6b34fe443c/src/Symfony/Component/HttpClient/NativeHttpClient.php#L227&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;FYI, Symfony has implemented a pure-PHP alternative in 8.2:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/symfony/symfony/commit/dca372b185100e82c556a741a96cbae1538162f2" rel="nofollow" target="_blank"&gt;https://github.com/symfony/symfony/commit/dca372b185100e82c556a741a96cbae1538162f2&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That's why your search pointed in the wrong direction. Pre-8.2 there are &lt;br&gt;
a couple of:&lt;/p&gt;
&lt;p&gt;stream_filter_append(..., 'dechunk', \STREAM_FILTER_WRITE);&lt;/p&gt;
&lt;p&gt;in the code, if for whatever reason the Curl client is not in use.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I would go with keeping that deprecation, and if anything went off the &lt;br&gt;
radar, the major frameworks components will surely, or hopefully, &lt;br&gt;
provide the feedback required to revisit this deprecation before RC1. &lt;br&gt;
Yet, feedback on how to improve/mitigate was provided and ignored during &lt;br&gt;
the discussion period. Avoiding the deprecation on &lt;br&gt;
&lt;code&gt;stream_filter_append()&lt;/code&gt;, as suggested, would have been nice.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Cheers&lt;/h2&gt;
&lt;p&gt;Matteo Beccati&lt;/p&gt;
</description><guid>0e2de160-0836-44b2-9055-b7dd9508c48b@beccati.com</guid><pubDate>Tue, 28 Jul 2026 07:36:25 +0000</pubDate></item><item><title>[VOTE] Pipe Assignment Operator</title><link>https://externals.io/message/132117</link><description>&lt;p&gt;Hi folks,&lt;/p&gt;
&lt;p&gt;I just opened voting on the &amp;quot;Pipe Assignment Operator&amp;quot; RFC.&lt;/p&gt;
&lt;p&gt;RFC: &lt;a href="https://wiki.php.net/rfc/pipe_assignment_operator" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/pipe_assignment_operator&lt;/a&gt; &lt;br&gt;
Discussion: &lt;a href="https://news-web.php.net/php.internals/131849" rel="nofollow" target="_blank"&gt;https://news-web.php.net/php.internals/131849&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There is one primary vote requiring a 2/3 majority to pass.&lt;/p&gt;
&lt;p&gt;Voting closes 2026-08-11 04:30:00 UTC.&lt;/p&gt;
&lt;p&gt;Best, &lt;br&gt;
Caleb&lt;/p&gt;
</description><guid>6fqOB8UBX_Qlv2CejQFnt53ZSuB-z9JczjIIMzWIkcrczrZ6vOXZzPRVN3-eqhYjQkp6-h0r-vjx0z-DfZ9CrGgFxDIoU4XgyOOCKYX5YME=@pm.me</guid><pubDate>Tue, 28 Jul 2026 04:24:20 +0000</pubDate></item><item><title>[RFC] [VOTE] Deprecations for PHP 8.6</title><link>https://externals.io/message/132116</link><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I think this should have not been proposed for deprecation yet. There are significant users of it and I just didn't have time to properly look into the issues. So there might be options to get it fixed properly. So I think it should wait till it's properly investigated.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I took a bit of time to actually check what is used, realistically, &lt;br&gt;
beyond keywords presence stats.&lt;/p&gt;
&lt;p&gt;I think there is some data/stats misinterpretation here. Being present &lt;br&gt;
in a code base does not automatically mean it is used.&lt;/p&gt;
&lt;p&gt;For example, Symfony's native http client disable it by default as it &lt;br&gt;
fails/failed to work correctly with stream_select, according to the &lt;br&gt;
inline comment in &lt;br&gt;
&lt;a href="https://github.com/symfony/symfony/blob/bb5999123482057647a0831010d14b6b34fe443c/src/Symfony/Component/HttpClient/NativeHttpClient.php#L227" rel="nofollow" target="_blank"&gt;https://github.com/symfony/symfony/blob/bb5999123482057647a0831010d14b6b34fe443c/src/Symfony/Component/HttpClient/NativeHttpClient.php#L227&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Guzzle and Symfony default to curl too. As curl is optional, I would &lt;br&gt;
be surprised if a large majority of users do not have curl. Even more &lt;br&gt;
surprised as, it is also a composer required dep.&lt;/p&gt;
&lt;p&gt;Some SAPIs or php servers like FrankenPHP take over this as well &lt;br&gt;
before PHP gets a hand on it. Please correct me here if my memory &lt;br&gt;
fails here :)&lt;/p&gt;
&lt;p&gt;From a http &amp;quot;end user&amp;quot; perspective, I would rather define that as &lt;br&gt;
effectively not used.&lt;/p&gt;
&lt;p&gt;The only part the deprecation does not address directly is the &lt;br&gt;
fopen&amp;amp;co internal usages.&lt;/p&gt;
&lt;p&gt;I would go with keeping that deprecation, and if anything went off the &lt;br&gt;
radar, the major frameworks components will surely, or hopefully, &lt;br&gt;
provide the feedback required to revisit this deprecation before RC1.&lt;/p&gt;
&lt;h2&gt;Cheers,&lt;/h2&gt;
&lt;p&gt;Pierre&lt;/p&gt;
&lt;p&gt;@pierrejoye&lt;/p&gt;
</description><guid>CAEZPtU6kbDKceOHgOTWSGn+Pjeq_T_YBcg2c0uwmneTgMK68cA@mail.gmail.com</guid><pubDate>Tue, 28 Jul 2026 03:52:42 +0000</pubDate></item><item><title>[RFC] [Discussion] PREG_THROW_ON_ERROR</title><link>https://externals.io/message/132115</link><description>&lt;p&gt;Hi all,&lt;/p&gt;
&lt;p&gt;Following the earlier pre-RFC discussion ( &lt;br&gt;
&lt;a href="https://news-web.php.net/php.internals/131783" rel="nofollow" target="_blank"&gt;https://news-web.php.net/php.internals/131783&lt;/a&gt;), I've written this up as a &lt;br&gt;
proper RFC: &lt;a href="https://wiki.php.net/rfc/preg_throw_on_error" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/preg_throw_on_error&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Short version:&lt;/p&gt;
&lt;p&gt;a &lt;code&gt;PREG_THROW_ON_ERROR&lt;/code&gt; flag you pass to any &lt;code&gt;preg_*()&lt;/code&gt; call, so a PCRE &lt;br&gt;
error throws a &lt;code&gt;\PregException&lt;/code&gt; you can catch &lt;br&gt;
instead of a warning plus a &lt;code&gt;false&lt;/code&gt; / &lt;code&gt;null&lt;/code&gt; you have to notice and then &lt;br&gt;
chase through &lt;code&gt;preg_last_error()&lt;/code&gt;. &lt;br&gt;
Same thing &lt;code&gt;JSON_THROW_ON_ERROR&lt;/code&gt; and &lt;code&gt;FILTER_THROW_ON_FAILURE&lt;/code&gt; already do &lt;br&gt;
for their functions. &lt;br&gt;
It's opt-in, so nothing changes without the flag.&lt;/p&gt;
&lt;p&gt;The flag only changes how an error is delivered. A call does exactly the &lt;br&gt;
same thing with it or without it, byte for byte. &lt;br&gt;
The only difference is that at the end, any error the call would have &lt;br&gt;
recorded is additionally thrown, carrying the same code and &lt;br&gt;
message &lt;code&gt;preg_last_error()&lt;/code&gt;/&lt;code&gt;preg_last_error_msg()&lt;/code&gt; would report.&lt;/p&gt;
&lt;p&gt;For array arguments that means the flag mirrors &lt;code&gt;preg_last_error()&lt;/code&gt;...it &lt;br&gt;
throws whatever error the same call leaves there, &lt;br&gt;
which for &lt;code&gt;preg_replace()&lt;/code&gt; over an array is the last-processed entry, not &lt;br&gt;
the first. (In the pre-RFC I'd floated throwing on the first failing &lt;br&gt;
element instead). &lt;br&gt;
Whether the &lt;code&gt;preg_*()&lt;/code&gt; functions should stop at the first failing entry is &lt;br&gt;
a separate question about those functions, one that applies with or without &lt;br&gt;
the flag, so it's out of scope here.&lt;/p&gt;
&lt;p&gt;The exception name is settled from the pre-RFC as &lt;code&gt;\PregException&lt;/code&gt; (thanks &lt;br&gt;
Tim) and the flag as &lt;code&gt;PREG_THROW_ON_ERROR&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Target is the next feature release after 8.6 since 8.6's beta1 is too close &lt;br&gt;
for this to conclude discussion and a vote in time.&lt;/p&gt;
&lt;p&gt;I also saw Larry's note asking to hold new business that isn't targeting &lt;br&gt;
8.6 until the freeze rush is over. &lt;br&gt;
This won't catch 8.6, so I'm not asking for any priority while the freeze &lt;br&gt;
is on. But the pre-RFC discussion was already open before &lt;br&gt;
Larry's note, so I'd rather keep it ticking over quietly than restart it in &lt;br&gt;
September. &lt;br&gt;
If someone prefers I park it until then, please say so and I will.&lt;/p&gt;
&lt;p&gt;Implementation and tests: &lt;a href="https://github.com/php/php-src/pull/22797" rel="nofollow" target="_blank"&gt;https://github.com/php/php-src/pull/22797&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thanks, &lt;br&gt;
Osama&lt;/p&gt;
</description><guid>CABE7Eu-to87bSEjBUDOAmR1BkOX=WqyC3GQFdwFdQB2ahLaicw@mail.gmail.com</guid><pubDate>Tue, 28 Jul 2026 00:56:51 +0000</pubDate></item><item><title>[RFC] [VOTE] Deprecations for PHP 8.6</title><link>https://externals.io/message/132114</link><description>&lt;blockquote&gt;
&lt;p&gt;Hi,&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;As announced last week I've opened the vote for the 8.6 mass &lt;br&gt;
deprecation RFC: &lt;br&gt;
&lt;a href="https://wiki.php.net/rfc/deprecations_php_8_6" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/deprecations_php_8_6&lt;/a&gt; &lt;br&gt;
At the time I'm the only one who voted &amp;quot;no&amp;quot; on &lt;br&gt;
&lt;a href="https://wiki.php.net/rfc/deprecations_php_8_6#deprecate_dechunk_filter" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/deprecations_php_8_6#deprecate_dechunk_filter&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;As things currently stand, projects that rely on this functionality &lt;br&gt;
(notably symfony/http-client and php-http/message) will start triggering &lt;br&gt;
deprecation notices in PHP 8.6. There are no plans to expose the &lt;br&gt;
underlying behaviour in an alternative way, despite this concern being &lt;br&gt;
raised during the discussion period.&lt;/p&gt;
&lt;p&gt;I believe we should provide such an alternative together with the &lt;br&gt;
deprecation, rather than expecting projects with 200M+ installations to &lt;br&gt;
&amp;quot;find an alternative, such as decoding it using code written in PHP&amp;quot;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I think this should have not been proposed for deprecation yet. There are &lt;br&gt;
significant users of it and I just didn't have time to properly look into &lt;br&gt;
the issues. So there might be options to get it fixed properly. So I think &lt;br&gt;
it should wait till it's properly investigated.&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;/p&gt;
&lt;p&gt;Jakub&lt;/p&gt;
</description><guid>CAEKnhAHXYo78B1OmiRdTPeg0wKKPXFAkRijiTeKP_ixfqA4iYA@mail.gmail.com</guid><pubDate>Mon, 27 Jul 2026 16:23:53 +0000</pubDate></item><item><title>[RFC] [VOTE] Deprecations for PHP 8.6</title><link>https://externals.io/message/132113</link><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi,&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;As announced last week I've opened the vote for the 8.6 mass &lt;br&gt;
deprecation RFC: &lt;br&gt;
&lt;a href="https://wiki.php.net/rfc/deprecations_php_8_6" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/deprecations_php_8_6&lt;/a&gt; &lt;br&gt;
At the time I'm the only one who voted &amp;quot;no&amp;quot; on &lt;br&gt;
&lt;a href="https://wiki.php.net/rfc/deprecations_php_8_6#deprecate_dechunk_filter" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/deprecations_php_8_6#deprecate_dechunk_filter&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;As things currently stand, projects that rely on this functionality &lt;br&gt;
(notably symfony/http-client and php-http/message) will start triggering &lt;br&gt;
deprecation notices in PHP 8.6. There are no plans to expose the &lt;br&gt;
underlying behaviour in an alternative way, despite this concern being &lt;br&gt;
raised during the discussion period.&lt;/p&gt;
&lt;p&gt;I believe we should provide such an alternative together with the &lt;br&gt;
deprecation, rather than expecting projects with 200M+ installations to &lt;br&gt;
&amp;quot;find an alternative, such as decoding it using code written in PHP&amp;quot;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;On a side note in this &amp;quot;official&amp;quot; thread, I added gd and gd2 image &lt;br&gt;
related functions to the list. I suppose they don't need a vote, as I &lt;br&gt;
don't see them either in the &amp;quot;removed&amp;quot; list. They will effectively not &lt;br&gt;
be available in php 9. And GD itself will do a deprecation warning in &lt;br&gt;
8.7.&lt;/p&gt;
&lt;h2&gt;Cheers,&lt;/h2&gt;
&lt;p&gt;Pierre&lt;/p&gt;
&lt;p&gt;@pierrejoye&lt;/p&gt;
</description><guid>CAEZPtU6q+kD7wLf9H-fXfNOhLySVVhbvc6zEuM0L8MozDWeKDg@mail.gmail.com</guid><pubDate>Mon, 27 Jul 2026 15:30:21 +0000</pubDate></item><item><title>[RFC] [VOTE] Deprecations for PHP 8.6</title><link>https://externals.io/message/132112</link><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;As announced last week I've opened the vote for the 8.6 mass &lt;br&gt;
deprecation RFC: &lt;br&gt;
&lt;a href="https://wiki.php.net/rfc/deprecations_php_8_6" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/deprecations_php_8_6&lt;/a&gt; &lt;br&gt;
At the time I'm the only one who voted &amp;quot;no&amp;quot; on &lt;br&gt;
&lt;a href="https://wiki.php.net/rfc/deprecations_php_8_6#deprecate_dechunk_filter" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/deprecations_php_8_6#deprecate_dechunk_filter&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;As things currently stand, projects that rely on this functionality &lt;br&gt;
(notably symfony/http-client and php-http/message) will start triggering &lt;br&gt;
deprecation notices in PHP 8.6. There are no plans to expose the &lt;br&gt;
underlying behaviour in an alternative way, despite this concern being &lt;br&gt;
raised during the discussion period.&lt;/p&gt;
&lt;p&gt;I believe we should provide such an alternative together with the &lt;br&gt;
deprecation, rather than expecting projects with 200M+ installations to &lt;br&gt;
&amp;quot;find an alternative, such as decoding it using code written in PHP&amp;quot;.&lt;/p&gt;
&lt;p&gt;My 2c.&lt;/p&gt;
&lt;h2&gt;Cheers&lt;/h2&gt;
&lt;p&gt;Matteo Beccati&lt;/p&gt;
</description><guid>587d84ab-f585-41f9-a1af-84fdc2a7c065@beccati.com</guid><pubDate>Mon, 27 Jul 2026 14:07:41 +0000</pubDate></item><item><title>[RFC] [VOTE] Deprecations for PHP 8.6</title><link>https://externals.io/message/132111</link><description>&lt;blockquote&gt;
&lt;p&gt;Hi&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;As announced last week I've opened the vote for the 8.6 mass &lt;br&gt;
deprecation RFC: &lt;br&gt;
&lt;a href="https://wiki.php.net/rfc/deprecations_php_8_6" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/deprecations_php_8_6&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The vote runs for two weeks and will close automatically on the 10th of &lt;br&gt;
August 2026 at 13:00:00 UTC.&lt;/p&gt;
&lt;p&gt;Please remember that the wiki is only capable to handle a single vote &lt;br&gt;
at a time, &lt;br&gt;
so each vote MUST be submitted individually.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It seems the RFC title didn’t make it into the email subject. I'm &lt;br&gt;
sending this reply to fix the Subject for proper visibility. It's still &lt;br&gt;
before 13 UTC, so there's still two full week for the vote.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;and even if it was not, we should allow it.&lt;/p&gt;
&lt;p&gt;If we would not, it would be a complete non sense and we need to sit down &lt;br&gt;
to sort this out :)&lt;/p&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;-- &lt;br&gt;
Pierre&lt;/p&gt;
&lt;p&gt;@pierrejoye&lt;/p&gt;
</description><guid>CAEZPtU5Q2VzZ55K-uV94FqS0+=pt3q=MzhQ3v7UJ-o6QWjUsRQ@mail.gmail.com</guid><pubDate>Mon, 27 Jul 2026 13:43:38 +0000</pubDate></item><item><title>[RFC] [VOTE] Deprecations for PHP 8.6</title><link>https://externals.io/message/132110</link><description>&lt;blockquote&gt;
&lt;p&gt;Hi&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;As announced last week I've opened the vote for the 8.6 mass &lt;br&gt;
deprecation RFC: &lt;br&gt;
&lt;a href="https://wiki.php.net/rfc/deprecations_php_8_6" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/deprecations_php_8_6&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The vote runs for two weeks and will close automatically on the 10th of &lt;br&gt;
August 2026 at 13:00:00 UTC.&lt;/p&gt;
&lt;p&gt;Please remember that the wiki is only capable to handle a single vote &lt;br&gt;
at a time, &lt;br&gt;
so each vote MUST be submitted individually.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It seems the RFC title didn’t make it into the email subject. I'm &lt;br&gt;
sending this reply to fix the Subject for proper visibility. It's still &lt;br&gt;
before 13 UTC, so there's still two full week for the vote.&lt;/p&gt;
&lt;p&gt;Best regards &lt;br&gt;
Tim Düsterhus&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I have missed the &amp;quot;Deprecate &lt;code&gt;define()&lt;/code&gt; with $case_insensitive being &lt;br&gt;
specified&amp;quot; before it went to vote, but I wonder why do we need to &lt;br&gt;
deprecate it. If the feature is gone and the deprecation happened &lt;br&gt;
already in the past, then what's left is just to clean it up by &lt;br&gt;
removing the redundant parameter. By removing the parameter we cannot &lt;br&gt;
break any userland code, so modifying the warning message won't help &lt;br&gt;
with anything.&lt;/p&gt;
</description><guid>CAGBsUrdg3W+34xk05qNCoBvuz9_e5Gt8TW30OnMgi_UHxhV5TA@mail.gmail.com</guid><pubDate>Mon, 27 Jul 2026 13:22:13 +0000</pubDate></item><item><title>[RFC] [VOTE] Deprecations for PHP 8.6</title><link>https://externals.io/message/132109</link><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;As announced last week I've opened the vote for the 8.6 mass &lt;br&gt;
deprecation RFC: &lt;br&gt;
&lt;a href="https://wiki.php.net/rfc/deprecations_php_8_6" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/deprecations_php_8_6&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The vote runs for two weeks and will close automatically on the 10th of &lt;br&gt;
August 2026 at 13:00:00 UTC.&lt;/p&gt;
&lt;p&gt;Please remember that the wiki is only capable to handle a single vote &lt;br&gt;
at a time, &lt;br&gt;
so each vote MUST be submitted individually.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It seems the RFC title didn’t make it into the email subject. I'm &lt;br&gt;
sending this reply to fix the Subject for proper visibility. It's still &lt;br&gt;
before 13 UTC, so there's still two full week for the vote.&lt;/p&gt;
&lt;p&gt;Best regards &lt;br&gt;
Tim Düsterhus&lt;/p&gt;
</description><guid>4ef24c4fab77412904e1ce69fdf49440@bastelstu.be</guid><pubDate>Mon, 27 Jul 2026 12:46:14 +0000</pubDate></item><item><title>[RFC] [VOTE]</title><link>https://externals.io/message/132108</link><description>&lt;p&gt;Hello internals,&lt;/p&gt;
&lt;p&gt;As announced last week I've opened the vote for the 8.6 mass deprecation RFC: &lt;br&gt;
&lt;a href="https://wiki.php.net/rfc/deprecations_php_8_6" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/deprecations_php_8_6&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The vote runs for two weeks and will close automatically on the 10th of August 2026 at 13:00:00 UTC.&lt;/p&gt;
&lt;p&gt;Please remember that the wiki is only capable to handle a single vote at a time, &lt;br&gt;
so each vote MUST be submitted individually.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Gina P. Banyard&lt;/p&gt;
</description><guid>jMUQ3GyN5HfKZQ-sWRPucSGlzzPCqU5AgD1unrJtaYeHhw9-PvMxhzPY1hyEo-VYuWuC1QQlGZS5UdU_WlEbZ-geJ9GwHF7gri1HTEt9ShM=@gpb.moe</guid><pubDate>Mon, 27 Jul 2026 10:31:53 +0000</pubDate></item><item><title>Disallow newlines in CURLOPT_HTTPHEADER</title><link>https://externals.io/message/132107</link><description>&lt;p&gt;Hi Sjoerd,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Given that Daniel Stenberg has said that newlines are not permitted, and is currently developing a pull request to reject them, does this change your view on whether PHP should reject newlines in headers passed to curl? Do you think I still need an RFC for this functionality?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;My point of view is that libcurl will eventually take care of it. No pressing need to do anything on our side.&lt;/p&gt;
&lt;h2&gt;Cheers&lt;/h2&gt;
&lt;p&gt;Matteo Beccati&lt;/p&gt;
</description><guid>24f923a4-feeb-4c00-b1a3-a37bd4920575@app.fastmail.com</guid><pubDate>Mon, 27 Jul 2026 10:12:40 +0000</pubDate></item><item><title>Disallow newlines in CURLOPT_HTTPHEADER</title><link>https://externals.io/message/132106</link><description>&lt;p&gt;Hi Jorg, Matteo,&lt;/p&gt;
&lt;p&gt;I wrote earlier:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It seems to me that this is exactly a case where this policy applies: &lt;a href="https://wiki.php.net/rfc/policy-exempt-type-value-error-bc-policy" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/policy-exempt-type-value-error-bc-policy&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;and:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I asked Daniel Stenberg about whether newlines are allowed in headers, &lt;br&gt;
and he said:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The documentation says in clear terms:&lt;/p&gt;
&lt;p&gt;The headers included in the linked list must not be CRLF-terminated&lt;/p&gt;
&lt;p&gt;I believe libcurl might change its treatment of them in a future and &lt;br&gt;
start &lt;br&gt;
returning error earlier when such octets are found.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Though I'm also seeing &lt;a href="https://github.com/curl/curl/pull/22309" rel="nofollow" target="_blank"&gt;https://github.com/curl/curl/pull/22309&lt;/a&gt;, which I &lt;br&gt;
think concludes the question.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Given that Daniel Stenberg has said that newlines are not permitted, and is currently developing a pull request to reject them, does this change your view on whether PHP should reject newlines in headers passed to curl? Do you think I still need an RFC for this functionality?&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Sjoerd Langkemper&lt;/p&gt;
</description><guid>fc497f89-9e03-4d4c-a0fa-8d1853de23a9@app.fastmail.com</guid><pubDate>Mon, 27 Jul 2026 09:21:10 +0000</pubDate></item><item><title>[PHP8.6] Soft feature freeze in 2 weeks</title><link>https://externals.io/message/132105</link><description>&lt;p&gt;Hi everyone,&lt;/p&gt;
&lt;p&gt;This is the two‑week reminder that the PHP 8.6 beta1 release is &lt;br&gt;
approaching on Thursday, August 13, 2026.&lt;/p&gt;
&lt;p&gt;The soft feature freeze happens two days earlier, on Tuesday, August 11, &lt;br&gt;
when the beta1 tag is created. During the beta period, all features &lt;br&gt;
(whether they require an RFC or not) may still be merged, but only with &lt;br&gt;
Release Manager approval.&lt;/p&gt;
&lt;p&gt;Under the updated release process, beta1 is the deadline for all RFCs &lt;br&gt;
targeting PHP 8.6 to be fully decided. Any RFC intended for inclusion in &lt;br&gt;
PHP 8.6 must have its discussion concluded and its voting closed before &lt;br&gt;
August 13. New RFCs must therefore not target PHP 8.6.&lt;/p&gt;
&lt;p&gt;The hard feature freeze occurs when RC1 is tagged on September 22, 2026. &lt;br&gt;
After the hard feature freeze, no new features may be accepted. The &lt;br&gt;
focus should shift entirely to fixing bugs, improving tests, and &lt;br&gt;
preparing documentation for all accepted features.&lt;/p&gt;
&lt;p&gt;The full schedule is available at: &lt;br&gt;
&lt;a href="https://wiki.php.net/todo/php86" rel="nofollow" target="_blank"&gt;https://wiki.php.net/todo/php86&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thank you all for your continued work and contributions.&lt;/p&gt;
&lt;p&gt;Your 8.6 RMs, &lt;br&gt;
Matteo, Joe, and Daniel&lt;/p&gt;
</description><guid>e62259a7-d18a-4c5e-827c-1e6f78983617@php.net</guid><pubDate>Mon, 27 Jul 2026 07:43:03 +0000</pubDate></item><item><title>[RFC] [VOTE] Literal Scalar Types</title><link>https://externals.io/message/132104</link><description>&lt;p&gt;Hey Juris,&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Hello internals,&lt;/p&gt;
&lt;p&gt;I am retracting this vote: I opened it prematurely, in violation of &lt;br&gt;
the voting prerequisites in the Feature Proposals policy. I did not &lt;br&gt;
post an Intent to Vote message at least two days in advance, and &lt;br&gt;
today's 1.0 update to the RFC text is a Minor change announcement, &lt;br&gt;
which starts a seven-day Cooldown Period during which no vote may be &lt;br&gt;
called.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hey all,&lt;/p&gt;
&lt;p&gt;I'm a frequent reader/follower of this list as well as an occasional &lt;br&gt;
participant and a one-time RFC-attempter. As such I never felt like &lt;br&gt;
I'm &amp;quot;internal enough&amp;quot; to comment on the process. But since no one else &lt;br&gt;
seems to be bothered by it, I would like to bring this up after all...&lt;/p&gt;
&lt;p&gt;The &amp;quot;new&amp;quot; process (&lt;a href="https://wiki.php.net/rfc/rfc_discussion_and_vote" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/rfc_discussion_and_vote&lt;/a&gt;) &lt;br&gt;
feels very discouraging to me. All the mandatory cooldowns, cooldown &lt;br&gt;
resets on minor changes, announcements to vote, cooldown resets on &lt;br&gt;
inactive discussions appears to me like bureaucratic hoops that people &lt;br&gt;
have to jump through. The process was hard and daunting enough before &lt;br&gt;
this.&lt;/p&gt;
&lt;p&gt;I understand the extremes that the rules are preventing like someone &lt;br&gt;
suddenly launching a vote for an RFC that has been dormant for 20 &lt;br&gt;
months. But in practice many of the mandatory cooldown resets, &lt;br&gt;
activity bumps and other formal messages appear like only serving the &lt;br&gt;
process. This case in particular feels very disappointing to me. The &lt;br&gt;
discussion was done, the RFC text got finalized and it was a great &lt;br&gt;
point in time to launch the vote on the finalized RFC. I see no &lt;br&gt;
benefit of this setback of another week.&lt;/p&gt;
&lt;p&gt;BR, &lt;br&gt;
Juris&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I fully agree on this, and that's why I voted against that proposal back &lt;br&gt;
then.&lt;/p&gt;
&lt;p&gt;On the other hand, we seem to have some contributors, who, sort of &lt;br&gt;
intentionally want to slow down this, to not have the list overloaded &lt;br&gt;
and have ample time to catch up with everything.&lt;/p&gt;
&lt;p&gt;You sort of have to decide what you optimize for - easier for authors, &lt;br&gt;
or easier for commenters. But I think in this case it went way overboard &lt;br&gt;
in terms of strictness.&lt;/p&gt;
&lt;p&gt;Bob&lt;/p&gt;
</description><guid>AMBPR07MB12024BB4CE256328040629F6CE2CD2@AMBPR07MB12024.eurprd07.prod.outlook.com</guid><pubDate>Sun, 26 Jul 2026 18:58:36 +0000</pubDate></item><item><title>[RFC] [VOTE] Literal Scalar Types</title><link>https://externals.io/message/132103</link><description>&lt;blockquote&gt;
&lt;p&gt;Hello internals,&lt;/p&gt;
&lt;p&gt;I am retracting this vote: I opened it prematurely, in violation of the &lt;br&gt;
voting prerequisites in the Feature Proposals policy. I did not post an &lt;br&gt;
Intent to Vote message at least two days in advance, and today's 1.0 &lt;br&gt;
update to the RFC text is a Minor change announcement, which starts a &lt;br&gt;
seven-day Cooldown Period during which no vote may be called.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hey all,&lt;/p&gt;
&lt;p&gt;I'm a frequent reader/follower of this list as well as an occasional &lt;br&gt;
participant and a one-time RFC-attempter. As such I never felt like I'm &lt;br&gt;
&amp;quot;internal enough&amp;quot; to comment on the process. But since no one else seems &lt;br&gt;
to be bothered by it, I would like to bring this up after all...&lt;/p&gt;
&lt;p&gt;The &amp;quot;new&amp;quot; process (&lt;a href="https://wiki.php.net/rfc/rfc_discussion_and_vote" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/rfc_discussion_and_vote&lt;/a&gt;) &lt;br&gt;
feels very discouraging to me. All the mandatory cooldowns, cooldown &lt;br&gt;
resets on minor changes, announcements to vote, cooldown resets on &lt;br&gt;
inactive discussions appears to me like bureaucratic hoops that people &lt;br&gt;
have to jump through. The process was hard and daunting enough before &lt;br&gt;
this.&lt;/p&gt;
&lt;p&gt;I understand the extremes that the rules are preventing like someone &lt;br&gt;
suddenly launching a vote for an RFC that has been dormant for 20 &lt;br&gt;
months. But in practice many of the mandatory cooldown resets, activity &lt;br&gt;
bumps and other formal messages appear like only serving the process. &lt;br&gt;
This case in particular feels very disappointing to me. The discussion &lt;br&gt;
was done, the RFC text got finalized and it was a great point in time to &lt;br&gt;
launch the vote on the finalized RFC. I see no benefit of this setback &lt;br&gt;
of another week.&lt;/p&gt;
&lt;p&gt;BR, &lt;br&gt;
Juris&lt;/p&gt;
</description><guid>ee21f7a6d7b7a8111c228fc39110b95b@glaive.pro</guid><pubDate>Sun, 26 Jul 2026 18:15:55 +0000</pubDate></item><item><title>[RFC][VOTE] Allow Object Property Writes on Objects Referenced by Constants</title><link>https://externals.io/message/132102</link><description>&lt;p&gt;Hi internals,&lt;/p&gt;
&lt;p&gt;I am opening the vote for the RFC &lt;em&gt;“Allow Object Property Writes on Objects &lt;br&gt;
Referenced by Constants.”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;RFC and voting: &lt;a href="https://wiki.php.net/rfc/const_object_property_write" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/const_object_property_write&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The vote will remain open for the standard two-week period and will close &lt;br&gt;
on &lt;em&gt;Saturday, August 8, 2026, at 23:59 UTC&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I would like to thank everyone who participated in the discussion and &lt;br&gt;
provided feedback. The comments and suggestions helped improve the proposal.&lt;/p&gt;
&lt;p&gt;Best regards, &lt;br&gt;
__&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Khaled Alam&lt;/em&gt;&lt;/p&gt;
</description><guid>CAJS5taDYPGYmck1kQ3XMLEQoig2c70Gosq8OZAxKWRYzqcqqug@mail.gmail.com</guid><pubDate>Sat, 25 Jul 2026 17:21:37 +0000</pubDate></item><item><title>[php-src] PR #20903: GH-10497 (const obj-&gt;prop write) - language change notes</title><link>https://externals.io/message/132101</link><description>&lt;p&gt;Hi Khaled&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;As announced previously, I am now opening the vote for the RFC &lt;em&gt;“Allow &lt;br&gt;
Object Property Writes on Objects Referenced by Constants.”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;RFC and voting: &lt;a href="https://wiki.php.net/rfc/const_object_property_write" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/const_object_property_write&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The vote will remain open for the standard two-week period and will &lt;br&gt;
close on &lt;em&gt;Saturday, August 8, 2026, at 23:59 UTC&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I would like to thank everyone who participated in the discussion and &lt;br&gt;
provided feedback. The comments and suggestions helped improve the &lt;br&gt;
proposal considerably.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You seem to be missing the abstain option, which is mandatory since &lt;br&gt;
&lt;a href="https://wiki.php.net/rfc/rfc_vote_abstain" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/rfc_vote_abstain&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ilija&lt;/p&gt;
</description><guid>40a7955e-903f-48a6-bfb6-e101f2322faa@gmail.com</guid><pubDate>Sat, 25 Jul 2026 15:07:19 +0000</pubDate></item><item><title>[php-src] PR #20903: GH-10497 (const obj-&gt;prop write) - language change notes</title><link>https://externals.io/message/132100</link><description>&lt;p&gt;Hey Khaled&lt;/p&gt;
&lt;p&gt;Am 25.07.2026 um 15:48 schrieb Khaled Alam &lt;a href="mailto:khaledalam.net@gmail.com"&gt;khaledalam.net@gmail.com&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;Hi internals,&lt;/p&gt;
&lt;p&gt;As announced previously, I am now opening the vote for the RFC “Allow Object Property Writes on Objects Referenced by Constants.”&lt;/p&gt;
&lt;p&gt;RFC and voting: &lt;a href="https://wiki.php.net/rfc/const_object_property_write" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/const_object_property_write&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The vote will remain open for the standard two-week period and will close on Saturday, August 8, 2026, at 23:59 UTC.&lt;/p&gt;
&lt;p&gt;I would like to thank everyone who participated in the discussion and provided feedback. The comments and suggestions helped improve the proposal considerably.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;__ &lt;br&gt;
Khaled Alam&lt;/p&gt;
&lt;p&gt;Could you please re-submit this mail in its own thread? &lt;br&gt;
Titled &amp;quot;[RFC][VOTE] Allow Object Property Writes on Objects Referenced by Constants&amp;quot;&lt;/p&gt;
&lt;p&gt;This gives it the correct visibility. Thank you!&lt;/p&gt;
&lt;p&gt;Bob&lt;/p&gt;
</description><guid>EED45BEF-BA1B-4A86-B76F-BC0FDF73B236@hotmail.com</guid><pubDate>Sat, 25 Jul 2026 14:22:01 +0000</pubDate></item><item><title>[php-src] PR #20903: GH-10497 (const obj-&gt;prop write) - language change notes</title><link>https://externals.io/message/132099</link><description>&lt;p&gt;Hi internals,&lt;/p&gt;
&lt;p&gt;As announced previously, I am now opening the vote for the RFC &lt;em&gt;“Allow &lt;br&gt;
Object Property Writes on Objects Referenced by Constants.”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;RFC and voting: &lt;a href="https://wiki.php.net/rfc/const_object_property_write" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/const_object_property_write&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The vote will remain open for the standard two-week period and will close &lt;br&gt;
on &lt;em&gt;Saturday, August 8, 2026, at 23:59 UTC&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I would like to thank everyone who participated in the discussion and &lt;br&gt;
provided feedback. The comments and suggestions helped improve the proposal &lt;br&gt;
considerably.&lt;/p&gt;
&lt;p&gt;Best regards, &lt;br&gt;
__&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Khaled Alam&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;On Sat, Jul 18, 2026 at 2:39 AM Khaled Alam &lt;a href="mailto:khaledalam.net@gmail.com"&gt;khaledalam.net@gmail.com&lt;/a&gt; &lt;br&gt;
wrote:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi Tim and internals,&lt;/p&gt;
&lt;p&gt;Thank you all for the feedback and discussion on the &amp;quot;Const object &lt;br&gt;
property write&amp;quot; RFC over the past weeks&lt;/p&gt;
&lt;p&gt;The RFC text has been stable since last weekend, and I believe the &lt;br&gt;
remaining questions have been addressed.&lt;/p&gt;
&lt;p&gt;I therefore intend to open the vote on Saturday, July 25th. The voting &lt;br&gt;
period will run for the standard two weeks.&lt;/p&gt;
&lt;p&gt;This gives us time to complete the vote and merge in time for the PHP 8.6 &lt;br&gt;
feature freeze.&lt;/p&gt;
&lt;p&gt;RFC: &lt;a href="https://wiki.php.net/rfc/const_object_property_write" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/const_object_property_write&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If there are any final objections or concerns that should be resolved &lt;br&gt;
before the vote opens, please raise them in the next few days so I can &lt;br&gt;
address them before Saturday.&lt;/p&gt;
&lt;p&gt;Best regards, &lt;br&gt;
__&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Khaled Alam&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Thanks for catching these. I removed the accidental duplicate voting &lt;br&gt;
content and added the RFC to the “Under Discussion” section of the RFC &lt;br&gt;
overview page.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Thank you. You missed the status in the RFC itself, which I have now &lt;br&gt;
done for you:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://wiki.php.net/rfc/const_object_property_write?do=diff&amp;amp;rev2%5B0%5D=1783766078&amp;amp;rev2%5B1%5D=1783951590&amp;amp;difftype=sidebyside" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/const_object_property_write?do=diff&amp;amp;rev2%5B0%5D=1783766078&amp;amp;rev2%5B1%5D=1783951590&amp;amp;difftype=sidebyside&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I consider your change on Saturday to be the last (major) change to the &lt;br&gt;
RFC. You may then open the vote on on July 25th. Vote must start no &lt;br&gt;
later than July 28th to meet the deadline for PHP 8.6. Don't forget to &lt;br&gt;
send the “intent to vote” 2-7 days before actually starting the vote.&lt;/p&gt;
&lt;p&gt;Best regards &lt;br&gt;
Tim Düsterhus&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
</description><guid>CAJS5taBVSn6tW6XEkFukpRZpsiNzyrorO0=4+ZfJ2eR-KkKwjA@mail.gmail.com</guid><pubDate>Sat, 25 Jul 2026 13:48:56 +0000</pubDate></item><item><title>Stream Error Degradation: They're now missing what can't be opened</title><link>https://externals.io/message/132098</link><description>&lt;blockquote&gt;
&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Since the last few days, some of my tests for Xdebug started failing &lt;br&gt;
with latest master: &lt;a href="https://xdebug.org/ci?r=2026-07-24-03-30-01@master" rel="nofollow" target="_blank"&gt;https://xdebug.org/ci?r=2026-07-24-03-30-01@master&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Through commit &lt;a href="https://github.com/php/php-src/commit/34c686a5b4ef" rel="nofollow" target="_blank"&gt;https://github.com/php/php-src/commit/34c686a5b4ef&lt;/a&gt;, the &lt;br&gt;
filenames and dirnames are removed as argument, from the warnings/errors &lt;br&gt;
to include, require, etc — as a result of &lt;br&gt;
&lt;a href="https://wiki.php.net/rfc/display_error_function_args" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/display_error_function_args&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;While that is perhaps a noble goal, not showing which file couldn't be &lt;br&gt;
included in many situations, such as:&lt;/p&gt;
&lt;p&gt;Warning: include(): Failed to open stream: No such file or directory in %sinclude_path.php on line %d &lt;br&gt;
Warning: require_once(): Failed to open stream: No such file or directory in /tmp/ptester-1001/thread/12/master/tmp-xdebug/tests/base/bug02307-002.php on line 9&lt;/p&gt;
&lt;p&gt;And also in many other functions:&lt;/p&gt;
&lt;p&gt;Warning: bzopen(): Failed to open stream: No such file or directory in %s on line %d &lt;br&gt;
Warning: dba_open(): Failed to open stream: No such file or directory in %s on line %d &lt;br&gt;
Warning: &lt;code&gt;finfo_open()&lt;/code&gt;: Failed to open stream: No such file or directory in %s on line %d &lt;br&gt;
Warning: imagecreatefrompng(): Failed to open stream: No such file or directory in %s on line %d&lt;/p&gt;
&lt;p&gt;Doesn't seem to me like an enhanced for users, which would likely very &lt;br&gt;
much to know which file is being included/required/bzopen'ed, etc.&lt;/p&gt;
&lt;p&gt;I think we ought to fix this situations by included the file/directory &lt;br&gt;
that can't be opened in the error messages themselves. Or if that is not &lt;br&gt;
possible, then I would probably suggest to revert this change (even &lt;br&gt;
though it was RFC'ed) until there is a possibility for not degrading the &lt;br&gt;
usefulness of our error messages.&lt;/p&gt;
&lt;p&gt;cheers, &lt;br&gt;
Derick&lt;/p&gt;
&lt;p&gt;-- &lt;br&gt;
&lt;a href="https://derickrethans.nl" rel="nofollow" target="_blank"&gt;https://derickrethans.nl&lt;/a&gt; | &lt;a href="https://xdebug.org" rel="nofollow" target="_blank"&gt;https://xdebug.org&lt;/a&gt; | &lt;a href="https://xdebug.cloud" rel="nofollow" target="_blank"&gt;https://xdebug.cloud&lt;/a&gt; &lt;br&gt;
Author of Xdebug. Like it? Consider supporting me: &lt;a href="https://xdebug.org/support" rel="nofollow" target="_blank"&gt;https://xdebug.org/support&lt;/a&gt; &lt;br&gt;
mastodon: @&lt;a href="mailto:derickr@phpc.social" rel="nofollow" target="_blank"&gt;derickr@phpc.social&lt;/a&gt; @&lt;a href="mailto:xdebug@phpc.social" rel="nofollow" target="_blank"&gt;xdebug@phpc.social&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I think it's better the way it is now. The file path could leak &lt;br&gt;
sensitive information, and having the option to control when it is &lt;br&gt;
included in the error message is a good idea. However, the path is &lt;br&gt;
already included in some error messages, so if we want to align the &lt;br&gt;
behaviour that way, we can include the path in all stream error &lt;br&gt;
messages. But I am against reverting the change from the commit.&lt;/p&gt;
&lt;p&gt;FWIW, I always hated the stream warnings. In many situations, they &lt;br&gt;
duplicate the error from the main operation, and they don't provide &lt;br&gt;
meaningful information. For example, include already throws a warning &lt;br&gt;
with the name of the file being included. If the open_basedir is in &lt;br&gt;
effect, you will actually get 3 warnings for a single failure. Streams &lt;br&gt;
shouldn't be raising their own warnings and instead return an error &lt;br&gt;
code to the caller so that the caller can raise an appropriate &lt;br&gt;
message.&lt;/p&gt;
</description><guid>CAGBsUrez_MNL=sqRo9LAS=ac8jULZjq8FPD2zZzVQ_tQJTbpww@mail.gmail.com</guid><pubDate>Fri, 24 Jul 2026 11:37:49 +0000</pubDate></item><item><title>Stream Error Degradation: They're now missing what can't be opened</title><link>https://externals.io/message/132097</link><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Since the last few days, some of my tests for Xdebug started failing &lt;br&gt;
with latest master: &lt;a href="https://xdebug.org/ci?r=2026-07-24-03-30-01@master" rel="nofollow" target="_blank"&gt;https://xdebug.org/ci?r=2026-07-24-03-30-01@master&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Through commit &lt;a href="https://github.com/php/php-src/commit/34c686a5b4ef" rel="nofollow" target="_blank"&gt;https://github.com/php/php-src/commit/34c686a5b4ef&lt;/a&gt;, the &lt;br&gt;
filenames and dirnames are removed as argument, from the warnings/errors &lt;br&gt;
to include, require, etc — as a result of &lt;br&gt;
&lt;a href="https://wiki.php.net/rfc/display_error_function_args" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/display_error_function_args&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;While that is perhaps a noble goal, not showing which file couldn't be &lt;br&gt;
included in many situations, such as:&lt;/p&gt;
&lt;p&gt;Warning: include(): Failed to open stream: No such file or directory in %sinclude_path.php on line %d &lt;br&gt;
Warning: require_once(): Failed to open stream: No such file or directory in /tmp/ptester-1001/thread/12/master/tmp-xdebug/tests/base/bug02307-002.php on line 9&lt;/p&gt;
&lt;p&gt;And also in many other functions:&lt;/p&gt;
&lt;p&gt;Warning: bzopen(): Failed to open stream: No such file or directory in %s on line %d &lt;br&gt;
Warning: dba_open(): Failed to open stream: No such file or directory in %s on line %d &lt;br&gt;
Warning: &lt;code&gt;finfo_open()&lt;/code&gt;: Failed to open stream: No such file or directory in %s on line %d &lt;br&gt;
Warning: imagecreatefrompng(): Failed to open stream: No such file or directory in %s on line %d&lt;/p&gt;
&lt;p&gt;Doesn't seem to me like an enhanced for users, which would likely very &lt;br&gt;
much to know which file is being included/required/bzopen'ed, etc.&lt;/p&gt;
&lt;p&gt;I think we ought to fix this situations by included the file/directory &lt;br&gt;
that can't be opened in the error messages themselves. Or if that is not &lt;br&gt;
possible, then I would probably suggest to revert this change (even &lt;br&gt;
though it was RFC'ed) until there is a possibility for not degrading the &lt;br&gt;
usefulness of our error messages.&lt;/p&gt;
&lt;p&gt;cheers, &lt;br&gt;
Derick&lt;/p&gt;
&lt;p&gt;-- &lt;br&gt;
&lt;a href="https://derickrethans.nl" rel="nofollow" target="_blank"&gt;https://derickrethans.nl&lt;/a&gt; | &lt;a href="https://xdebug.org" rel="nofollow" target="_blank"&gt;https://xdebug.org&lt;/a&gt; | &lt;a href="https://xdebug.cloud" rel="nofollow" target="_blank"&gt;https://xdebug.cloud&lt;/a&gt; &lt;br&gt;
Author of Xdebug. Like it? Consider supporting me: &lt;a href="https://xdebug.org/support" rel="nofollow" target="_blank"&gt;https://xdebug.org/support&lt;/a&gt; &lt;br&gt;
mastodon: @&lt;a href="mailto:derickr@phpc.social" rel="nofollow" target="_blank"&gt;derickr@phpc.social&lt;/a&gt; @&lt;a href="mailto:xdebug@phpc.social" rel="nofollow" target="_blank"&gt;xdebug@phpc.social&lt;/a&gt;&lt;/p&gt;
</description><guid>07c0c481-e641-76a1-2ebb-3726fe298e5a@php.net</guid><pubDate>Fri, 24 Jul 2026 10:51:37 +0000</pubDate></item><item><title>[VOTE] Readonly Property Defaults</title><link>https://externals.io/message/132096</link><description>&lt;p&gt;Hey everyone,&lt;/p&gt;
&lt;p&gt;I just opened voting on the &amp;quot;Readonly Property Defaults&amp;quot; RFC.&lt;/p&gt;
&lt;p&gt;Wiki Page: &lt;a href="https://wiki.php.net/rfc/readonly_property_defaults" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/readonly_property_defaults&lt;/a&gt; &lt;br&gt;
Discussion Thread: &lt;a href="https://news-web.php.net/php.internals/131760" rel="nofollow" target="_blank"&gt;https://news-web.php.net/php.internals/131760&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The RFC has one primary vote requiring a 2/3 majority to accept the &lt;br&gt;
proposal.&lt;/p&gt;
&lt;p&gt;Voting closes 2026-08-07 05:15:00 UTC.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Cheers &lt;br&gt;
Nick&lt;/p&gt;
</description><guid>aaf01fe0-e86e-4ccd-9fe0-6fe074914915@nicksdot.dev</guid><pubDate>Fri, 24 Jul 2026 05:22:33 +0000</pubDate></item><item><title>[RFC] Pipe Assignment Operator</title><link>https://externals.io/message/132095</link><description>&lt;blockquote&gt;
&lt;p&gt;Hi internals, &lt;br&gt;
I'd like to open discussion on my (first!) RFC for the pipe assignment operator (|&amp;gt;=): &lt;br&gt;
&lt;a href="https://wiki.php.net/rfc/pipe_assignment_operator" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/pipe_assignment_operator&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It adds a compound assignment form of the pipe operator, so that &lt;br&gt;
$x |&amp;gt;= callable is shorthand for $x = $x |&amp;gt; callable, with &lt;br&gt;
support for chaining. Implementation with tests is at: &lt;br&gt;
&lt;a href="https://github.com/php/php-src/pull/22633" rel="nofollow" target="_blank"&gt;https://github.com/php/php-src/pull/22633&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Looking forward to your feedback.&lt;/p&gt;
&lt;p&gt;Thanks! &lt;br&gt;
Caleb&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hi folks,&lt;/p&gt;
&lt;p&gt;The discussion started 2026-07-09, last minor change was 2026-07-21 04:21 UTC; &lt;br&gt;
therefore, the 7-day cooldown expires at 2026-07-28 04:21 UTC.&lt;/p&gt;
&lt;p&gt;I intend to open voting on the Pipe Assignment Operator RFC on &lt;br&gt;
2026-07-28 at ~04:30 UTC.&lt;/p&gt;
&lt;p&gt;Thanks to everyone who provided feedback during discussion.&lt;/p&gt;
&lt;p&gt;Best, &lt;br&gt;
Caleb&lt;/p&gt;
</description><guid>Vdgkx1ErE6pWjfvgJuRkEiYfn6mQwSZAmqz2865g80UjVa7xYRPc0XmK9r6ia8iopq8GsCaIOtzJEF1d6-jm4fG8r665ayqNIMWURtA6Lkg=@pm.me</guid><pubDate>Thu, 23 Jul 2026 11:24:09 +0000</pubDate></item><item><title>[RFC] [DISCUSSION] ext/gd 2.4 — codec sync, Gd\* OOP API, 2D vector/canvas</title><link>https://externals.io/message/132094</link><description>&lt;p&gt;Hi Pierre,&lt;/p&gt;
&lt;p&gt;I should probably make this my last reply in this thread and see if others have anything to add, but I wanted to pick up on one point:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It makes it as nothing is being actually reviewed but rejected &lt;br&gt;
straight down due to policies. Hence my bureaucracy statement.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I think if this was a small RFC, and people were refusing to read it because of a technicality, that criticism would be justified.&lt;/p&gt;
&lt;p&gt;But I'm not sure it's entirely fair in this case. There are maybe twenty sections describing details of the proposal, and the crude &amp;quot;reading time&amp;quot; estimate in Firefox is 47-60 minutes. It may be clear in your head that most of this is uncontroversial, but for anyone else to even make that judgement requires investing a reasonable amount of time.&lt;/p&gt;
&lt;p&gt;For many people, spending that time means spending less time on a different discussion. So it's not necessarily about bureaucracy, but a pragmatic decision: it's better to spend time now discussing proposals which are definitely targeting 8.6, and spend time later on proposals which will end up in 8.7.&lt;/p&gt;
&lt;p&gt;That trade-off changes if we need to spend time deciding on the target version based on the content of each proposal, which is why I support the idea of a simple rule that everyone agrees in advance.&lt;/p&gt;
&lt;p&gt;I do think there's an entirely separate question of &lt;em&gt;when&lt;/em&gt; that hard cut-off should be. Should RFCs be allowed all the way through the alpha period? Should the alpha period be shorter, or later in some way? I've never been involved enough in the process to answer those questions.&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Rowan Tommins &lt;br&gt;
[IMSoP]&lt;/p&gt;
</description><guid>58523C00-D2B6-4FCB-A4EC-9F777EF494B6@rwec.co.uk</guid><pubDate>Thu, 23 Jul 2026 11:23:27 +0000</pubDate></item><item><title>[RFC] Concurrency Support in the PHP Engine</title><link>https://externals.io/message/132093</link><description>&lt;p&gt;Hi Seifeddine,&lt;/p&gt;
&lt;p&gt;Yes, perhaps this discussion has started a bit too early. But there's &lt;br&gt;
no rush. I think waiting a couple of months is perfectly fine.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Regarding the note that this &amp;quot;would later let &lt;code&gt;ob_start()&lt;/code&gt; and friends become coroutine-safe,&amp;quot; &lt;br&gt;
I just wanted to mention that the possibility has been considered in &lt;br&gt;
advance. Whether to actually use it or not can always be decided in a &lt;br&gt;
separate RFC. &lt;br&gt;
What's important to me is that this RFC doesn't rule out that possibility.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Regards, Ed&lt;/p&gt;
</description><guid>CAMW7n8ATc-o9YA+vXdRbz1+5PhBBFSsYf0o21+D3KxFDOrCm=A@mail.gmail.com</guid><pubDate>Thu, 23 Jul 2026 10:06:41 +0000</pubDate></item><item><title>[RFC] Concurrency Support in the PHP Engine</title><link>https://externals.io/message/132092</link><description>&lt;blockquote&gt;
&lt;p&gt;Hi internals,&lt;/p&gt;
&lt;p&gt;I would like to open the discussion of a new RFC:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://wiki.php.net/rfc/async_scheduler_abi" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/async_scheduler_abi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The proposal gives the engine a coroutine representation and makes the &lt;br&gt;
component that drives coroutines, the scheduler, pluggable by an &lt;br&gt;
extension. It adds no classes, no functions, no constants and no &lt;br&gt;
syntax: the engine compiles in no PHP symbols at all. With no scheduler &lt;br&gt;
registered, PHP behaves exactly as it does today.&lt;/p&gt;
&lt;p&gt;This is not the True Async RFC. It is the minimal engine core extracted &lt;br&gt;
from that work: the activation contract, the notifications the engine &lt;br&gt;
raises, adoption of fibers onto the scheduler, and per-coroutine &lt;br&gt;
storage. Any user-facing API (spawn(), await(), channels) stays in &lt;br&gt;
extension space; True Async is one possible provider on top, not the &lt;br&gt;
subject of this proposal.&lt;/p&gt;
&lt;p&gt;The implementation exists, and I am the one contributing it:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/php/php-src/pull/22561" rel="nofollow" target="_blank"&gt;https://github.com/php/php-src/pull/22561&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The PR carries the engine changes plus an in-tree reference scheduler &lt;br&gt;
(ext/test_scheduler, disabled by default) that fills every slot from an &lt;br&gt;
ordinary extension; the upstream test suites run unchanged and &lt;br&gt;
schedulerless in the same binary. A bridge extension that registers a &lt;br&gt;
scheduler written in plain PHP exists out of tree, as runtime proof &lt;br&gt;
that the seam is sufficient.&lt;/p&gt;
&lt;p&gt;Points likely of interest for existing code: a scheduler can adopt &lt;br&gt;
fibers started by ReactPHP, Revolt or AMPHP, per fiber and declinable; &lt;br&gt;
the proposal ships the per-coroutine storage that would later let &lt;br&gt;
&lt;code&gt;ob_start()&lt;/code&gt; and friends become coroutine-safe; there are no goroutines &lt;br&gt;
and no parallelism, everything runs in one OS thread.&lt;/p&gt;
&lt;p&gt;Feedback is welcome.&lt;/p&gt;
&lt;p&gt;Regards, &lt;br&gt;
Edmond&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hi Edmond,&lt;/p&gt;
&lt;p&gt;The mailing list is quite busy right now, so I doubt this will get much &lt;br&gt;
attention for the time being. I don't see this discussion taking place for &lt;br&gt;
at least a couple more months, likely until 8.6 is out and RFCs for the &lt;br&gt;
next version start landing.&lt;/p&gt;
&lt;p&gt;Overall, I really like this idea and approach. I think this is the right &lt;br&gt;
path forward.&lt;/p&gt;
&lt;p&gt;Regarding the note that this &amp;quot;would later let &lt;code&gt;ob_start()&lt;/code&gt; and friends become &lt;br&gt;
coroutine-safe,&amp;quot; I don't think they should be, but that is probably &lt;br&gt;
unrelated to this specific RFC.&lt;/p&gt;
&lt;p&gt;Regards, &lt;br&gt;
Seifeddine.&lt;/p&gt;
</description><guid>CAFyg4HhGw17ApufZ0eTge9vY+nfF=kjjj9L0Z0qjjWXJoZNB9w@mail.gmail.com</guid><pubDate>Thu, 23 Jul 2026 09:56:52 +0000</pubDate></item><item><title>[RFC] Concurrency Support in the PHP Engine</title><link>https://externals.io/message/132091</link><description>&lt;p&gt;Hi internals,&lt;/p&gt;
&lt;p&gt;I would like to open the discussion of a new RFC:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://wiki.php.net/rfc/async_scheduler_abi" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/async_scheduler_abi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The proposal gives the engine a coroutine representation and makes the &lt;br&gt;
component that drives coroutines, the scheduler, pluggable by an &lt;br&gt;
extension. It adds no classes, no functions, no constants and no &lt;br&gt;
syntax: the engine compiles in no PHP symbols at all. With no scheduler &lt;br&gt;
registered, PHP behaves exactly as it does today.&lt;/p&gt;
&lt;p&gt;This is not the True Async RFC. It is the minimal engine core extracted &lt;br&gt;
from that work: the activation contract, the notifications the engine &lt;br&gt;
raises, adoption of fibers onto the scheduler, and per-coroutine &lt;br&gt;
storage. Any user-facing API (spawn(), await(), channels) stays in &lt;br&gt;
extension space; True Async is one possible provider on top, not the &lt;br&gt;
subject of this proposal.&lt;/p&gt;
&lt;p&gt;The implementation exists, and I am the one contributing it:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/php/php-src/pull/22561" rel="nofollow" target="_blank"&gt;https://github.com/php/php-src/pull/22561&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The PR carries the engine changes plus an in-tree reference scheduler &lt;br&gt;
(ext/test_scheduler, disabled by default) that fills every slot from an &lt;br&gt;
ordinary extension; the upstream test suites run unchanged and &lt;br&gt;
schedulerless in the same binary. A bridge extension that registers a &lt;br&gt;
scheduler written in plain PHP exists out of tree, as runtime proof &lt;br&gt;
that the seam is sufficient.&lt;/p&gt;
&lt;p&gt;Points likely of interest for existing code: a scheduler can adopt &lt;br&gt;
fibers started by ReactPHP, Revolt or AMPHP, per fiber and declinable; &lt;br&gt;
the proposal ships the per-coroutine storage that would later let &lt;br&gt;
&lt;code&gt;ob_start()&lt;/code&gt; and friends become coroutine-safe; there are no goroutines &lt;br&gt;
and no parallelism, everything runs in one OS thread.&lt;/p&gt;
&lt;p&gt;Feedback is welcome.&lt;/p&gt;
&lt;p&gt;Regards, &lt;br&gt;
Edmond&lt;/p&gt;
</description><guid>CAMW7n8BXd-CG_bV17Vk1=xYrCx7Xnz3YdVzO210jHxy7dT3Daw@mail.gmail.com</guid><pubDate>Thu, 23 Jul 2026 08:58:27 +0000</pubDate></item><item><title>[META] This Week In PHP Internals | July 22, 2026</title><link>https://externals.io/message/132090</link><description>&lt;p&gt;Hi Contributors,&lt;/p&gt;
&lt;p&gt;As promised, here's this week's video summary, along with a list of &lt;br&gt;
everywhere else it got posted for visibility.&lt;/p&gt;
&lt;p&gt;If you have any corrections you'd like me to make, please respond in this &lt;br&gt;
weekly thread. Those corrections may also include mispronunciations of &lt;br&gt;
names, because I'm still working on those.&lt;/p&gt;
&lt;p&gt;The youtube link is going to be only video, but the &lt;a href="http://dev.to" rel="nofollow" target="_blank"&gt;dev.to&lt;/a&gt; post is going to &lt;br&gt;
be the best way to read this as an article, which can also be quoted for &lt;br&gt;
corrections.&lt;/p&gt;
&lt;p&gt;youtube     &lt;a href="https://youtu.be/tCUKb5rPuJ4" rel="nofollow" target="_blank"&gt;https://youtu.be/tCUKb5rPuJ4&lt;/a&gt; &lt;br&gt;
r/php &lt;br&gt;
&lt;a href="https://www.reddit.com/r/PHP/comments/1v4426j/this_week_in_php_internals_july_22_2026/" rel="nofollow" target="_blank"&gt;https://www.reddit.com/r/PHP/comments/1v4426j/this_week_in_php_internals_july_22_2026/&lt;/a&gt; &lt;br&gt;
r/symfony &lt;br&gt;
&lt;a href="https://www.reddit.com/r/symfony/comments/1v4471q/this_week_in_php_internals_july_22_2026/" rel="nofollow" target="_blank"&gt;https://www.reddit.com/r/symfony/comments/1v4471q/this_week_in_php_internals_july_22_2026/&lt;/a&gt; &lt;br&gt;
r/laravel &lt;br&gt;
&lt;a href="https://www.reddit.com/r/laravel/comments/1v444zx/this_week_in_php_internals_july_22_2026/" rel="nofollow" target="_blank"&gt;https://www.reddit.com/r/laravel/comments/1v444zx/this_week_in_php_internals_july_22_2026/&lt;/a&gt; &lt;br&gt;
&lt;a href="http://dev.to" rel="nofollow" target="_blank"&gt;dev.to&lt;/a&gt; &lt;br&gt;
&lt;a href="https://dev.to/projektgopher/this-week-in-php-internals-july-22-2026-4gij" rel="nofollow" target="_blank"&gt;https://dev.to/projektgopher/this-week-in-php-internals-july-22-2026-4gij&lt;/a&gt; &lt;br&gt;
mastodon    &lt;a href="https://phpc.social/@ProjektGopher/116967597163282396" rel="nofollow" target="_blank"&gt;https://phpc.social/@ProjektGopher/116967597163282396&lt;/a&gt; &lt;br&gt;
threads     &lt;a href="https://www.threads.com/@projektgopher/post/DbH58iLFD_7" rel="nofollow" target="_blank"&gt;https://www.threads.com/@projektgopher/post/DbH58iLFD_7&lt;/a&gt; &lt;br&gt;
bsky &lt;br&gt;
&lt;a href="https://bsky.app/profile/did:plc:ix4islhkrpq7bjujwgsm234t/post/3mrc4c3ijtk2t" rel="nofollow" target="_blank"&gt;https://bsky.app/profile/did:plc:ix4islhkrpq7bjujwgsm234t/post/3mrc4c3ijtk2t&lt;/a&gt; &lt;br&gt;
twitter     &lt;a href="https://x.com/ProjektGopher/status/2080179567424364857" rel="nofollow" target="_blank"&gt;https://x.com/ProjektGopher/status/2080179567424364857&lt;/a&gt; &lt;br&gt;
linkedin &lt;br&gt;
&lt;a href="https://www.linkedin.com/feed/update/urn:li:ugcPost:7485943061298995200/" rel="nofollow" target="_blank"&gt;https://www.linkedin.com/feed/update/urn:li:ugcPost:7485943061298995200/&lt;/a&gt; &lt;br&gt;
pinkary &lt;br&gt;
&lt;a href="https://pinkary.com/@ProjektGopher/questions/019f8d67-d772-7365-ac69-3ce25a4197dd" rel="nofollow" target="_blank"&gt;https://pinkary.com/@ProjektGopher/questions/019f8d67-d772-7365-ac69-3ce25a4197dd&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Really hoping that this visibility work encourages people to join the list &lt;br&gt;
and start contributing themselves.&lt;/p&gt;
&lt;p&gt;Cheers, &lt;br&gt;
Len&lt;/p&gt;
</description><guid>CAEwAiAG5i2wjBxJTMzkfSc6NCJCOaunPxKOee7ZEwtyWq=ZX-Q@mail.gmail.com</guid><pubDate>Thu, 23 Jul 2026 06:58:09 +0000</pubDate></item><item><title>[RFC] [Discussion] Literal Scalar Types</title><link>https://externals.io/message/132089</link><description>&lt;p&gt;On Thu, 23 Jul 2026 at 06:13, Seifeddine Gmati &lt;a href="mailto:azjezz@carthage.software"&gt;azjezz@carthage.software&lt;/a&gt; &lt;br&gt;
wrote:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Subject: Re: [RFC] Literal Scalar Types &lt;br&gt;
On Mon, 15 Jun 2026 at 02:22, Seifeddine Gmati &lt;a href="mailto:azjezz@carthage.software"&gt;azjezz@carthage.software&lt;/a&gt; &lt;br&gt;
wrote:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hello Internals,&lt;/p&gt;
&lt;p&gt;I'd like to start the discussion on a new RFC adding literal scalar &lt;br&gt;
types to PHP.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RFC: &lt;a href="https://wiki.php.net/rfc/literal_scalar_types" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/literal_scalar_types&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Implementation: &lt;a href="https://github.com/php/php-src/pull/22314" rel="nofollow" target="_blank"&gt;https://github.com/php/php-src/pull/22314&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks, &lt;br&gt;
Seifeddine.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hi internals,&lt;/p&gt;
&lt;p&gt;I have updated the Literal Scalar Types RFC to version 1.0, which I &lt;br&gt;
consider the final revision: &lt;a href="https://wiki.php.net/rfc/literal_scalar_types" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/literal_scalar_types&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The changes are editorial, based on feedback in this thread. I merged the &lt;br&gt;
&amp;quot;Accepted literal syntax&amp;quot; section into the per-type sections so each &lt;br&gt;
literal kind is described in one place, added a paragraph to the &lt;br&gt;
introduction on where literal types fit next to enums, tightened the &lt;br&gt;
reasoning in the matching semantics section, and added a short note on enum &lt;br&gt;
comparisons to the Performance section. The proposal itself is unchanged: &lt;br&gt;
the syntax, the semantics and the three votes are the same as in 0.3.&lt;/p&gt;
&lt;p&gt;Since this is a minor revision, I am opening voting shortly. A separate &lt;br&gt;
[VOTE] thread will follow.&lt;/p&gt;
&lt;p&gt;Thanks to everyone who took part in the discussion.&lt;/p&gt;
&lt;p&gt;Seifeddine&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hello internals,&lt;/p&gt;
&lt;p&gt;A procedural update, following my retraction in the [VOTE] thread.&lt;/p&gt;
&lt;p&gt;Earlier I opened voting on this RFC without meeting the prerequisites: no &lt;br&gt;
Intent to Vote had been posted two days in advance, and the 1.0 update I &lt;br&gt;
announced earlier is a Minor change, which starts a seven-day Cooldown &lt;br&gt;
Period. I retracted the vote. The widgets are closed, and the RFC is back &lt;br&gt;
to Under Discussion. The text is unchanged since the 1.0 announcement and I &lt;br&gt;
intend to keep it frozen until the vote.&lt;/p&gt;
&lt;p&gt;Please consider this message my formal Intent to Vote. The Cooldown Period &lt;br&gt;
ends on July 30, and I plan to reopen the vote that morning (UTC), running &lt;br&gt;
for the standard fourteen days within the Intent to Vote lifetime.&lt;/p&gt;
&lt;p&gt;One open question is the PHP 8.6 feature freeze. A vote opened on July 30 &lt;br&gt;
closes on August 13, the day of beta1, and the tag is created on August 11, &lt;br&gt;
so a merge would happen during the beta period and needs Release Manager &lt;br&gt;
approval. I am checking with the 8.6 RMs whether that is acceptable. If it &lt;br&gt;
is not, I will retarget the RFC to PHP 8.7 (or 9.0?) instead. Retargeting &lt;br&gt;
changes the voting widgets, so it would be announced here as a change, &lt;br&gt;
trigger its own Cooldown Period, and be followed by a fresh Intent to Vote, &lt;br&gt;
with no deadline pressure.&lt;/p&gt;
&lt;p&gt;Thanks for your patience.&lt;/p&gt;
&lt;p&gt;Seifeddine.&lt;/p&gt;
</description><guid>CAFyg4HikAC19+pJuskd1w-rsWdfJMm3jG_x90mJwATSPWxAHMA@mail.gmail.com</guid><pubDate>Thu, 23 Jul 2026 05:47:45 +0000</pubDate></item><item><title>[RFC] [VOTE] Literal Scalar Types</title><link>https://externals.io/message/132088</link><description>&lt;p&gt;Hello internals,&lt;/p&gt;
&lt;p&gt;I am retracting this vote: I opened it prematurely, in violation of the &lt;br&gt;
voting prerequisites in the Feature Proposals policy. I did not post an &lt;br&gt;
Intent to Vote message at least two days in advance, and today's 1.0 update &lt;br&gt;
to the RFC text is a Minor change announcement, which starts a seven-day &lt;br&gt;
Cooldown Period during which no vote may be called.&lt;/p&gt;
&lt;p&gt;The voting widgets are closed, and the RFC is back to Under Discussion. The &lt;br&gt;
RFC text itself is unchanged and I consider it final.&lt;/p&gt;
&lt;p&gt;I will post a proper Intent to Vote in the discussion thread and reopen the &lt;br&gt;
vote once the Cooldown Period has passed, on or after July 30. The reopened &lt;br&gt;
widgets will be retitled per the policy so that no stale votes carry over.&lt;/p&gt;
&lt;p&gt;On timing: a fourteen-day vote opened on July 30 closes right at the August &lt;br&gt;
13 feature freeze for PHP 8.6, and the beta1 tag lands on August 11, so any &lt;br&gt;
merge would happen during beta in any case. I will coordinate with the 8.6 &lt;br&gt;
Release Managers on whether inclusion in 8.6 is still possible under RM &lt;br&gt;
approval. If it is not, I will retarget the RFC to PHP 8.7 and announce &lt;br&gt;
that change before reopening the vote.&lt;/p&gt;
&lt;p&gt;Apologies for the noise.&lt;/p&gt;
&lt;p&gt;Seifeddine, &lt;br&gt;
Cheers.&lt;/p&gt;
</description><guid>CAFyg4HhbiE4vaJBRgW-rLRmyjFxR+vkcARvzM11POL8Em4_JQA@mail.gmail.com</guid><pubDate>Thu, 23 Jul 2026 05:44:21 +0000</pubDate></item><item><title>[RFC] [VOTE] Literal Scalar Types</title><link>https://externals.io/message/132087</link><description>&lt;p&gt;Hello internals,&lt;/p&gt;
&lt;p&gt;Voting is now open on the Literal Scalar Types RFC, as announced in the &lt;br&gt;
discussion thread earlier.&lt;/p&gt;
&lt;p&gt;There are three votes on the RFC page, running concurrently:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Primary vote, requires a 2/3 majority: add integer and string literal &lt;br&gt;
types.&lt;/li&gt;
&lt;li&gt;Second vote, requires a 2/3 majority, independent of the first: add &lt;br&gt;
floating point literal types. The RFC is accepted if at least one of the &lt;br&gt;
two type votes passes; if both fail, it is rejected.&lt;/li&gt;
&lt;li&gt;Third vote, simple majority, effective only if at least one type vote &lt;br&gt;
passes: matching semantics, strict vs coercive. The RFC recommends strict &lt;br&gt;
matching.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The vote started on 2026-07-23 and ends on 2026-08-06.&lt;/p&gt;
&lt;p&gt;RFC: &lt;a href="https://wiki.php.net/rfc/literal_scalar_types" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/literal_scalar_types&lt;/a&gt; &lt;br&gt;
Discussion thread: &lt;a href="https://news-web.php.net/php.internals/131249" rel="nofollow" target="_blank"&gt;https://news-web.php.net/php.internals/131249&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Seifeddine &lt;br&gt;
Cheers.&lt;/p&gt;
</description><guid>CAFyg4HhcKmKv3JKB1mRPSH53-BYV3QY_a4o_E2P2b4UsTjPXAQ@mail.gmail.com</guid><pubDate>Thu, 23 Jul 2026 05:26:44 +0000</pubDate></item><item><title>[RFC] [Discussion] Literal Scalar Types</title><link>https://externals.io/message/132086</link><description>&lt;p&gt;Subject: Re: [RFC] Literal Scalar Types &lt;br&gt;
On Mon, 15 Jun 2026 at 02:22, Seifeddine Gmati &lt;a href="mailto:azjezz@carthage.software"&gt;azjezz@carthage.software&lt;/a&gt; &lt;br&gt;
wrote:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hello Internals,&lt;/p&gt;
&lt;p&gt;I'd like to start the discussion on a new RFC adding literal scalar &lt;br&gt;
types to PHP.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RFC: &lt;a href="https://wiki.php.net/rfc/literal_scalar_types" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/literal_scalar_types&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Implementation: &lt;a href="https://github.com/php/php-src/pull/22314" rel="nofollow" target="_blank"&gt;https://github.com/php/php-src/pull/22314&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks, &lt;br&gt;
Seifeddine.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hi internals,&lt;/p&gt;
&lt;p&gt;I have updated the Literal Scalar Types RFC to version 1.0, which I &lt;br&gt;
consider the final revision: &lt;a href="https://wiki.php.net/rfc/literal_scalar_types" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/literal_scalar_types&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The changes are editorial, based on feedback in this thread. I merged the &lt;br&gt;
&amp;quot;Accepted literal syntax&amp;quot; section into the per-type sections so each &lt;br&gt;
literal kind is described in one place, added a paragraph to the &lt;br&gt;
introduction on where literal types fit next to enums, tightened the &lt;br&gt;
reasoning in the matching semantics section, and added a short note on enum &lt;br&gt;
comparisons to the Performance section. The proposal itself is unchanged: &lt;br&gt;
the syntax, the semantics and the three votes are the same as in 0.3.&lt;/p&gt;
&lt;p&gt;Since this is a minor revision, I am opening voting shortly. A separate &lt;br&gt;
[VOTE] thread will follow.&lt;/p&gt;
&lt;p&gt;Thanks to everyone who took part in the discussion.&lt;/p&gt;
&lt;p&gt;Seifeddine&lt;/p&gt;
</description><guid>CAFyg4Hi7Xw2i0u-FF1Oi-dozB34enJJg=X7662L=LaWB37-jWA@mail.gmail.com</guid><pubDate>Thu, 23 Jul 2026 05:13:57 +0000</pubDate></item><item><title>[RFC] [DISCUSSION] ext/gd 2.4 — codec sync, Gd\* OOP API, 2D vector/canvas</title><link>https://externals.io/message/132085</link><description>&lt;p&gt;Hi Rowan,&lt;/p&gt;
&lt;p&gt;On Tue, Jul 21, 2026 at 7:23 PM Rowan Tommins [IMSoP] &lt;br&gt;
&lt;a href="mailto:imsop.php@rwec.co.uk"&gt;imsop.php@rwec.co.uk&lt;/a&gt; wrote:&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;hi Rowan,&lt;/p&gt;
&lt;p&gt;A quick side-note,  a reply that opens with at least a hello goes a &lt;br&gt;
long way. It costs nothing and it is the difference between a review &lt;br&gt;
and a brush off. We are not bots and don't talk to bots.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hi Pierre,&lt;/p&gt;
&lt;p&gt;I apologise completely for this. I often forget to add a greeting when &lt;br&gt;
editing a reply, particularly on mobile. I definitely do not want to &lt;br&gt;
sound rude or inhuman, so I will try to remember to include this in future.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Thank you, in the age of us talking more to machines than humans, that &lt;br&gt;
is an important point to remind ourselves :).&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;However, to answer your question, It was important tot:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;validate full compatibility of the libgd update with current php on &lt;br&gt;
all platforms and supported features to date&lt;/li&gt;
&lt;li&gt;it uses some &amp;quot;modern&amp;quot; C features, so a full blown validation on php &lt;br&gt;
CIs is a must have first&lt;/li&gt;
&lt;li&gt;Actual additions to php are thin layers now added in this thread &lt;br&gt;
RFC. No more &amp;quot;business&amp;quot; logic in the binding itself but if needed to &lt;br&gt;
handle older external versions.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;That makes sense. I realise it's too late to say now, but it sounds like &lt;br&gt;
the RFC text could have been presented &lt;em&gt;in parallel&lt;/em&gt; to that &lt;br&gt;
verification.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;yes and no, given the newer C standard, dependencies and similar &lt;br&gt;
changes, if any of that would fail and could not be fixed to be &lt;br&gt;
supported in the current php's supported platforms and required CIs, &lt;br&gt;
it would have forced some refactoring or rewriting. And maybe redo &lt;br&gt;
part of the binding. That's something my time would not allow.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;That would have given more time for people to digest the &lt;br&gt;
new user-facing API, and suggest any changes without running as close to &lt;br&gt;
the feature freeze.&lt;/p&gt;
&lt;p&gt;It's quite common for implementations not to be finalised even when an &lt;br&gt;
RFC is voted on, as long as changes don't impact what was agreed in the &lt;br&gt;
RFC. The policy that has been formalised explicitly allows for that to &lt;br&gt;
happen during the Beta period.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Right, since day #1 of RFCs :)&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;This is a PR and RFC that massively improves existing functions. Read: &lt;br&gt;
everything under the hood, aside from the new APIs, is fixes and &lt;br&gt;
improvements to what already exists. The new APIs themselves have zero &lt;br&gt;
impact on existing functionality. They prepare PHP 9 and bring a much &lt;br&gt;
more developer friendly way to do image operations. And the recurring &lt;br&gt;
answer, too many times, has been &amp;quot;policies&amp;quot; or &amp;quot;wiki syntax.&amp;quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I understand your frustration, and from what I've read, it looks like a &lt;br&gt;
really great addition to the language.&lt;/p&gt;
&lt;p&gt;But I do think its important that new features are given the time and &lt;br&gt;
attention needed to refine small details. Names of new keywords or &lt;br&gt;
classes, signatures of new methods, etc, are generally very easy to &lt;br&gt;
change during an RFC discussion, but very hard to change once it's made &lt;br&gt;
it into a stable release.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I understand. And realistically, f.e., say there are feedbacks to &lt;br&gt;
update one codec method, or options, how they are named or called, &lt;br&gt;
then all codecs change. They are not different, only different fields &lt;br&gt;
in options.&lt;/p&gt;
&lt;p&gt;Other methods like transform. scale or rotate are also pretty standard.&lt;/p&gt;
&lt;p&gt;The 2D api is standard canvas-like APIs. Hard to do something &lt;br&gt;
different and end as &amp;quot;php is different so we don't follow what &lt;br&gt;
anything else does&amp;quot; :).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;On the other hand, it's useful to have a cut-off point for new features &lt;br&gt;
somewhere in the release process. If an RFC is in discussion close to &lt;br&gt;
that cut-off point, there's always going to be an awkward decision: do &lt;br&gt;
we cut off discussion because we're running out of time for the release, &lt;br&gt;
or do we push the feature back a year so we can have the proper discussion?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Indeed.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Although it feels like bureaucracy, having a pre-determined cut-off date &lt;br&gt;
can in theory make that decision easier: we don't have to debate for &lt;br&gt;
every RFC whether it's &amp;quot;small enough&amp;quot; or &amp;quot;important enough&amp;quot; to carry on &lt;br&gt;
discussing, we just have to ask &amp;quot;is it ready in time for the cut-off?&amp;quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And it is.&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;This release is still in alpha. Whatever the plan is for the next &lt;br&gt;
beta, we're not at RC yet, and new approved features landing before RC &lt;br&gt;
is exactly what we've reasonably expected before these non pragmatic &lt;br&gt;
policies changes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I'm not sure how strictly it was previously enforced, but the release &lt;br&gt;
cycle update RFC from two years ago refers to the requirement for RFCs &lt;br&gt;
to be voted before beta (but not necessarily merged) as an existing &lt;br&gt;
policy: &lt;a href="https://wiki.php.net/rfc/release_cycle_update" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/release_cycle_update&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It was pragmatic and meant as a guideline and enforce minimal respect &lt;br&gt;
of internals, RMs, and users. There is an obvious clear difference &lt;br&gt;
between a RFC being accepted now without any implementation and one &lt;br&gt;
with full implementation ready, all new APIs do not affect any &lt;br&gt;
existing codes (obviously) and massively improving almost all existing &lt;br&gt;
functions, for free, zero code change in userland.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;That RFC actually made that deadline later, because it shortened the &lt;br&gt;
overall timeline, moving the feature freeze from July to August; and &lt;br&gt;
thus the RFC discussion deadline from June to July.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It makes it as nothing is being actually reviewed but rejected &lt;br&gt;
straight down due to policies. Hence my bureaucracy statement.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Wherever that deadline falls, there will always be proposals which, for &lt;br&gt;
whatever reason, are written close to it. Naturally, the authors of &lt;br&gt;
those proposals will be frustrated at their change being held back until &lt;br&gt;
the following year; but on its own, that's not a reason to ignore the &lt;br&gt;
agreed cut-off date. Even if we allowed some discretion to land changes &lt;br&gt;
after the deadline, it would need some justification - perhaps the RFC &lt;br&gt;
is very small, or amends an existing RFC already in the release.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And the miss is counted in days. And I can already tell that the final &lt;br&gt;
release will be delayed, anyway. Due to other stable branches having &lt;br&gt;
various must have fixes that should be in all stable releases. So all &lt;br&gt;
in all, pure hard core policies instead of pragmatism for the benefits &lt;br&gt;
of our users.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;To me, a well-documented process feels fairer than making subjective &lt;br&gt;
judgements on the worthiness of every RFC.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Process has to be humane (thanks to someone well known on linkedin to &lt;br&gt;
remind me of that word ;-). If they are purely for the sake of having &lt;br&gt;
a process, we fail as a project and solve users' needs.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I will end, though, by saying I have no particular authority, and this &lt;br&gt;
is all just my opinion. I wish you well, and look forward to digging &lt;br&gt;
into your proposal, whichever release it ends up targeting.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Nobody has, many accept and confirm rejections. go figure :)&lt;/p&gt;
&lt;h2&gt;Cheers,&lt;/h2&gt;
&lt;p&gt;Pierre&lt;/p&gt;
&lt;p&gt;@pierrejoye&lt;/p&gt;
</description><guid>CAEZPtU6_7cn9jPNysuVxf=NTTJY11vdc3Ezydq-m+RCUez3pNA@mail.gmail.com</guid><pubDate>Thu, 23 Jul 2026 03:35:36 +0000</pubDate></item><item><title>[RFC] Pipe Assignment Operator</title><link>https://externals.io/message/132084</link><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I do intend to try to get this into 8.6. Here's the schedule I'm planning:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Intent to vote: within the next day or so&lt;/li&gt;
&lt;li&gt;Open voting: Monday July 28th ~04:30 UTC&lt;/li&gt;
&lt;li&gt;Voting closes: Monday August 11th ~04:30 UTC&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Except for the week-day correction that you noticed yourself, that would &lt;br&gt;
be fully in line with policy and would also be meeting the soft freeze &lt;br&gt;
deadline.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If the vote passes, what's the process for getting the PR merged?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If the vote looks favorable, I'll also have a look at the implementation &lt;br&gt;
(so far I only looked at the tests, I also just added another test &lt;br&gt;
review) and if it looks good to me then I'll find a second reviewer for &lt;br&gt;
the implementation. You'll just have to make sure to react on the review &lt;br&gt;
notes in a timely fashion.&lt;/p&gt;
&lt;p&gt;That should hopefully result in the technical review being concluded &lt;br&gt;
before the vote ends, so that the PR is immediately ready for merging.&lt;/p&gt;
&lt;p&gt;Given that August 11 is also the day where Beta 1 is tagged, I'll ask &lt;br&gt;
the RMs to merge the PR (if vote is accepted and implementation is &lt;br&gt;
ready, of course) before tagging to avoid any timezone scheduling &lt;br&gt;
issues. After that, PRs may only land with RM approval, but given it’s a &lt;br&gt;
localized change and a small PR, I don't expect the approval to be &lt;br&gt;
denied, but I obviously can’t speak for certain.&lt;/p&gt;
&lt;p&gt;Best regards &lt;br&gt;
Tim Düsterhus&lt;/p&gt;
</description><guid>af87d5bf-8796-4372-8327-966be8a7b1a1@bastelstu.be</guid><pubDate>Wed, 22 Jul 2026 20:12:37 +0000</pubDate></item><item><title>[RFC] Pipe Assignment Operator</title><link>https://externals.io/message/132083</link><description>&lt;blockquote&gt;
&lt;p&gt;Hi Tim,&lt;/p&gt;
&lt;p&gt;Thank you for all your help, patience, and guidance throughout this &lt;br&gt;
process, especially as a first-time RFC author. And I really appreciate &lt;br&gt;
you going to bat for this RFC in the thread---thanks again.&lt;/p&gt;
&lt;p&gt;I do intend to try to get this into 8.6. Here's the schedule I'm planning:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Intent to vote: within the next day or so&lt;/li&gt;
&lt;li&gt;Open voting: Monday July 28th ~04:30 UTC&lt;/li&gt;
&lt;li&gt;Voting closes: Monday August 11th ~04:30 UTC&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the vote passes, what's the process for getting the PR merged?&lt;/p&gt;
&lt;p&gt;Best, &lt;br&gt;
Caleb&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Apparently I got my days mixed up---07-28 and 08-11 are Tuesdays&lt;/p&gt;
&lt;p&gt;Best, &lt;br&gt;
Caleb&lt;/p&gt;
</description><guid>fz0TsNhvxwT3pm3SfFerV2ORnDUt9_YTMWQkO5EGDeOhNBuOC7IsvQvRD-l4tGCs3lac-94hQW1KAHmcdUA-Z-xMGyXaBSKnGtoWWwvlRnQ=@pm.me</guid><pubDate>Wed, 22 Jul 2026 19:38:40 +0000</pubDate></item><item><title>[META] Weekly Internals Summary Videos</title><link>https://externals.io/message/132082</link><description>&lt;blockquote&gt;
&lt;p&gt;Please please Google form, so that we don't flood the list with noise in this thread.&lt;/p&gt;
&lt;p&gt;A form it is.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yes to an off-list solution, but please don't use a Google (or other Big&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Tech) form. The info you are asking, especially when all combined in one &lt;br&gt;
form like you are suggesting, is pretty darn privacy sensitive and very &lt;br&gt;
valuable to surveillance capitalist companies like Google.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Loud and clear. I'll roll my own solution&lt;/p&gt;
&lt;p&gt;I'll post that link in &lt;em&gt;this&lt;/em&gt; thread when I have time to whip that up, but &lt;br&gt;
once I'm finished editing this week's episode I'm going to start a new &lt;br&gt;
thread for corrections and errata.&lt;/p&gt;
</description><guid>CAEwAiAFSm7rANrxP4GPsbyfpmHLG0185BTwEDQsO3Ge3CNrAXQ@mail.gmail.com</guid><pubDate>Wed, 22 Jul 2026 19:32:24 +0000</pubDate></item><item><title>[RFC] Pipe Assignment Operator</title><link>https://externals.io/message/132081</link><description>&lt;blockquote&gt;
&lt;p&gt;Thank you. The clarification makes sense to me and I don't have further &lt;br&gt;
comments on the RFC.&lt;/p&gt;
&lt;p&gt;As indicated in &lt;a href="https://news-web.php.net/php.internals/132049" rel="nofollow" target="_blank"&gt;https://news-web.php.net/php.internals/132049&lt;/a&gt;, your RFC &lt;br&gt;
could still be included in PHP 8.6. Even with this clarification, which &lt;br&gt;
is a “minor change” you would be just in time. Any further change to the &lt;br&gt;
RFC text will miss the deadline.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If&lt;/em&gt; you want to try to get into PHP 8.6, you'll need to open voting on &lt;br&gt;
the 28th of July very shortly after 04:18 UTC until August 11th the same &lt;br&gt;
time + a bit of buffer. You will also need to send an intent to vote &lt;br&gt;
email at least 48 hours before that. The decision is up to you. I just &lt;br&gt;
wanted to provide you with all the necessary information as a first-time &lt;br&gt;
RFC author to make an adequate decision.&lt;/p&gt;
&lt;p&gt;Best regards &lt;br&gt;
Tim Düsterhus&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hi Tim,&lt;/p&gt;
&lt;p&gt;Thank you for all your help, patience, and guidance throughout this &lt;br&gt;
process, especially as a first-time RFC author. And I really appreciate &lt;br&gt;
you going to bat for this RFC in the thread---thanks again.&lt;/p&gt;
&lt;p&gt;I do intend to try to get this into 8.6. Here's the schedule I'm planning:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Intent to vote: within the next day or so&lt;/li&gt;
&lt;li&gt;Open voting: Monday July 28th ~04:30 UTC&lt;/li&gt;
&lt;li&gt;Voting closes: Monday August 11th ~04:30 UTC&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the vote passes, what's the process for getting the PR merged?&lt;/p&gt;
&lt;p&gt;Best, &lt;br&gt;
Caleb&lt;/p&gt;
</description><guid>JzKwEujKVRieH8jaa85DqOfm5cDytGBW1VEY0RdNrLppgjhW_RY5qlWOM641TuadtxM87QaaP5uQK2zUSt80lYPm2nzTQrCjEdDWROhA6hk=@pm.me</guid><pubDate>Wed, 22 Jul 2026 18:51:14 +0000</pubDate></item><item><title>[RFC] Pipe Assignment Operator</title><link>https://externals.io/message/132080</link><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;So the behavior is consistent with &lt;code&gt;??=&lt;/code&gt;. Bob, your observation about &lt;br&gt;
optimizing intermediate chain fetches with ad-hoc references is &lt;br&gt;
interesting, but that would be an improvement to all compound &lt;br&gt;
assignment operators, not something specific to &lt;code&gt;|&amp;gt;=&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I've updated the RFC to clarify this in the Single-Evaluation &lt;br&gt;
Guarantee section.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Thank you. The clarification makes sense to me and I don't have further &lt;br&gt;
comments on the RFC.&lt;/p&gt;
&lt;p&gt;As indicated in &lt;a href="https://news-web.php.net/php.internals/132049" rel="nofollow" target="_blank"&gt;https://news-web.php.net/php.internals/132049&lt;/a&gt;, your RFC &lt;br&gt;
could still be included in PHP 8.6. Even with this clarification, which &lt;br&gt;
is a “minor change” you would be just in time. Any further change to the &lt;br&gt;
RFC text will miss the deadline.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If&lt;/em&gt; you want to try to get into PHP 8.6, you'll need to open voting on &lt;br&gt;
the 28th of July very shortly after 04:18 UTC until August 11th the same &lt;br&gt;
time + a bit of buffer. You will also need to send an intent to vote &lt;br&gt;
email at least 48 hours before that. The decision is up to you. I just &lt;br&gt;
wanted to provide you with all the necessary information as a first-time &lt;br&gt;
RFC author to make an adequate decision.&lt;/p&gt;
&lt;p&gt;Best regards &lt;br&gt;
Tim Düsterhus&lt;/p&gt;
</description><guid>809fee9907e5e9e76111e7e9832f0135@bastelstu.be</guid><pubDate>Wed, 22 Jul 2026 14:54:24 +0000</pubDate></item><item><title>[META] Weekly Internals Summary Videos</title><link>https://externals.io/message/132079</link><description>&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;I'm trying to ensure that contributors are properly &lt;br&gt;
tagged/attributed/[at]mentioned on all these platforms, but I just &lt;br&gt;
don't have a well built-out list of all of your social handles. I've &lt;br&gt;
collected some of these from the internals Discord and through web &lt;br&gt;
searches, but it's not enough. To collect these handles for platforms &lt;br&gt;
like LinkedIn, Reddit, Twitter, Bsky, Threads, Mastodon, etc, would it &lt;br&gt;
make more sense for you all to &lt;em&gt;reply in this thread with all of your &lt;br&gt;
handles&lt;/em&gt;, or should I create a simple &lt;em&gt;Google Form&lt;/em&gt; and link &lt;em&gt;that&lt;/em&gt; &lt;br&gt;
instead? &lt;br&gt;
Please please Google form, so that we don't flood the list with noise in this thread.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yes to an off-list solution, but please don't use a Google (or other Big &lt;br&gt;
Tech) form. The info you are asking, especially when all combined in one &lt;br&gt;
form like you are suggesting, is pretty darn privacy sensitive and very &lt;br&gt;
valuable to surveillance capitalist companies like Google.&lt;/p&gt;
</description><guid>6A60D19F.3070308@adviesenzo.nl</guid><pubDate>Wed, 22 Jul 2026 14:20:15 +0000</pubDate></item><item><title>[RFC] Typed array declarations</title><link>https://externals.io/message/132078</link><description>&lt;blockquote&gt;
&lt;p&gt;Base types would likely resolve the &amp;quot;value object&amp;quot; problem for lists: They would (I think) naturally pass like arrays, not like objects.  However, it's fairly clear that we want to have methods on collection objects, not just free-floating functions, so if they're implemented as their own types then we would &lt;em&gt;need&lt;/em&gt; to have extension functions for them to support a more robust standard library for them.  If implemented as objects, we could use built-in methods or extension functions, but then we have to deal with the passing semantics problem.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;We could save a lot of conversations if everyone just agreed that my Roadmap for 9.0 with implementations for Monomorphized Generics, Structs, Modules, Extensions, and Surfaces could be considered accepted as a rough outline for the future. PHP needs meaningful growth to avoid settling back into a 5.x slumber.&lt;/p&gt;
&lt;p&gt;For anyone who hasn’t checked it out yet, I would encourage you to do so at &lt;a href="https://EventuallyWrong.com/php9" rel="nofollow" target="_blank"&gt;https://EventuallyWrong.com/php9&lt;/a&gt;. I update it regularly as I expand my proposals. Most recently I added Generics. Variadic Generics will probably be added today as well.&lt;/p&gt;
</description><guid>DS4PR20MB99453393FBEFCF074284D7CEFAB2C12@DS4PR20MB994533.namprd20.prod.outlook.com</guid><pubDate>Wed, 22 Jul 2026 14:05:33 +0000</pubDate></item><item><title>[META] Weekly Internals Summary Videos</title><link>https://externals.io/message/132077</link><description>&lt;blockquote&gt;
&lt;p&gt;Hi contributors,&lt;/p&gt;
&lt;p&gt;For the last 6 weeks or so, in an effort to make the PHP internals more &lt;br&gt;
accessible and visible to a wider audience, I've been summarizing the &lt;br&gt;
week's discussions into a ~10-15 minute weekly video, then breaking &lt;br&gt;
that out into written content where it's supported, and threaded &lt;br&gt;
content for other micro-blogging platforms.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I have two things to discuss:&lt;/em&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I'm trying to ensure that contributors are properly &lt;br&gt;
tagged/attributed/[at]mentioned on all these platforms, but I just &lt;br&gt;
don't have a well built-out list of all of your social handles. I've &lt;br&gt;
collected some of these from the internals Discord and through web &lt;br&gt;
searches, but it's not enough. To collect these handles for platforms &lt;br&gt;
like LinkedIn, Reddit, Twitter, Bsky, Threads, Mastodon, etc, would it &lt;br&gt;
make more sense for you all to &lt;em&gt;reply in this thread with all of your &lt;br&gt;
handles&lt;/em&gt;, or should I create a simple &lt;em&gt;Google Form&lt;/em&gt; and link &lt;em&gt;that&lt;/em&gt; &lt;br&gt;
instead?&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;Please please Google form, so that we don't flood the list with noise in this thread.&lt;/p&gt;
&lt;p&gt;--Larry Garfield&lt;/p&gt;
</description><guid>b473014d-25e0-429f-82de-8ea646feb49d@app.fastmail.com</guid><pubDate>Wed, 22 Jul 2026 13:52:13 +0000</pubDate></item><item><title>[RFC] Typed array declarations</title><link>https://externals.io/message/132076</link><description>&lt;blockquote&gt;
&lt;p&gt;Hey Larry,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I am opposed to this RFC, for all the reasons Rob mentioned.  Moreover, I don't believe the issues can be resolved by just waiting for the reified generics RFC (which I really hope passes).  The core issue is that PHP arrays are an over-broad data structure, and we need to have a hard, type-based (not just implied by generics) distinction between lists/sequences, sets, and dictionaries/maps, the same way most languages do.&lt;/p&gt;
&lt;p&gt;There are a few ways that could be done: 3 generic objects (a la Kotlin, my preferred approach), 3 generic objects with extension functions (assuming we can get those), 3 new core data types with extension functions (very hard to implement as I understand it), etc. &lt;br&gt;
But tacking it onto the already-dangerously-overloaded array mega-type is the wrong approach.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Thanks for the feedback. &lt;br&gt;
I understand the concern of adding more things to the array type and I &lt;br&gt;
think it's a valid concern.&lt;/p&gt;
&lt;p&gt;Would you think that an RFC adding new types, maybe using Kotlin as a &lt;br&gt;
reference (as you mentioned), for having strongly typed array/list &lt;br&gt;
structures would be a better fit? &lt;br&gt;
I'd be happy to propose and work on this if this would be a better &lt;br&gt;
direction/approach.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The challenge with new base types, AIUI, is that the way the engine works right now adding more types is really really hard.  Building on top of objects is vastly easier.  That's the biggest reason Enums were objects rather than their own base type.  (There were other advantages to that approach, too, but implementation potential was a big one.)&lt;/p&gt;
&lt;p&gt;Base types would likely resolve the &amp;quot;value object&amp;quot; problem for lists: They would (I think) naturally pass like arrays, not like objects.  However, it's fairly clear that we want to have methods on collection objects, not just free-floating functions, so if they're implemented as their own types then we would &lt;em&gt;need&lt;/em&gt; to have extension functions for them to support a more robust standard library for them.  If implemented as objects, we could use built-in methods or extension functions, but then we have to deal with the passing semantics problem.&lt;/p&gt;
&lt;p&gt;And in either case, we really, really want to have operator support.&lt;/p&gt;
&lt;p&gt;I did some research on this topic a while back with Derick.  My conclusion at the time was that we needed generics first, but once that was in then it was pretty straightforward, and by the end I had a clear-ish picture of the API I wanted.  (Ignore the one-off syntax; we were considering that initially but decided to hold off and see if real generics were possible.)&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/Crell/php-rfcs/blob/master/collections/research-notes.md" rel="nofollow" target="_blank"&gt;https://github.com/Crell/php-rfcs/blob/master/collections/research-notes.md&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(It's rather stream of consciousness, rather than a formal summary, so could flop around a bit.)&lt;/p&gt;
&lt;p&gt;At this point, I think the best approach is to wait for reified generics and cross our fingers that it finally happens, then loop back and form a working group to decide on which way forward we want to take.  The fate of extension functions would also impact the route taken here.&lt;/p&gt;
&lt;p&gt;--Larry Garfield&lt;/p&gt;
</description><guid>190e2279-fb0a-4aa0-b249-957279de49c9@app.fastmail.com</guid><pubDate>Wed, 22 Jul 2026 13:51:27 +0000</pubDate></item><item><title>SNMP module RFC implementation</title><link>https://externals.io/message/132075</link><description>&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I have gone through the RFC process for a bunch of new functionality for &lt;br&gt;
the SNMP module and wanted to check if there's anything else I need to &lt;br&gt;
do to move this forward, or if it's in the queue and waiting for the &lt;br&gt;
appropriate releases?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hello Steven,&lt;/p&gt;
&lt;p&gt;I'll have a look next week after I come back from a conference as I will need to learn about SNMP.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Gina P. Banyard&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hi Gina,&lt;/p&gt;
&lt;p&gt;I've updated the security protocol PR based on your comment (I agree &lt;br&gt;
with the suggested simplification), so that should hopefully be ready now.&lt;/p&gt;
&lt;p&gt;I think I've fixed the formatting option PR as requested, with the &lt;br&gt;
exception of the const definitions in the snmp.stub.php file. I've &lt;br&gt;
extended the existing technique of using the values from the net-snmp &lt;br&gt;
library, and I think it works quite well (it avoids having to map from &lt;br&gt;
the PHP SNMP_* values back to the equivalent net-nsmp NETSNMP_* &lt;br&gt;
values).  All code in the php-snmp module checks that a valid value has &lt;br&gt;
been passed before use.  I will change this if you can see additional &lt;br&gt;
benefits (I may need some guidance on the correct way to achieve this), &lt;br&gt;
but I personally like the way the existing code works, and changing it &lt;br&gt;
would require modifying the original php-snmp code.&lt;/p&gt;
&lt;p&gt;Can you please have a look at the PRs for the 2 items above and let me &lt;br&gt;
know if they are ready to squash and merge.  Once the above 2 are done I &lt;br&gt;
can rebase the third PR and get that ready for merging.&lt;/p&gt;
&lt;p&gt;regards&lt;/p&gt;
&lt;p&gt;Steve&lt;/p&gt;
</description><guid>8053dcc4-6e28-430c-8b5d-3701c26bf5e1@fluentit.au</guid><pubDate>Wed, 22 Jul 2026 13:08:14 +0000</pubDate></item><item><title>Spam on PEAR site</title><link>https://externals.io/message/132074</link><description>&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Perhaps it would make sense to disable editing old and adding new proposals, and remove the spam.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;I think it's safe to conclude that there is no PEAR team, the entire project is abandoned, and we need to decide what to do with the &lt;a href="http://pear.php.net" rel="nofollow" target="_blank"&gt;pear.php.net&lt;/a&gt; domain to protect the reputation of PHP.&lt;/p&gt;
&lt;p&gt;Probably that means setting up a read-only mirror somewhere and pointing the DNS at it so that clients don't break overnight.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Just a heads-up: I would very much favour some form of a readonly &lt;br&gt;
version of the site to stay available - probably with a banner that &lt;br&gt;
this is only still available for archive purposes (and disable any &lt;br&gt;
logins and form-submissions except admin).&lt;/p&gt;
&lt;p&gt;I, for one, still semi-regularly have to go back to the issue tracker &lt;br&gt;
on the PEAR site to dig up the reasoning/motivation for decisions &lt;br&gt;
taken long ago for an old codebase, where the commit messages, &lt;br&gt;
especially for older commits, are not great.&lt;/p&gt;
&lt;p&gt;Not being able to do so anymore would definitely have some impact on &lt;br&gt;
the work being done on that codebase.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Was just trying to dig up the background of some old bugfixes on the &lt;br&gt;
PEAR website and when I click to see the details of an individual bug &lt;br&gt;
report, I now get an &amp;quot;ERROR: the user who submitted this bug has not yet &lt;br&gt;
confirmed their email address&amp;quot; page instead of seeing the bug details. &lt;br&gt;
Example: &lt;a href="https://pear.php.net/bugs/bug.php?id=20093" rel="nofollow" target="_blank"&gt;https://pear.php.net/bugs/bug.php?id=20093&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Clearly this is not helpful.&lt;/p&gt;
&lt;p&gt;Not sure when this changed, but felt like something related to last &lt;br&gt;
month's conversation, so I figured I'd flag it.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Smile, &lt;br&gt;
Juliette&lt;/p&gt;
&lt;/blockquote&gt;
</description><guid>6A60B366.5080907@adviesenzo.nl</guid><pubDate>Wed, 22 Jul 2026 12:11:18 +0000</pubDate></item><item><title>[RFC] Typed array declarations</title><link>https://externals.io/message/132073</link><description>&lt;p&gt;Hey there Matheus,&lt;/p&gt;
&lt;p&gt;plus: we may need to use turbofish syntax like &lt;code&gt;array::&amp;lt;int, Product&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;to avoid issues with the parser.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I didn't dive too much, but I don't think it's needed and we could make the &lt;br&gt;
array syntax work like proposed in the RFC.&lt;/p&gt;
&lt;p&gt;I don’t know where this fear comes from. I have monomorphized generics&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;implemented in a branch already using the standard C&amp;lt;T&amp;gt; syntax and it works &lt;br&gt;
great. Combined with the struct proposal I also am sitting on until 8.6 is &lt;br&gt;
finalized, they combine to form strongly-typed value-type data structures.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Exactly, I think this is very much doable, and since you already have a &lt;br&gt;
working branch with that working shows that it is, thanks Holly.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;---&lt;/em&gt; &lt;br&gt;
&lt;em&gt;Best Regards,&lt;/em&gt; &lt;br&gt;
&lt;em&gt;Wendell Adriel.&lt;/em&gt; &lt;br&gt;
&lt;em&gt;Software Engineer &amp;amp; Architect&lt;/em&gt; &lt;br&gt;
&lt;em&gt;&lt;a href="https://wendelladriel.com" rel="nofollow" target="_blank"&gt;https://wendelladriel.com&lt;/a&gt; &lt;a href="https://wendelladriel.com"&gt;https://wendelladriel.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Em qua., 22 de jul. de 2026 às 04:19, Holly Schilling &amp;lt; &lt;br&gt;
&lt;a href="mailto:holly.a.schilling@outlook.com" rel="nofollow" target="_blank"&gt;holly.a.schilling@outlook.com&lt;/a&gt;&amp;gt; escreveu:&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;plus: we may need to use turbofish syntax like &lt;code&gt;array::&amp;lt;int, Product&amp;gt;&lt;/code&gt; &lt;br&gt;
to avoid issues with the parser.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I don’t know where this fear comes from. I have monomorphized generics &lt;br&gt;
implemented in a branch already using the standard C&amp;lt;T&amp;gt; syntax and it works &lt;br&gt;
great. Combined with the struct proposal I also am sitting on until 8.6 is &lt;br&gt;
finalized, they combine to form strongly-typed value-type data structures.&lt;/p&gt;
&lt;/blockquote&gt;
</description><guid>CA+1VZ8tusuy39cZLpuc==XF0xAG7h2fPCxCUFFHJJbKLuG6zHg@mail.gmail.com</guid><pubDate>Wed, 22 Jul 2026 11:03:15 +0000</pubDate></item><item><title>[RFC] Typed array declarations</title><link>https://externals.io/message/132072</link><description>&lt;p&gt;Hey Michał,&lt;/p&gt;
&lt;p&gt;I actually moved away from the direction I originally suggested (adding&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;element constraints to arrays). I'm now exploring a separate approach based &lt;br&gt;
on dedicated immutable value types, but it's still too early to discuss as &lt;br&gt;
a concrete proposal. I'd rather wait until the design has stabilized.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Interesting, I'll keep an eye out when you make this public!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;---&lt;/em&gt; &lt;br&gt;
&lt;em&gt;Best Regards,&lt;/em&gt; &lt;br&gt;
&lt;em&gt;Wendell Adriel.&lt;/em&gt; &lt;br&gt;
&lt;em&gt;Software Engineer &amp;amp; Architect&lt;/em&gt; &lt;br&gt;
&lt;em&gt;&lt;a href="https://wendelladriel.com" rel="nofollow" target="_blank"&gt;https://wendelladriel.com&lt;/a&gt; &lt;a href="https://wendelladriel.com"&gt;https://wendelladriel.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
</description><guid>CA+1VZ8uT7rPi33nRpkdJ2koUY4BrZh5r4eFVGnj2gxfSY3Fz9w@mail.gmail.com</guid><pubDate>Wed, 22 Jul 2026 11:00:58 +0000</pubDate></item><item><title>[RFC] Typed array declarations</title><link>https://externals.io/message/132071</link><description>&lt;blockquote&gt;
&lt;p&gt;My largest concern is that this proposal substantially overlaps with the reified generics RFC, which is being held until after the current code freeze in late August or early September at the earliest.&lt;/p&gt;
&lt;p&gt;In particular, both proposals need to answer many of the same questions around parameterized types, variance, Reflection, runtime enforcement, inference, and type identity. I think we should avoid committing PHP to a separate set of array-specific rules before the broader generics proposal has been discussed. Otherwise, we risk either constraining the generics design or ending up with two parameterization models that behave differently.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;plus: we may need to use turbofish syntax like &lt;code&gt;array::&amp;lt;int, Product&amp;gt;&lt;/code&gt; &lt;br&gt;
to avoid issues with the parser.&lt;/p&gt;
</description><guid>CAAZKEqjZbjn_KZa314sFmYJVvx6P22WM=dju7ux_GWqxT4D9+Q@mail.gmail.com</guid><pubDate>Tue, 21 Jul 2026 21:04:11 +0000</pubDate></item><item><title>[META] Weekly Internals Summary Videos</title><link>https://externals.io/message/132070</link><description>&lt;p&gt;Fennic: Thanks for the encouragement. I'm glad you're seeing value in it!&lt;/p&gt;
&lt;p&gt;Rob: We'll see if this thread ends up in the final script, haha. &amp;quot;And this &lt;br&gt;
week's human interest story: some dink named Len is asking everyone for &lt;br&gt;
their social media handles&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi Len,&lt;/p&gt;
&lt;p&gt;First off, Great work, I appreciate your effort to glean more &lt;br&gt;
visibility into the goings on in the internals of PHP and you have a nice &lt;br&gt;
presentation style for your videos and a soothing voice.&lt;/p&gt;
&lt;p&gt;Secondly, anything you read from me, simply refer to as &lt;a href="https://en.wikipedia.org/wiki/Fennec_fox"&gt;fennic&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi contributors,&lt;/p&gt;
&lt;p&gt;For the last 6 weeks or so, in an effort to make the PHP internals more &lt;br&gt;
accessible and visible to a wider audience, I've been summarizing the &lt;br&gt;
week's discussions into a ~10-15 minute weekly video, then breaking that &lt;br&gt;
out into written content where it's supported, and threaded content for &lt;br&gt;
other micro-blogging platforms.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I have two things to discuss:&lt;/em&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;I'm trying to ensure that contributors are properly &lt;br&gt;
tagged/attributed/[at]mentioned on all these platforms, but I just don't &lt;br&gt;
have a well built-out list of all of your social handles. I've collected &lt;br&gt;
some of these from the internals Discord and through web searches, but it's &lt;br&gt;
not enough. To collect these handles for platforms like LinkedIn, Reddit, &lt;br&gt;
Twitter, Bsky, Threads, Mastodon, etc, would it make more sense for you all &lt;br&gt;
to &lt;em&gt;reply in this thread with all of your handles&lt;/em&gt;, or should I create a &lt;br&gt;
simple &lt;em&gt;Google Form&lt;/em&gt; and link &lt;em&gt;that&lt;/em&gt; instead?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To maintain accuracy, I want to include publishing the video link here &lt;br&gt;
to the internals list as part of my publishing workflow each week. I hope &lt;br&gt;
this provides an easy path for anyone who feels I've misunderstood or &lt;br&gt;
misrepresented their messages to correct me, allowing me to include a &lt;br&gt;
'corrections and errata' segment in the videos. If we find that we're &lt;br&gt;
having to do multiple corections each week, then I'll probably post the &lt;br&gt;
first draft to the list and allow comments and corrections during an ~8hr &lt;br&gt;
window &lt;em&gt;before&lt;/em&gt; filming.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;p&gt;The data cutoff is weekly at 10pm Vancouver time (UTC-7) each Tuesday &lt;br&gt;
evening. First draft of the script is usually ready by 11:30 PM, and &lt;br&gt;
filming generally starts at 9:30am the subsequent Wednesday morning. &lt;br&gt;
Publishing is usually finished around ~5pm that same Wednesday. I'm working &lt;br&gt;
hard to speed this up, but it's an iterative process.&lt;/p&gt;
&lt;p&gt;I'm going to include the link to last week's video here so that we can &lt;br&gt;
address any necessary corrections, and I'll also a list of the platforms &lt;br&gt;
where I posted it. If anyone has ideas for other platforms where this &lt;br&gt;
visibility work might be appreciated, I'd love to know them. I've also been &lt;br&gt;
submitting to laravel-news, and the phpweekly newsletter.&lt;/p&gt;
&lt;p&gt;youtube     &lt;a href="https://youtu.be/cGNa33qGqEg" rel="nofollow" target="_blank"&gt;https://youtu.be/cGNa33qGqEg&lt;/a&gt; &lt;br&gt;
r/php &lt;br&gt;
&lt;a href="https://www.reddit.com/r/PHP/comments/1uxnmsp/this_week_in_php_internals_july_15_2026/" rel="nofollow" target="_blank"&gt;https://www.reddit.com/r/PHP/comments/1uxnmsp/this_week_in_php_internals_july_15_2026/&lt;/a&gt; &lt;br&gt;
r/symfony &lt;br&gt;
&lt;a href="https://www.reddit.com/r/symfony/comments/1uxnuq0/this_week_in_php_internals_july_15_2026/" rel="nofollow" target="_blank"&gt;https://www.reddit.com/r/symfony/comments/1uxnuq0/this_week_in_php_internals_july_15_2026/&lt;/a&gt; &lt;br&gt;
r/laravel &lt;br&gt;
&lt;a href="https://www.reddit.com/r/laravel/comments/1uxntqb/this_week_in_php_internals_july_15_2026/" rel="nofollow" target="_blank"&gt;https://www.reddit.com/r/laravel/comments/1uxntqb/this_week_in_php_internals_july_15_2026/&lt;/a&gt; &lt;br&gt;
&lt;a href="http://dev.to" rel="nofollow" target="_blank"&gt;dev.to&lt;/a&gt; &lt;br&gt;
&lt;a href="https://dev.to/projektgopher/this-week-in-php-internals-july-15-2026-4nhb" rel="nofollow" target="_blank"&gt;https://dev.to/projektgopher/this-week-in-php-internals-july-15-2026-4nhb&lt;/a&gt; &lt;br&gt;
mastodon    &lt;a href="https://phpc.social/@ProjektGopher/116926982520569384" rel="nofollow" target="_blank"&gt;https://phpc.social/@ProjektGopher/116926982520569384&lt;/a&gt; &lt;br&gt;
threads     &lt;a href="https://www.threads.com/@projektgopher/post/Da1bNf_lL-r" rel="nofollow" target="_blank"&gt;https://www.threads.com/@projektgopher/post/Da1bNf_lL-r&lt;/a&gt; &lt;br&gt;
bsky        &lt;a href="https://bsky.app/profile/projektgopher.com/post/3mqq27xvmac2s" rel="nofollow" target="_blank"&gt;https://bsky.app/profile/projektgopher.com/post/3mqq27xvmac2s&lt;/a&gt; &lt;br&gt;
twitter     &lt;a href="https://x.com/ProjektGopher/status/2077559023998816461" rel="nofollow" target="_blank"&gt;https://x.com/ProjektGopher/status/2077559023998816461&lt;/a&gt; &lt;br&gt;
linkedin &lt;br&gt;
&lt;a href="https://www.linkedin.com/feed/update/urn:li:share:7483325450434400256/" rel="nofollow" target="_blank"&gt;https://www.linkedin.com/feed/update/urn:li:share:7483325450434400256/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thanks everyone for your help and support (especially on Discord), and &lt;br&gt;
I'm eager to keep this thing going.&lt;/p&gt;
&lt;p&gt;Cheers, &lt;br&gt;
Len&lt;/p&gt;
&lt;p&gt;You are going to include this email discussion in your video? right? :)&lt;/p&gt;
&lt;p&gt;— Rob&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
</description><guid>CAEwAiAF9UfyCYDOQbfEQKFTtfZSXqgAqwhxRoQidj9i_dX3yqw@mail.gmail.com</guid><pubDate>Tue, 21 Jul 2026 19:14:39 +0000</pubDate></item><item><title>[RFC] Typed array declarations</title><link>https://externals.io/message/132069</link><description>&lt;p&gt;pon., 20 lip 2026, 17:22 użytkownik Larry Garfield &lt;a href="mailto:larry@garfieldtech.com"&gt;larry@garfieldtech.com&lt;/a&gt; &lt;br&gt;
napisał:&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi Wendell,&lt;/p&gt;
&lt;p&gt;Thanks for updating the RFC.&lt;/p&gt;
&lt;p&gt;My largest concern is that this proposal substantially overlaps with &lt;br&gt;
the reified generics RFC, which is being held until after the current &lt;br&gt;
code freeze in late August or early September at the earliest.&lt;/p&gt;
&lt;p&gt;In particular, both proposals need to answer many of the same questions &lt;br&gt;
around parameterized types, variance, Reflection, runtime enforcement, &lt;br&gt;
inference, and type identity. I think we should avoid committing PHP to &lt;br&gt;
a separate set of array-specific rules before the broader generics &lt;br&gt;
proposal has been discussed. Otherwise, we risk either constraining the &lt;br&gt;
generics design or ending up with two parameterization models that &lt;br&gt;
behave differently.&lt;/p&gt;
&lt;p&gt;My second concern is the proposed variance model. It is extremely &lt;br&gt;
complex for a mutable built-in collection. Collections are normally &lt;br&gt;
invariant unless their API clearly separates reading from writing. The &lt;br&gt;
generics RFC follows that model: generic parameters are invariant by &lt;br&gt;
default, and covariance or contravariance is permitted only where their &lt;br&gt;
usage can be proven safe.&lt;/p&gt;
&lt;p&gt;Here, an &lt;code&gt;array&amp;lt;Dog&amp;gt;&lt;/code&gt; is treated as compatible with &lt;code&gt;array&amp;lt;Animal&amp;gt;&lt;/code&gt; &lt;br&gt;
only at selected by-value boundaries, based on PHP's copy-on-write &lt;br&gt;
separation. It then becomes invariant for writable aliases and requires &lt;br&gt;
additional rules for shared references.&lt;/p&gt;
&lt;p&gt;That does not appear to establish a normal subtype relationship. It &lt;br&gt;
establishes context-dependent boundary compatibility whose soundness &lt;br&gt;
depends on engine-level array separation and reference behavior. I &lt;br&gt;
think that will be challenging for users to understand and difficult &lt;br&gt;
for the engine to enforce consistently.&lt;/p&gt;
&lt;p&gt;Making parameterized arrays invariant would be substantially simpler:&lt;/p&gt;
&lt;p&gt;array&amp;lt;int, Dog&amp;gt; !== array&amp;lt;int, Animal&amp;gt;&lt;/p&gt;
&lt;p&gt;If covariance is desirable, I think it should come from a separate &lt;br&gt;
read-only collection or interface rather than from mutable arrays.&lt;/p&gt;
&lt;p&gt;My third concern is the one-argument syntax:&lt;/p&gt;
&lt;p&gt;array&amp;lt;TValue&amp;gt;&lt;/p&gt;
&lt;p&gt;This implicitly means:&lt;/p&gt;
&lt;p&gt;array&amp;lt;int, TValue&amp;gt;&lt;/p&gt;
&lt;p&gt;That is surprising. It is not a general array of values because string &lt;br&gt;
keys are rejected, but it is not a list either because the integer keys &lt;br&gt;
need not be contiguous or zero-based. I would expect &lt;code&gt;array&amp;lt;TValue&amp;gt;&lt;/code&gt; to &lt;br&gt;
constrain only the value type, with the key type remaining &lt;br&gt;
&lt;code&gt;int|string&lt;/code&gt;. A future &lt;code&gt;list&amp;lt;TValue&amp;gt;&lt;/code&gt; could express the more &lt;br&gt;
restrictive numeric-keyed form.&lt;/p&gt;
&lt;p&gt;Lastly, I am concerned about repeated runtime validation. Since &lt;br&gt;
ordinary arrays do not retain a trusted element-type identity, an &lt;br&gt;
untyped boundary loses any information established by an earlier check:&lt;/p&gt;
&lt;p&gt;function foo(array&amp;lt;Bar&amp;gt; $arr): int &lt;br&gt;
{ &lt;br&gt;
$acc = 0;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;foreach ($arr as $bar) {
    $acc += $bar-&amp;gt;count;
}

return $acc;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;function bar(array $arr): int &lt;br&gt;
{ &lt;br&gt;
return foo($arr); &lt;br&gt;
}&lt;/p&gt;
&lt;p&gt;$arr = get_super_huge_array(); &lt;br&gt;
echo bar($arr);&lt;/p&gt;
&lt;p&gt;At the call to foo(), PHP must recursively validate the entire array &lt;br&gt;
again, even if the same array was previously checked elsewhere. For &lt;br&gt;
large or nested arrays, this makes a type declaration potentially &lt;br&gt;
introduce an O(n) or recursive O(n) cost at every typed boundary.&lt;/p&gt;
&lt;p&gt;This is another reason I think typed arrays should be considered &lt;br&gt;
together with the wider generics design. A broader design may be able &lt;br&gt;
to provide type identity, inference, specialized collection types, or &lt;br&gt;
another mechanism that avoids repeatedly rediscovering the element type &lt;br&gt;
by traversing the value.&lt;/p&gt;
&lt;p&gt;I would strongly prefer that this RFC wait until the reified generics &lt;br&gt;
RFC has been discussed, or at minimum limit itself to syntax and &lt;br&gt;
Reflection experimentation without committing to independent variance &lt;br&gt;
and runtime semantics.&lt;/p&gt;
&lt;p&gt;— Rob&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I am opposed to this RFC, for all the reasons Rob mentioned.  Moreover, I &lt;br&gt;
don't believe the issues can be resolved by just waiting for the reified &lt;br&gt;
generics RFC (which I really hope passes).  The core issue is that PHP &lt;br&gt;
arrays are an over-broad data structure, and we need to have a hard, &lt;br&gt;
type-based (not just implied by generics) distinction between &lt;br&gt;
lists/sequences, sets, and dictionaries/maps, the same way most languages &lt;br&gt;
do.&lt;/p&gt;
&lt;p&gt;There are a few ways that could be done: 3 generic objects (a la Kotlin, &lt;br&gt;
my preferred approach), 3 generic objects with extension functions &lt;br&gt;
(assuming we can get those), 3 new core data types with extension functions &lt;br&gt;
(very hard to implement as I understand it), etc.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I suspect the 3rd option implementation challenge may not be as prohibitive &lt;br&gt;
as it first appears. The design space seems larger than just &amp;quot;extend &lt;br&gt;
arrays&amp;quot; versus &amp;quot;generic objects&amp;quot;. I'm still exploring it though, so I'd &lt;br&gt;
rather not jump to conclusions yet.&lt;/p&gt;
&lt;p&gt;Cheers, &lt;br&gt;
Michał Marcin Brzuchalski&lt;/p&gt;
</description><guid>CABdc3WqyuzYQxrf1X9tObf9FP6uHgLtuuDhaUWPf_gXYbFX1fw@mail.gmail.com</guid><pubDate>Tue, 21 Jul 2026 14:59:34 +0000</pubDate></item><item><title>[META] Weekly Internals Summary Videos</title><link>https://externals.io/message/132068</link><description>&lt;p&gt;Hi Len,&lt;/p&gt;
&lt;p&gt;First off, Great work, I appreciate your effort to glean more &lt;br&gt;
visibility into the goings on in the internals of PHP and you have a nice &lt;br&gt;
presentation style for your videos and a soothing voice.&lt;/p&gt;
&lt;p&gt;Secondly, anything you read from me, simply refer to as &lt;a href="https://en.wikipedia.org/wiki/Fennec_fox"&gt;fennic&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi contributors,&lt;/p&gt;
&lt;p&gt;For the last 6 weeks or so, in an effort to make the PHP internals more &lt;br&gt;
accessible and visible to a wider audience, I've been summarizing the &lt;br&gt;
week's discussions into a ~10-15 minute weekly video, then breaking that &lt;br&gt;
out into written content where it's supported, and threaded content for &lt;br&gt;
other micro-blogging platforms.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I have two things to discuss:&lt;/em&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;I'm trying to ensure that contributors are properly &lt;br&gt;
tagged/attributed/[at]mentioned on all these platforms, but I just don't &lt;br&gt;
have a well built-out list of all of your social handles. I've collected &lt;br&gt;
some of these from the internals Discord and through web searches, but it's &lt;br&gt;
not enough. To collect these handles for platforms like LinkedIn, Reddit, &lt;br&gt;
Twitter, Bsky, Threads, Mastodon, etc, would it make more sense for you all &lt;br&gt;
to &lt;em&gt;reply in this thread with all of your handles&lt;/em&gt;, or should I create a &lt;br&gt;
simple &lt;em&gt;Google Form&lt;/em&gt; and link &lt;em&gt;that&lt;/em&gt; instead?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To maintain accuracy, I want to include publishing the video link here &lt;br&gt;
to the internals list as part of my publishing workflow each week. I hope &lt;br&gt;
this provides an easy path for anyone who feels I've misunderstood or &lt;br&gt;
misrepresented their messages to correct me, allowing me to include a &lt;br&gt;
'corrections and errata' segment in the videos. If we find that we're &lt;br&gt;
having to do multiple corections each week, then I'll probably post the &lt;br&gt;
first draft to the list and allow comments and corrections during an ~8hr &lt;br&gt;
window &lt;em&gt;before&lt;/em&gt; filming.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;p&gt;The data cutoff is weekly at 10pm Vancouver time (UTC-7) each Tuesday &lt;br&gt;
evening. First draft of the script is usually ready by 11:30 PM, and &lt;br&gt;
filming generally starts at 9:30am the subsequent Wednesday morning. &lt;br&gt;
Publishing is usually finished around ~5pm that same Wednesday. I'm working &lt;br&gt;
hard to speed this up, but it's an iterative process.&lt;/p&gt;
&lt;p&gt;I'm going to include the link to last week's video here so that we can &lt;br&gt;
address any necessary corrections, and I'll also a list of the platforms &lt;br&gt;
where I posted it. If anyone has ideas for other platforms where this &lt;br&gt;
visibility work might be appreciated, I'd love to know them. I've also been &lt;br&gt;
submitting to laravel-news, and the phpweekly newsletter.&lt;/p&gt;
&lt;p&gt;youtube     &lt;a href="https://youtu.be/cGNa33qGqEg" rel="nofollow" target="_blank"&gt;https://youtu.be/cGNa33qGqEg&lt;/a&gt; &lt;br&gt;
r/php &lt;br&gt;
&lt;a href="https://www.reddit.com/r/PHP/comments/1uxnmsp/this_week_in_php_internals_july_15_2026/" rel="nofollow" target="_blank"&gt;https://www.reddit.com/r/PHP/comments/1uxnmsp/this_week_in_php_internals_july_15_2026/&lt;/a&gt; &lt;br&gt;
r/symfony &lt;br&gt;
&lt;a href="https://www.reddit.com/r/symfony/comments/1uxnuq0/this_week_in_php_internals_july_15_2026/" rel="nofollow" target="_blank"&gt;https://www.reddit.com/r/symfony/comments/1uxnuq0/this_week_in_php_internals_july_15_2026/&lt;/a&gt; &lt;br&gt;
r/laravel &lt;br&gt;
&lt;a href="https://www.reddit.com/r/laravel/comments/1uxntqb/this_week_in_php_internals_july_15_2026/" rel="nofollow" target="_blank"&gt;https://www.reddit.com/r/laravel/comments/1uxntqb/this_week_in_php_internals_july_15_2026/&lt;/a&gt; &lt;br&gt;
&lt;a href="http://dev.to" rel="nofollow" target="_blank"&gt;dev.to&lt;/a&gt; &lt;br&gt;
&lt;a href="https://dev.to/projektgopher/this-week-in-php-internals-july-15-2026-4nhb" rel="nofollow" target="_blank"&gt;https://dev.to/projektgopher/this-week-in-php-internals-july-15-2026-4nhb&lt;/a&gt; &lt;br&gt;
mastodon    &lt;a href="https://phpc.social/@ProjektGopher/116926982520569384" rel="nofollow" target="_blank"&gt;https://phpc.social/@ProjektGopher/116926982520569384&lt;/a&gt; &lt;br&gt;
threads     &lt;a href="https://www.threads.com/@projektgopher/post/Da1bNf_lL-r" rel="nofollow" target="_blank"&gt;https://www.threads.com/@projektgopher/post/Da1bNf_lL-r&lt;/a&gt; &lt;br&gt;
bsky        &lt;a href="https://bsky.app/profile/projektgopher.com/post/3mqq27xvmac2s" rel="nofollow" target="_blank"&gt;https://bsky.app/profile/projektgopher.com/post/3mqq27xvmac2s&lt;/a&gt; &lt;br&gt;
twitter     &lt;a href="https://x.com/ProjektGopher/status/2077559023998816461" rel="nofollow" target="_blank"&gt;https://x.com/ProjektGopher/status/2077559023998816461&lt;/a&gt; &lt;br&gt;
linkedin &lt;br&gt;
&lt;a href="https://www.linkedin.com/feed/update/urn:li:share:7483325450434400256/" rel="nofollow" target="_blank"&gt;https://www.linkedin.com/feed/update/urn:li:share:7483325450434400256/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thanks everyone for your help and support (especially on Discord), and I'm &lt;br&gt;
eager to keep this thing going.&lt;/p&gt;
&lt;p&gt;Cheers, &lt;br&gt;
Len&lt;/p&gt;
&lt;p&gt;You are going to include this email discussion in your video? right? :)&lt;/p&gt;
&lt;p&gt;— Rob&lt;/p&gt;
&lt;/blockquote&gt;
</description><guid>CAO__Xv42te0OYU9QLV9U9SAEfE3S_g7618-350i-UGSFggL3UA@mail.gmail.com</guid><pubDate>Tue, 21 Jul 2026 14:53:47 +0000</pubDate></item><item><title>[RFC] [VOTE] Minimum supported versions for PHP 8.6</title><link>https://externals.io/message/132067</link><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;I don't exactly understand why that Autoconf section does not mention &lt;br&gt;
that &lt;br&gt;
it is not available on distro levels for RHEL 8 and 9 so it makes &lt;br&gt;
things &lt;br&gt;
difficult for packagers like Remi who explicitly asked to delay it:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The proposal clearly specifies the minimum versions for various &lt;br&gt;
distros.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Well but it's pretty confusing for voters because they don't know that &lt;br&gt;
our &lt;br&gt;
minimum target is RHEL 8 which we have been using for deciding about &lt;br&gt;
minimum versions before. The fact that this even goes through RFC in &lt;br&gt;
this&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Depending on how you look at it, RHEL 8 is either already EOL or will &lt;br&gt;
live until 2033. Halting all library upgrades for another 7 years is &lt;br&gt;
neither in the interest of PHP users and maintainers.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;form is not good because we should rather have a general policy about &lt;br&gt;
minimum of supported distros that PHP is built on and set minimum deps &lt;br&gt;
versions based on that. This just hides this fact and for voters that &lt;br&gt;
have &lt;br&gt;
no idea what the supported distro versions are as this is very hard to &lt;br&gt;
notice.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As the RFC states, the autoconf requirement only &lt;em&gt;affects builds from &lt;br&gt;
git&lt;/em&gt;. The official releases from the PHP project include a ready-made &lt;br&gt;
&lt;code&gt;./configure&lt;/code&gt; script and thus do not require autoconf to build PHP. This &lt;br&gt;
is similar to ext/uri and the uriparser dependency, where PHP bundles a &lt;br&gt;
working version, but if you are unhappy with that, then you’ll need a &lt;br&gt;
very recent version of the library that may not be provided on older &lt;br&gt;
distros.&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;The question has been left unanswered. Since the only reply was a &lt;br&gt;
vague &lt;br&gt;
“I prefer to wait”, I proceeded with writing the RFC.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Well, that seems kind of clear to me that some possibility is there &lt;br&gt;
otherwise there wouldn't be such preference.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;From what I see and understand, the core RHEL 8 distribution only &lt;br&gt;
provides PHP 7.2, any newer PHP version requires the use of external &lt;br&gt;
repositories - or a custom build. If you don’t want to rely on the &lt;br&gt;
PHP-provided &lt;code&gt;./configure&lt;/code&gt; script, then autoconf 2.71 would similarly be &lt;br&gt;
available in external repositories (EPEL).&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;I consider being able to properly rely on C11 functionality to be &lt;br&gt;
worth &lt;br&gt;
it. Generally speaking, compilers on operating systems that don’t have &lt;br&gt;
autoconf 2.71 likely also don’t (fully) support C11, the lack of a &lt;br&gt;
modern autoconf is really just a canary there.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Do you have some specific problems and why does it need to be enforced &lt;br&gt;
just &lt;br&gt;
before the feature freeze and cannot wait longer?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I have various pending PRs to clean up custom implementations for things &lt;br&gt;
that are guaranteed by C11. But these naturally require that we actually &lt;br&gt;
can rely on C11 in practice with proper checks rather than an &lt;br&gt;
easy-to-miss note in the documentation.&lt;/p&gt;
&lt;p&gt;With regard to the timing, it was just convenient to bundle the two &lt;br&gt;
upgrades together and I relied on Eric to handle the RFC stuff. Given &lt;br&gt;
that it's cleanup-only and the first Alphas have already been released, &lt;br&gt;
I'd be okay with delaying the merge of the autoconf upgrade for (early) &lt;br&gt;
PHP 8.7.&lt;/p&gt;
&lt;p&gt;Best regards &lt;br&gt;
Tim Düsterhus&lt;/p&gt;
</description><guid>aa2cff91164f7d890a54c9fed0e875eb@bastelstu.be</guid><pubDate>Tue, 21 Jul 2026 13:51:08 +0000</pubDate></item><item><title>[RFC] [DISCUSSION] ext/gd 2.4 — codec sync, Gd\* OOP API, 2D vector/canvas</title><link>https://externals.io/message/132066</link><description>&lt;blockquote&gt;
&lt;p&gt;hi Rowan,&lt;/p&gt;
&lt;p&gt;A quick side-note,  a reply that opens with at least a hello goes a &lt;br&gt;
long way. It costs nothing and it is the difference between a review &lt;br&gt;
and a brush off. We are not bots and don't talk to bots.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hi Pierre,&lt;/p&gt;
&lt;p&gt;I apologise completely for this. I often forget to add a greeting when &lt;br&gt;
editing a reply, particularly on mobile. I definitely do not want to &lt;br&gt;
sound rude or inhuman, so I will try to remember to include this in future.&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Can you clarify this point - what PR was this, and why did it need to be merged before even announcing the RFC? &lt;br&gt;
I wonder why replying without actually reading the rfc and the linked &lt;br&gt;
PR you asked about here linked in the RFC? or is there a particular &lt;br&gt;
outcome expected?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;I worded it that way to make sure I didn't look in the wrong place and &lt;br&gt;
jump to the wrong conclusions. But the important part of the question &lt;br&gt;
was the &amp;quot;why&amp;quot;, which you have answered below.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;However, to answer your question, It was important tot:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;validate full compatibility of the libgd update with current php on &lt;br&gt;
all platforms and supported features to date&lt;/li&gt;
&lt;li&gt;it uses some &amp;quot;modern&amp;quot; C features, so a full blown validation on php &lt;br&gt;
CIs is a must have first&lt;/li&gt;
&lt;li&gt;Actual additions to php are thin layers now added in this thread &lt;br&gt;
RFC. No more &amp;quot;business&amp;quot; logic in the binding itself but if needed to &lt;br&gt;
handle older external versions.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;That makes sense. I realise it's too late to say now, but it sounds like &lt;br&gt;
the RFC text could have been presented &lt;em&gt;in parallel&lt;/em&gt; to that &lt;br&gt;
verification. That would have given more time for people to digest the &lt;br&gt;
new user-facing API, and suggest any changes without running as close to &lt;br&gt;
the feature freeze.&lt;/p&gt;
&lt;p&gt;It's quite common for implementations not to be finalised even when an &lt;br&gt;
RFC is voted on, as long as changes don't impact what was agreed in the &lt;br&gt;
RFC. The policy that has been formalised explicitly allows for that to &lt;br&gt;
happen during the Beta period.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This is a PR and RFC that massively improves existing functions. Read: &lt;br&gt;
everything under the hood, aside from the new APIs, is fixes and &lt;br&gt;
improvements to what already exists. The new APIs themselves have zero &lt;br&gt;
impact on existing functionality. They prepare PHP 9 and bring a much &lt;br&gt;
more developer friendly way to do image operations. And the recurring &lt;br&gt;
answer, too many times, has been &amp;quot;policies&amp;quot; or &amp;quot;wiki syntax.&amp;quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I understand your frustration, and from what I've read, it looks like a &lt;br&gt;
really great addition to the language.&lt;/p&gt;
&lt;p&gt;But I do think its important that new features are given the time and &lt;br&gt;
attention needed to refine small details. Names of new keywords or &lt;br&gt;
classes, signatures of new methods, etc, are generally very easy to &lt;br&gt;
change during an RFC discussion, but very hard to change once it's made &lt;br&gt;
it into a stable release.&lt;/p&gt;
&lt;p&gt;On the other hand, it's useful to have a cut-off point for new features &lt;br&gt;
somewhere in the release process. If an RFC is in discussion close to &lt;br&gt;
that cut-off point, there's always going to be an awkward decision: do &lt;br&gt;
we cut off discussion because we're running out of time for the release, &lt;br&gt;
or do we push the feature back a year so we can have the proper discussion?&lt;/p&gt;
&lt;p&gt;Although it feels like bureaucracy, having a pre-determined cut-off date &lt;br&gt;
can in theory make that decision easier: we don't have to debate for &lt;br&gt;
every RFC whether it's &amp;quot;small enough&amp;quot; or &amp;quot;important enough&amp;quot; to carry on &lt;br&gt;
discussing, we just have to ask &amp;quot;is it ready in time for the cut-off?&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This release is still in alpha. Whatever the plan is for the next &lt;br&gt;
beta, we're not at RC yet, and new approved features landing before RC &lt;br&gt;
is exactly what we've reasonably expected before these non pragmatic &lt;br&gt;
policies changes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I'm not sure how strictly it was previously enforced, but the release &lt;br&gt;
cycle update RFC from two years ago refers to the requirement for RFCs &lt;br&gt;
to be voted before beta (but not necessarily merged) as an existing &lt;br&gt;
policy: &lt;a href="https://wiki.php.net/rfc/release_cycle_update" rel="nofollow" target="_blank"&gt;https://wiki.php.net/rfc/release_cycle_update&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That RFC actually made that deadline later, because it shortened the &lt;br&gt;
overall timeline, moving the feature freeze from July to August; and &lt;br&gt;
thus the RFC discussion deadline from June to July.&lt;/p&gt;
&lt;p&gt;Wherever that deadline falls, there will always be proposals which, for &lt;br&gt;
whatever reason, are written close to it. Naturally, the authors of &lt;br&gt;
those proposals will be frustrated at their change being held back until &lt;br&gt;
the following year; but on its own, that's not a reason to ignore the &lt;br&gt;
agreed cut-off date. Even if we allowed some discretion to land changes &lt;br&gt;
after the deadline, it would need some justification - perhaps the RFC &lt;br&gt;
is very small, or amends an existing RFC already in the release.&lt;/p&gt;
&lt;p&gt;To me, a well-documented process feels fairer than making subjective &lt;br&gt;
judgements on the worthiness of every RFC.&lt;/p&gt;
&lt;p&gt;I will end, though, by saying I have no particular authority, and this &lt;br&gt;
is all just my opinion. I wish you well, and look forward to digging &lt;br&gt;
into your proposal, whichever release it ends up targeting.&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;-- &lt;br&gt;
Rowan Tommins &lt;br&gt;
[IMSoP]&lt;/p&gt;
</description><guid>f423bc7a-0281-4a72-996c-0b789bf8c9dc@rwec.co.uk</guid><pubDate>Tue, 21 Jul 2026 12:18:47 +0000</pubDate></item><item><title>[RFC] Typed array declarations</title><link>https://externals.io/message/132065</link><description>&lt;p&gt;pon., 20 lip 2026 o 13:48 Wendell Adriel &lt;a href="mailto:wendelladriel.ti@gmail.com"&gt;wendelladriel.ti@gmail.com&lt;/a&gt; &lt;br&gt;
napisał(a):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hey Michał,&lt;/p&gt;
&lt;p&gt;This raises a broader architectural question:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Should Level 3 typed arrays rely on function-specific guards for these &lt;br&gt;
APIs, or should internal APIs gradually move towards a model where the &lt;br&gt;
result is built in a temporary zval and only assigned through a single &lt;br&gt;
typed assignment after construction?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;That approach would naturally preserve atomicity and would work not only &lt;br&gt;
for list, but also for future typed arrays.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;I'm not claiming this makes Level 3 impossible. Quite the opposite - I &lt;br&gt;
think it highlights an implementation issue that any persistent refinement &lt;br&gt;
over mutable arrays will eventually have to solve, regardless of whether &lt;br&gt;
the refinement is list, array&amp;lt;T&amp;gt;, or something else.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;I'd be interested to hear whether this has already been considered during &lt;br&gt;
the design of Level 3, or whether this class of internal APIs simply hasn't &lt;br&gt;
been explored yet.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is very interesting. &lt;br&gt;
I thought about it, but didn't dive too much into it.&lt;/p&gt;
&lt;p&gt;However, from some checks I've done myself, when you say: &amp;quot;or should &lt;br&gt;
internal APIs gradually move towards a model where the result is built in a &lt;br&gt;
temporary zval and only assigned through a single typed assignment after &lt;br&gt;
construction?&amp;quot; &lt;br&gt;
That going into this direction would be very beneficial, however, I think &lt;br&gt;
this would imply touching a lot of things that can have a broader impact. &lt;br&gt;
If this is something that people would agree to follow, I think it would &lt;br&gt;
be great.&lt;/p&gt;
&lt;p&gt;I've been implementing a prototype of persistent list-typed properties&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;(where list is a structural refinement of array, i.e. &lt;code&gt;array_is_list()&lt;/code&gt; must &lt;br&gt;
always hold),&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;BTW, on this, is this already an RFC, or is the implementation somewhere &lt;br&gt;
I can take a look at?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I actually moved away from the direction I originally suggested (adding &lt;br&gt;
element constraints to arrays). I'm now exploring a separate approach based &lt;br&gt;
on dedicated immutable value types, but it's still too early to discuss as &lt;br&gt;
a concrete proposal. I'd rather wait until the design has stabilized.&lt;/p&gt;
&lt;p&gt;Cheers, &lt;br&gt;
Michał Marcin Brzuchalski&lt;/p&gt;
</description><guid>CABdc3WqzOq_WOQD8ToJysCjqycDiXdY4w4TGS5WOjqsY2E2vUg@mail.gmail.com</guid><pubDate>Tue, 21 Jul 2026 12:03:34 +0000</pubDate></item><item><title>[RFC] Typed array declarations</title><link>https://externals.io/message/132064</link><description>&lt;p&gt;Hey Larry,&lt;/p&gt;
&lt;p&gt;I am opposed to this RFC, for all the reasons Rob mentioned.  Moreover, I&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;don't believe the issues can be resolved by just waiting for the reified &lt;br&gt;
generics RFC (which I really hope passes).  The core issue is that PHP &lt;br&gt;
arrays are an over-broad data structure, and we need to have a hard, &lt;br&gt;
type-based (not just implied by generics) distinction between &lt;br&gt;
lists/sequences, sets, and dictionaries/maps, the same way most languages &lt;br&gt;
do.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;There are a few ways that could be done: 3 generic objects (a la Kotlin, &lt;br&gt;
my preferred approach), 3 generic objects with extension functions &lt;br&gt;
(assuming we can get those), 3 new core data types with extension functions &lt;br&gt;
(very hard to implement as I understand it), etc.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;But tacking it onto the already-dangerously-overloaded array mega-type is &lt;br&gt;
the wrong approach.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Thanks for the feedback. &lt;br&gt;
I understand the concern of adding more things to the array type and I &lt;br&gt;
think it's a valid concern.&lt;/p&gt;
&lt;p&gt;Would you think that an RFC adding new types, maybe using Kotlin as a &lt;br&gt;
reference (as you mentioned), for having strongly typed array/list &lt;br&gt;
structures would be a better fit? &lt;br&gt;
I'd be happy to propose and work on this if this would be a better &lt;br&gt;
direction/approach.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;---&lt;/em&gt; &lt;br&gt;
&lt;em&gt;Best Regards,&lt;/em&gt; &lt;br&gt;
&lt;em&gt;Wendell Adriel.&lt;/em&gt; &lt;br&gt;
&lt;em&gt;Software Engineer &amp;amp; Architect&lt;/em&gt; &lt;br&gt;
&lt;em&gt;&lt;a href="https://wendelladriel.com" rel="nofollow" target="_blank"&gt;https://wendelladriel.com&lt;/a&gt; &lt;a href="https://wendelladriel.com"&gt;https://wendelladriel.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
</description><guid>CA+1VZ8sz3duFWXK26ViVMM5YqdLHWNKGFOdsXGjkgA_bC3qW5A@mail.gmail.com</guid><pubDate>Tue, 21 Jul 2026 09:12:13 +0000</pubDate></item></channel></rss>
