L'IDEA
Preservare il contratto, non l'eredità tecnica.
Il cuore storico di PHP è un grande sistema C, collaudato ma vincolato a decenni di compatibilità e scelte architetturali. phpr parte da un'altra domanda: qual è il contratto che un runtime alternativo deve davvero rispettare?
La risposta è l'output osservabile: valori, coercizioni, warning, eccezioni, side effect 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
Dal file PHP alla VM.
La produzione usa un solo motore: una VM a bytecode. Il parser mago produce la struttura sintattica; il runtime effettua il lowering verso HIR, compila il bytecode e lo esegue in un dispatch loop esplicito.
php-types
Semantica
Zval, stringhe, array, oggetti, confronto, coercioni, stream e primitive condivise.
php-runtime
VM
Lowering, compilatore, bytecode, OOP, eccezioni, GC, PDO e dispatch.
php-builtins
Standard library
Funzioni pure e integrazioni host verificate contro il runtime di riferimento.
php-cli
CLI
Il binario phpr, con stream, opzioni ed exit code compatibili.
phpt-runner
Conformance
Esegue il corpus ufficiale, isola i test e mostra il diff rispetto all'oracolo.
php-server
Server, in evoluzione
Un ponte verso SAPI residente, preload e distribuzione standalone; non ancora produzione.