Len Woodward

Len Woodward

@projektgopher.com

Full-stack senior Laravel and JS developer based in Vancouver, BC, Canada https://LenWoodward.com CoFounder @ artisan.build Currently building hallway.fm Watch it happen @ artisan.community

1.1K followers174 following394 posts

View full thread
View full thread

Quick hits: Máté Kocsis answered @timwolla.bsky.social's 14-point query params review. Tim sent Jakub Zelenka 15 more on polling. Marc wants getNanoOfSecond. Tim backs David Carlier's IntlNumberFormatter, and Juliette Reinders Folmer is on the b prefix.

Weilin Du's RFC lets ini_get_all take extension names in any case. Frode Børli wants karma for a Scope RFC. 8.6 RC4 is out with the fixes. And Pratik Bhujel held the Io\Terminal vote after @timwolla.bsky.social said the core team was busy.

View full thread

Calvin Buckley's RFC adds binary parameters to PDO. Ilia went through it driver by driver: PARAM_LOB is already binary in some, and a driver that doesn't know the new type falls back to text, or to a fatal error in pdo_sqlsrv.

View full thread

Back to this week: PHP voted 40–0 to stop endorsing PEAR, @nicksdot.dev's RFC. Sebastian Bergmann wants the archive switched off safely: signed SHA-256 hashes, a pinned installer hash, brown-outs, and a tombstone PHAR instead of a 404.

Weilin Du's IntlRelativeDateTimeFormatter passed 25–0 and is merged for 8.7. Sjoerd Langkemper's RFC to make hexdec and friends throw was 22–1 at recording, the no over a bare Exception. Muhammed Arshid's Filter enums: 1–10.

View full thread

Sjoerd Langkemper's PASSWORD_BCRYPT_SHA256 got its first challenge: Mirco Babin asked who vouches for it and pointed to OWASP. Rowan Tommins says the HMAC's salt does the job of OWASP's pepper, and Andrey Andreev has an alternative coming.

View full thread

From the week we missed: Damian Jóźwiak's RFC proposes a CSV extension for core, built on Gina Peter Banyard's. Artem Ukrainskiy argues the existing functions can be fixed instead. Damian laid out 3 directions and offered a directional vote.

View full thread

The CVE IDs leaked online Tuesday with the wrong score. The release moved up a day, Calif posted and pulled an exploit video, and the PHP Foundation says Chainguard broke the embargo hours early. On the delay since 2024: "a structural failure."

Finland, France, the Netherlands and Canada took some government sites offline until they could patch. Dan Lorenc said exploits had hit the wild; @naderman.de: "There were no confirmed exploits." The PHP team and CISA hadn't seen any at release.

View full thread

How it breaks: when PHP runs out of memory it long-jumps out mid-operation, and can leave half-built request data for cleanup to trust. The second bug leaves a pointer into the last request's freed memory for the next request on that worker.

Top story: two critical remote code execution bugs in PHP itself, both CVSS 9.2. PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35 fix them, out Oct 21, a day early. RCE was validated against mod_php with default limits. There are no complete mitigations: update.

View full thread
View full thread

Quick hits: Weilin Du takes array shorthand back to the colon. Daniel Scherzer put the b string prefix in the 8.7 deprecations RFC after Juliette Reinders Folmer stepped back. Muhammed Arshid's filter RFC is now backed enums.

Derick Rethans wants default input filtering back. Máté Kocsis wants a vote on query parameters soon. David Carlier wants unit formatting in intl. And PHP 8.6 RC3 was due Oct 8, with GA on November 19.

View full thread

Ilia ran Jakub Zelenka's IO Hooks branch, found crashes under Fibers, and would make hooked calls opt-in. Jakub: fixable, not a design issue. Edmond Dantes: "now we have both halves: Scheduler + IO Hooks."

Karoly Negyesi's implements … by won over Larry Garfield and James Gilliland. Sebastian Bergmann warned new interface methods get forwarded silently, and Rowan Tommins has been here before: use cases need "just one small thing on top of the forwarded call."

View full thread

Io\Terminal v0.4 dropped its interfaces: @timwolla.bsky.social argued the real boundary is the stream, not the terminal, and Bob Weinand agreed. Larry Garfield sketched tests with in-memory streams, and Pratik Bhujel is heading toward a vote.

View full thread

Time\Instant won't pick a JSON format for you. Ilia called the empty object a trap and Rob Landers wants it to throw, but @timwolla.bsky.social and Derick Rethans say pick one yourself. Marc's 15-point review turned getUnixTimestamp into toUnixTimestamp.

Top story: Sjoerd Langkemper set aside his RFC to throw on bcrypt passwords past 72 bytes and proposed PASSWORD_BCRYPT_SHA256: opt-in, no BC break, Passlib-compatible. @timwolla.bsky.social suggested it and Anton Smirnov loves it. Jeff Dafoe had to force password resets over the old limit.

View full thread
View full thread

Quick hits: Matteo Beccati's PHP 8.6.0 RC2 is out (RC1 was skipped over a packaging error), plus security releases for 8.5, 8.4, 8.3 and 8.2. Sjoerd's number-base RFC now throws an Exception, not a ValueError. Juliette Reinders Folmer wants the b string prefix deprecated.

Pedro Veloso floated an engine-enforced #[Pure]. Karoly Negyesi posted a pre-RFC for Kotlin-style "implements … by" delegation. Alexander Danilov: much of post-quantum OpenSSL already works in PHP. And @nicksdot.dev's PEAR vote hasn't opened yet.

View full thread

Jakub Zelenka's IO Hooks RFC would hand PHP's blocking calls (streams, sockets, curl, sleep) to a provider such as an event loop, so existing code runs concurrently under Fibers. No provider, no change. It builds on a second new RFC, Polling API Additions.

The internals list removed a contributor this week, after a warning from Derick Rethans on Sep 15 and a last warning from moderator Ilija Tovilo on Sep 21 (one new thread a month, three emails a week). A new RFC followed on Sep 27, and the address was blocked.

View full thread

Time\Instant got a bridge from DateTime: toInstant(). @timwolla.bsky.social and Derick Rethans won't write the testing-clocks RFC, and they're inviting the community to. Mirco Babin flagged a clash with PSR-20's now(). Morgan: "Well, then it's not an instant, is it?"

Weilin Du's array shorthand turns =$x into 'x' => $x. Sebastian Bergmann will vote against without data, David Carlier showed one missing comma silently changing a program, Anton Smirnov pointed at compact(), and Christian Schneider has run a local patch "for many years".

View full thread

Gina P. Banyard's CompiledRegex prototype drew 18 replies, and several want it called just Regex: Larry Garfield, Casper Langemeijer, Jordi Kroon, Juris Evertovskis. Ayesh Karunaratne and @seld.be want to build one from the patterns you already have.

Top story: Sjoerd Langkemper's RFC would make password_hash() with bcrypt refuse passwords past 72 bytes. Kamil Tekiela and @timwolla.bsky.social: checking length is the app's job. Rowan Tommins, Andrey Andreev and Robert Chapin are for it. Derick Rethans is a -1: "a scary BC break."

View full thread

Scalpels is our solution. We build it, completely open source. You can fork each service, host it yourself, but then to get updates you can just pull from our upstream. You can PR fixes back.

We (and our clients) seem to have this ever-growing portfolio of monthly subscriptions for tiny apps that do just one little thing each. And it's getting a bit old.

We'd rather own the product internally, and others feel the same. But putting the time into building them correctly and then supporting it alone internally forever outweighs the cost of the subscription, and we don't want to have to market another ten paid products individually to make them viable.