Build1 distinct publisher3 min readPublished
The list accepts a model that renders your argument in English and rejects one that supplies the argument, but the only tell anyone has named is register, and register convicts the translators too.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
A mailing list is a queue of other people's reading time. The sender sets the price. One thread this week shows what that queue is actually for.
Sepehr Mahmoudi opened an RFC on Saturday for `array_match()`, which filters an array down to the values containing a substring, implemented in C so callers do not pay for a closure on every element [10]. Yuya Hamada replied within the hour, asking whether `array_filter()` already covers it, pointing at a GitHub search full of userland functions named `array_match` that do not all behave alike, and noting that the declined `str_icontains` RFC makes an ASCII-only case-insensitive flag a hard sell [11]. Tim Düsterhus noted that in 8.6 the whole thing is one line, because partial function application lets you drop `str_contains` into `array_filter()` with a placeholder [12]. Christian Schneider pointed out that `preg_grep()` has done basically the same job for years [13]. Ayesh Karunaratne went at the premise: "I have worked on Drupal, WordPress, Silex, and bespoke code bases, spending enough time profiling them. An array string search has never been a bottleneck" [14]. Larry Garfield called it an XY problem and said huge in-memory arrays are a smell to begin with [15]. mickmackusa proposed making `str_contains()` polymorphic, the way `str_replace()` already accepts an array [16]. Six named contributors replied and none of them supported it [18]. The author has since dropped the flag, renamed it `array_str_contain()`, and moved the target to 8.7, because 8.6 is frozen [17].
Look at what those replies carried: a language feature arriving in the next minor, an old function that already does it, the voting history of a related RFC, and profiling experience across several large codebases. None of that is in the RFC text. That is the asset a machine-drafted argument spends without replenishing.
The enforcement problem is that the only tell named in the weekly This Week in PHP Internals summary is register, that flat over-professional voice which thanks you warmly and then restates your own point [2] [19]. Register alone doesn't settle the question. A contributor drafting in Farsi or Japanese and running the result through a model to get polite English produces the same flattened text as a contributor who asked the model what to think. The list has already agreed the first case is a legitimate accessibility need [4] and the second is not [5], and it has no reliable way to tell them apart from outside [6]. For a group whose entire artifact is prose, that is an awkward place to keep a blind spot.
So a workable rule probably cannot be about provenance at all. It has to be about obligations only a human on the other end can meet: answer a follow-up in the thread, and respond to the objection actually raised rather than around it. That is my read of what is checkable here, and it is a different rule from "do not use a model" because the archive records whether it was met. A translated mail can pass that test, while a delegated one tends to come apart by the second reply.
For another project to borrow the same line, its review has to happen somewhere follow-ups are expected and visible. The internals list qualifies, and the `array_str_contain()` author is still in the thread revising in response to criticism [17]. A project whose design review is scattered across drive-by pull request comments has nothing to hang the second reply on, and will end up back where PHP is now, guessing from tone.</body_markdown> </invoke>
Ranked by verification strength, evidence, and original report placement.
Messages have been arriving on the PHP internals mailing list that were clearly written or heavily assisted by a large language model.
Somebody on the list finally said the quiet part in plain text, and 24 messages followed about where the line actually sits.
Nobody argued against translation; English is a second or third language for a good part of the list, which the newsletter frames as a real accessibility question rather than laziness.
What people on the list object to is authorship, meaning the argument itself being handed to a machine.
Nothing has been written down yet about where the line sits.
A thread working on exactly these guidelines is running in an internals channel on the community Discord at phpc.chat, which is a community server and not an official PHP one.
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 27, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
build
array_search_range meets the freeze: PHP internals wants a lazy slice, not another array function1 distinct publisher
build
Six MariaDB versions, one real difference: the only reason to leave 10.6 is the July 2026 clock1 distinct publisher
build
Thirty lines of Doctrine filter, and the query paths where it is simply not there1 distinct publisher
build
Rewritten tags beat your pin: what laravel-lang says about Composer trust1 distinct publisher
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
One narrator, no exhibits
The RFC half of this reporting can be checked: six people are named, one is quoted verbatim, and the functions cited — array_filter(), preg_grep(), str_contains() — are public. The half that gives the story its title cannot. dev.to's summary supplies a message count and a tonal fingerprint but not one message, one sender, or one link to the archive, and no second outlet has touched the thread.
Landing in the inbox, absent from the rulebook
Both halves of the ledger are thin. Machine-assisted mail is arriving often enough to provoke a thread but is never quantified; on the other side, no guidance exists, the drafting sits on a Discord the newsletter itself calls unofficial, and the week's one concrete code proposal finished with zero supporters after being narrowed and pushed to 8.7.
Top billing, thin exhibit
The framing runs ahead of the material in one specific way. Promoting the thread above every code item of the week, and calling it the quiet part finally said, implies a resolved position; what is actually established is that people dislike delegated argument, cannot detect it, and have written nothing. The newsletter deserves credit for saying so out loud — it is the register test, offered as the sole tell while translators are simultaneously excused, that overstates itself.
Written by a party to the thread
The author is not a bystander here: the issue invites readers to "argue with us" in the phpc.chat guidelines thread, which makes the top story both report and recruitment for a venue the same writer participates in. Layer on the paid Ballast read at the top of the issue, and the framing has two pulls on it — neither hidden, both worth naming before the register test is taken as settled fact.
Firm on the code, soft on the conduct
Confidence splits along the same seam as the evidence. That an array-search helper drew six unimpressed replies and got retargeted to 8.7 is about as verifiable as a weekly digest gets. That the list has converged on translation-yes/authorship-no, and that the difference is undetectable, rests on one participant's summary of an unlinked thread — enough to report, not enough to treat as the project's position.