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.
|
|
1 day ago | |
|---|---|---|
| .claude/plans | 2 months ago | |
| .github | 1 month ago | |
| bin | 4 weeks ago | |
| completions | 2 weeks ago | |
| docs | 1 day ago | |
| examples | 4 days ago | |
| phpunit | 1 day ago | |
| src | 1 day ago | |
| tests | 1 day ago | |
| wasm | 4 days ago | |
| .clang-format | 8 months ago | |
| .gitignore | 2 weeks ago | |
| .php-cs-fixer.dist.php | 4 months ago | |
| CLAUDE.md | 1 month ago | |
| LICENSE.md | 1 week ago | |
| README.md | 2 weeks ago | |
| app.manifest | 2 months ago | |
| ast.py | 8 months ago | |
| clean-elf.sh | 2 months ago | |
| cleanup-typephp-tmp.sh | 4 days ago | |
| cli.php | 1 month ago | |
| composer.json | 4 days ago | |
| composer.lock | 4 weeks ago | |
| package.json | 1 week ago | |
| package.php | 4 days ago | |
| phpunit.xml | 5 months ago | |
| project.yml | 2 months ago | |
| rounds.txt | 8 months ago | |
| run-tests.php | 1 week ago | |
| swoole-logo.ico | 4 months ago | |
| swoole-logo.svg | 4 months ago | |
| version.txt | 4 days ago | |
README.md
依赖
- 编译器和生成程序均需要 PHP 8.4 以上版本,支持 PHP 8.4~8.5
- 需要 GCC-9 以上版本,支持 C++17 标准
- 需要 CMake-3.24 以上版本
- 需要高精度数学库:
GMP、MPFR、libmpdec
Composer 安装
在项目中安装 TypePHP:
composer require --dev swoole/typephp
安装后可直接编译项目:
vendor/bin/tpc.php project.yml
在 TypePHP 源码仓库中则使用:
bin/tpc.php project.yml
Linux 环境缺少 libphp.so 时,tpc.php 可以交互式下载 PHP 源码并自动构建,详见 自动构建 libphp.so。
Python namespace IDE helper 与 Python 源码转换也使用同一入口:
./tpc --gen-python-helper math
./tpc --gen-python-helper numpy --output-dir .ide-helper
./tpc --convert-python-to-php script.py > script.php
详细说明见 Python 工具子模块。
# Ubuntu/Debian
sudo apt install libgmp-dev libmpfr-dev libmpdec-dev
# RHEL/CentOS/Fedora
sudo dnf install gmp-devel mpfr-devel libmpdec-devel
# Arch Linux
sudo pacman -S gmp mpfr mpdecimal
GMP 用于
BigInt任意精度整数,MPFR 用于BigFloat高精度浮点数,libmpdec 用于Decimal十进制高精度小数。
预览版目前仅支持
Linux系统,建议使用Ubuntu 22.04
PHP
必须包含 embed 模块
PHPX
可使用 composer install 安装依赖。
进入 vendor/swoole/phpx 目录,编译 phpx
cd vendor/swoole/phpx
cmake .
make -j32
动态链接库
sudo ldconfig -p | grep php
必须包含 libphp.so 和 libphpx.so
若编译完成,但找不到动态链接库,需要修改
vim /etc/ld.so.conf.d/swoole.conf
添加路径
/home/swoole/workspace/projects/phpx/lib
/opt/php-8.4/lib/
Release packaging
Use the same PHP entry point on Windows, Linux, and macOS:
php package.php
Windows packaging requires PHP_HOME and PHPX_HOME; Linux packaging requires
UPX; macOS uses strip when available. TypePHP rejects 32-bit targets and
supports common 64-bit CPU architectures, including x86-64 and ARM64.