Artisan Build puts out a weekly video that reads the php-internals mailing list so you don't have to, and this week's episode covers July 29 through August 4. It's a good one to catch, because the 35-ballot deprecation vote for PHP 8.6 closes Monday and the soft freeze lands the day after that.

What passes on Monday is what you'll see as deprecation warnings the first time you point an existing codebase at 8.6, so it's worth knowing which way the close ones are leaning.

The Deprecation Vote Closes Monday

All 35 ballots on the deprecations RFC close Monday, August 10 at 13:00 UTC, and each one needs two thirds on its own. Most are passing comfortably. These are the ones still in play, with standings pulled from the RFC on Thursday:

Ballot Yes No Where it stands
Deprecate list() 23 22 Well short
Reserve let 24 11 Just over the line
Reserve is 28 9 Passing
http_build_query() with objects 20 9 Passing
Deprecate the _() gettext alias 10 21 Failing
Reserve in, out, inout 8 20 Failing

list() is the one to watch. It was a flat 21 to 21 tie when the video was recorded and has moved to 23 to 22 since, which is still nowhere near two thirds.

The sharpest objection came from Rowan Tommins, on reserving is as an identifier. It collides with Hamcrest, the matcher library Mockery pulls in, which has an is() function all over its README and more than 526 million installs on Packagist.

I think we should think very carefully whether we can avoid disrupting that much code.

Voters haven't moved on it. is has actually gained ground since he raised the point.

A Function Autoloading Vote Opened and Was Pulled

Paul M. Jones opened voting on his fifth run at function autoloading on Thursday, and it lasted about a day. Tim Düsterhus caught a procedural problem:

In fact, the start of the vote is in violation of our policy, since there was no intent to vote message in the last seven days.

Paul's intent notice was two weeks old, and a July 15 revision had reset the clock anyway. He pulled the vote without argument. It stood at 2 yes to 11 no when he did, so the delay may be doing the RFC a favor. That's the second ballot in two weeks stopped by its own author over the intent-to-vote rule.

Literal Types Steps Out of 8.6

Seifeddine Gmati has retargeted literal scalar types past 8.6 rather than trying to squeeze a revote in. The reason is worth knowing if you're tracking any other RFC: the effective cutoff isn't the beta 1 release on Thursday, August 13, it's the beta 1 tag on Tuesday, August 11. A vote opened now would close after the tag exists.

Release manager Matteo Beccati apologized for the ambiguity in his own emails and went further:

having RFCs end voting so close to the feature freeze is a terrible idea, as it gives very little wiggle room in case something unexpected comes out

Two RFCs Accepted

The Time\Duration class passed 35 to 1 with two abstentions, and a follow-up vote settled the naming on full method names (multiplyBy, divideBy, negate, absolute) at 30 to 2. We covered it in the PHP 8.6 feature roundup yesterday.

Minimum supported versions passed too, requiring autoconf 2.71 at 27 to 2 and COM_RESET_CONNECTION at 26 to 0.

Three Ballots Still Open

None of these drew a single mailing list email this week, so the voting is doing the talking:

Pipe assignment is the close one there. At 13 to 11 it's sitting around 54% and needs two thirds, so it has a few days to find the votes.

Also on the List

Sjoerd Langkemper opened a discussion on curl_setopt() leaking secrets into stack traces. One function sets everything, so CURLOPT_PASSWORD is sensitive, CURLOPT_RETURNTRANSFER isn't, and CURLOPT_URL sometimes is. He brought three options, two with working pull requests.

Jorg Sowa wants "did you mean" suggestions on undefined function errors, the way Python and Ruby do it, so calling defined() when you meant define() names the function you were probably after. His question to the list was whether it needs an RFC at all, and the answer so far is no, since rephrasing error messages isn't covered by the backwards compatibility policy.

Generics came up again through Henrik Skov and Holly Schilling, though the conversation is formally on hold until September or October so it doesn't pull attention off the 8.6 release work. And Osama Aldemeery's PREG_THROW_ON_ERROR RFC got its first real design review, mostly on whether compile failures and runtime failures deserve separate exception classes.

Watch It

The episode runs about 15 minutes, and the description links every thread and RFC it covers, which makes it a decent index even if you only want to read the primary sources. Watch it on YouTube, and a new one goes up each week.