Technical insights and announcements from the Pext team.
A recap of the week of 11 May: cron-expression at 100%, magic-method fixes for __call and __invoke, by-ref and copy-on-write across call boundaries, dynamic member syntax, a new pext CLI with a pext.ini equivalent, a TypeScript pipeline finished end-to-end, native new for static instantiation, plus variadic coercion, call_user_func by-ref, and grouped use.
Read moreHow Pext brought dragonmantank/cron-expression to 100%. The work was almost entirely in the datetime module: timezone arithmetic, DST transitions, the add/sub/diff family, the long tail of PHP-specific date format characters, and a cache for Intl.DateTimeFormat that turned a slow run into a reasonable one.
Part 3 of the ten-part Leaving PHP series. A decade of incremental type-system additions (7.0 through 8.4), still no generics in the language, and the refactoring confidence gap that hits hardest on a 200,000-line codebase compared to TypeScript, Kotlin, and Python with Pyright.
How Pext reached 100% on egulias/email-validator: a new pext-multibyte-string module covering the mb_* family, a pext-network module for DNS lookups, the codepoint-vs-byte fixes the parser needed, and the CRLF handling that closed the folded-header tests.
A recap of the week of 04 May: a partial audit of the arrays module, doctrine/lexer at 100%, egulias/email-validator at 92% on the back of two new runtime modules (pext-network, pext-multibyte-string), hamcrest-php at 90%, myclabs/deep-copy at 83% with a full clone implementation, and datetime improvements driven by cron-expression.
How Pext reached 100% on the composer/semver test suite. Two hurdles that had nothing to do with the library itself: a PHPUnit 9 binary bootstrapped through a Symfony symlink, and dozens of eval calls that generate version_compare code which had to see the caller scope.
Part 2 of the ten-part Leaving PHP series. The architectural cost of shared-nothing in 2026: a 10–30× throughput gap on TechEmpower, the connection-pool math that hits Postgres ten times harder than Node, and what you give up when you reach for Swoole, RoadRunner, or FrankenPHP.
A recap of the week of 27 April: a complete audit of the math module against every PHP version since 4, composer/semver and doctrine/inflector at 100%, a deep analysis of string literal encodings, experimental TypeScript output, and initial support for static variables inside functions.
How Pext brought the math module to full PHP parity: dual test suites, version-aware ValueError throwing, operators that branch on PHP_INT_SIZE at runtime, the C99 corner cases in pow, comparable-aware max/min, operator-overridable pow, dual rounding mode acceptance, and inlining as the next step.
Part 1 of a ten-part series on why teams are leaving PHP in 2026. A data-driven look at the talent market: a ~40% relative drop in seven years, an aging bench, only 15.2% of new programmers picking PHP first, and a salary curve that punishes hiring at the wrong end.
A recap of the week of 20 April: brick/math at 100%, bcmath support, numeric conversion and coercion finalized, PCRE comprehensively tested, the Laravel roadmap published, and the Foundations phase complete.
How Pext reached 100% on the brick/math test suite: keeping PHP int and float distinct in JavaScript, fixing static $var, handling overflow, tuning preg_match flags, scope resolution, and operator coercion.
An honest comparison of the three ways to move a PHP codebase to Node.js. Speed, cost, risk, lock-in, and the transition problem that neither AI nor manual rewrites acknowledge.
A recap of the week of 13 April: exporter at 92.5%, operator and type coercion improvements, math module testing, X account launch, blog filtering, and program execution support.
sebastian/exporter is small but technically demanding. A look at the three challenges it posed for Pext: destructor timing, object-to-array casting, and property visibility.
An honest look at how Pext's modular runtime, inspectable output, escrow licensing, and two-phase roadmap are designed to de-risk migration, not trap you in a new ecosystem.
A recap of the week of 6 April: website launch, refcounting destructors, sebastian/exporter at 82%, reflection line numbers, and comment-attribute preprocessing.
A deep dive into transpiling PHPUnit: 54k lines, 4,500+ tests, and one of the most demanding codebases in the PHP ecosystem.
The Pext presentation website goes public. A look at what we built, what it does, and where we go from here.