TypePHP 编译器
https://swoole.com/aot/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.1 KiB
2.1 KiB
项目简介
TypePHP 是 Swoole 团队开发的 PHP 原生 AOT 编译器(仓库名 aot-compiler,Composer 包名 swoole/typephp)。它把 PHP 源码在编译期直接翻译成 C++,再借助 PHPX 运行时与 Zend 引擎嵌入(embed)能力,链接为 Windows / Linux / macOS 平台原生的可执行文件、共享库或 PHP 扩展。
当前版本 v0.4.3(见 src/Translator.php 常量 VERSION)。编译器自身需要 PHP 8.4+;生成的产物可面向 PHP 8.2 ~ 8.5 的运行时语义。
Sources: composer.json · src/Translator.php · README.md
为什么不是解释执行
传统 PHP 每次运行都要经过「词法 → 语法 → 字节码 → Zend 解释」四步。TypePHP 把前两步(以及大量语义分析)在编译期一次性完成,生成的 C++ 再被优化编译器(GCC/Clang/MSVC)进一步内联、逃逸分析与向量化,最终产出的二进制不再依赖 php 解释器即可运行——只依赖编译进来的 Zend 引擎(libphp.so / php8ts.lib)。
注意:预览版目前仅支持 Linux(建议 Ubuntu 22.04),Windows 编译需在具备 Windows SDK 与 PHP embed 库的环境下进行。
Sources: README.md · composer.json
设计原则
- 原生类型优先:标量(int/float/bool/string)直接映射 C++ 原生类型,避免 zval 装箱开销。
- PHP 语义对齐:类、接口、trait、枚举、反射、属性(attribute)、生成器(Generator)等尽量保持运行时行为。
- 可增量构建:phpx misc 文件与编译器生成单元都带内容指纹缓存,改动一处不必全量重编译。