Was ist TypePHP?
TypePHP ist ein Ahead-of-Time (AOT) Compiler des Swoole-Teams. Er übersetzt PHP-Quellcode in C++17, das dann in nativen Maschinencode compiliert wird, der direkt auf der CPU läuft. Im Gegensatz zu einem Bytecode-Cache oder JIT interpretiert TypePHP zur Laufzeit keine Opcodes — die Kompilierung ist abgeschlossen, bevor das Programm startet.
Benchmark: Wie viel schneller?
Die offiziellen PHP-Sprachbenchmarks (bench.php und micro_bench.php) aus dem PHP-Quellcode, mit -O3 kompiliert:
- bench.php: PHP 5,034 s → TypePHP 0,603 s — ca. 8× schneller
- micro_bench.php: PHP 13,045 s → TypePHP 2,021 s — ca. 6,5× schneller
Bei Arrays: std::array (TypePHP AOT) ist ca. 10× schneller als PHP-Arrays (auch mit JIT) und auf Augenhöhe mit C++ std::vector.
Drei Build-Modi
- bin (Standard): Eigenständige native ausführbare Datei — kein PHP CLI zur Laufzeit nötig
- ext: Ladbare PHP-Erweiterung
- lib: Gemeinsam genutzte Bibliothek
Schlüsselfeatures
- Natives Typsystem:
int,float,boolwerden direkt auf C++-Skalare abgebildet. - Stark typisierte Container:
std::vector,std::map— bis zu 10× schneller als PHP-Arrays. - Gemischtes C++/PHP: Kritische Rechenoperationen in C++ schreiben und aus PHP aufrufen.
- Quellcode-Schutz: Native Binärdateien statt lesbarer PHP-Dateien ausliefern.
Einschränkungen
Nicht alle PHP-Funktionen werden unterstützt. Globaler Scope ist nur für Deklarationen; ausführbarer Code muss in Funktionen stehen. Bestehende große PHP-Anwendungen können nicht direkt eingespeist werden — die Inkompatibilitätsliste muss vorher geprüft werden.
PHP-Anwendungen mit EU-Hosting? Unsere Cloud-Server und Webhosting-Pakete.
Wie unterscheidet sich TypePHP von PHPs eingebautem JIT?
PHPs JIT optimiert häufig ausgeführte Codepfade zur Laufzeit und läuft noch immer innerhalb der Zend VM. TypePHP kompiliert vorab — zur Laufzeit gibt es keinen Interpreter oder keine PHP VM. Das Ergebnis ist wesentlich vorhersagbarere und deterministischere Performance.
Kann ich eine bestehende Laravel-Anwendung mit TypePHP kompilieren?
Noch nicht. TypePHP unterstützt nicht alle dynamischen PHP-Features, und ausführbarer Code im globalen Scope ist nicht erlaubt. Laravels Bootstrap-Layer kollidiert mit diesen Einschränkungen. Die Zielgruppe sind heute neue, statisch strukturierte Projekte und CLI-Tools.