Two busy weeks on the runner. Scripts can talk to a database, shut down cleanly, and the server can tell you what it is doing.
- PS\DatabaseClient landed with CRUD and transactions. The client is wrapped in telemetry, and the Go PDO bridge was updated to match.
- The HTTP server now reads an embedded phpscript.yml. The old route subcommand is folded into the main process, and a status page reports what is running.
- Tracing opens nested spans, names the file and line, and covers include statements and constructor calls. __FILE__ and __LINE__ re-evaluate per included file.
- register_shutdown_function and runner shutdown callbacks run cleanup when a script ends.
- The flatstack runner gained user functions, list() destructuring, and try/catch/finally. getenv and putenv are in the stdlib.
- POSIX shared memory shipped as PS\SharedMemory, with docs and a test that actually shares a segment.
- phpscript test is a first-class command. Lint and the formatter tightened import blocks, spacing, and parentheses.
- A dbadmin frontend demo and a Caddy-backed compose setup show the server in use. Configuration docs, extension notes, and import-structure diagrams catch the rest of the window.
This is the stretch where phpscript stops being only a parser demo. A PHP syntax VM in Go, no CGO, can now persist data, observe a request, and tell you what the process is doing.