Back to blog

Week in review: 13 Apr 2026

A recap of what shipped during the week of 13 April. Six items this week: a significant jump on the exporter test suite, cleaner operator and type coercion output, early math module results, a new presence on X, filtering on the blog, and the first pieces of program execution support in the runtime.

sebastian/exporter reaches 92.5%

The exporter test suite climbed from 82% to 92.5% this week. The gains came from three areas: correct destructor timing for the recursion detection guard, proper array casting for Error and Exception objects, and accurate property visibility encoding in cast output. Each of these required Pext's core to cover a PHP behaviour that JavaScript does not provide natively. See the full write-up for the details, and the open source showcase for the current numbers.

Operators and type coercion

Several improvements landed in how Pext handles operators and type coercion. Generated function names for coercion operations are now cleaner and easier to trace in the output. The concatenation operator over integer operands is handled correctly, matching PHP's implicit-to-string casting behaviour rather than producing JavaScript numeric addition. A dedicated set of unit tests was created specifically for operator and coercion scenarios, giving us precise coverage of the edge cases that are most likely to diverge between PHP and JavaScript semantics. Support for legacy TypeError was also added, covering the older PHP error form that some codebases still rely on.

Math module: native calculator and bcmath

Work began on unit tests for the math module using a native calculator approach. Early results show a pass rate above 60%, with active work to close the remaining gaps. We are also investigating potential runtime support for bcmath, PHP's arbitrary-precision math extension, which appears in a meaningful number of real-world codebases. No commitment yet, but the investigation is underway.

Pext is now on X

We created @pextdev on X. Blog posts will be published there going forward. If you want to follow along as the project progresses, that is the place.

Blog filtering and tagging

The blog index page was reworked to support filtering by tag. Posts are now categorised and the filter buttons at the top of the page let you narrow to a specific type: announcements, case studies, weekly recaps, or architecture posts. The implementation is client-side and requires no page reload.

Program execution module

Initial support for PHP's program execution functions landed in the runtime. This covers proc_open, passthru, and related functions that allow PHP code to spawn and interact with external processes. These appear in build tools, CLI utilities, and any codebase that shells out to the operating system. Getting the basics in place now means transpiled projects that rely on process spawning have a path forward rather than a hard gap.