IL PROGETTO

Ricostruire PHP dal comportamento osservabile.

phpr non traduce lo Zend Engine riga per riga. Reimplementa linguaggio e runtime in Rust, usando PHP 8.5.7 come oracolo di compatibilità.

L'IDEA

Preservare il contratto, non l'eredità tecnica.

Il core storico di PHP è un grande sistema C, collaudato e plasmato da decenni di compatibilità e scelte architetturali. phpr parte da un'altra domanda: quale contratto deve davvero preservare un runtime alternativo?

La risposta è l'output osservabile: valori, coercizioni, warning, eccezioni, effetti collaterali e stack trace. Il corpus ufficiale .phpt rende quel contratto eseguibile e confrontabile.

L'oracolo ha sempre ragione.

Quando documentazione, intuizione e comportamento reale divergono, il progetto misura PHP 8.5.7 e riproduce ciò che accade davvero.

PIPELINE

Da un file PHP alla VM.

La produzione usa un solo motore: una VM a bytecode. Il parser mago costruisce la sintassi, il runtime la abbassa in HIR, compila il bytecode e lo esegue in un dispatch loop esplicito.

Il motore è reimplementato da zero. Alcune superfici di estensione usano deliberatamente binding FFI stretti verso le stesse librerie di sistema dell'oracolo—come libgd, libxslt, libtidy e zlib—quando è il percorso più fedele verso la parità byte.

Architettura phpr: sorgente PHP, parser mago, AST/HIR, bytecode e VM.

php-types

Semantica

Zval, stringhe, array, oggetti, confronti, coercizioni, stream e primitive condivise.

php-runtime

VM

Lowering, compilatore, bytecode, OOP, eccezioni, cycle GC, database e dispatch.

php-builtins

Libreria standard

Funzioni value e integrazioni host verificate contro il runtime di riferimento.

php-cli

CLI e SAPI

Il binario phpr, opzioni compatibili e il percorso server validato phpr -S.

phpt-runner

Conformità

Esegue il corpus ufficiale, isola i test e riporta per nome le differenze dall'oracolo.

php-server

Percorso worker Axum

Server Axum e pool di worker su thread dedicati sono in integrazione. Un RetainSet persistente vive ora a livello worker e il lifecycle è cablato; ogni richiesta crea ancora una VM nuova.

Maturità attuale

La milestone WordPress è reale: le suite complete single-site e multisite sono a parità effettiva con l'oracolo e WordPress gira su MySQL e HTTP reali. phpr resta comunque sperimentale: molte estensioni specialistiche mancano, il confine della VM persistente è ancora in validazione e hardening, security review e packaging non sono conclusi.

Leggi stato e limiti completi →

Fonti principali: README tecnico ↗ · copertura misurata ↗ · commit corrente dell'integrazione server ↗