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.
 
 
韩天峰 f45dadc2f8 test(strings): 更新字符串测试以支持AOT编译 2 months ago
.github docs(repository): 添加仓库开发指南文档 3 months ago
bin feat(compiler): 添加性能分析和 objval 函数支持 3 months ago
cases 更新 1 year ago
debug feat(debug): 添加内存泄漏检测脚本 2 months ago
docs test(phpunit): 添加抽象类和私有方法重写的测试用例 2 months ago
examples test(str): 添加字符串索引访问测试用例 2 months ago
perf perf(perf): 添加对象静态属性性能测试 3 months ago
phpunit test(phpunit): 添加抽象类和私有方法重写的测试用例 2 months ago
src fix(php): 解决可选参数传入null时使用C++默认值的问题 2 months ago
tests test(strings): 更新字符串测试以支持AOT编译 2 months ago
web fix 3 years ago
.clang-format update 8 months ago
.gitignore chore(build): 添加 Python 缓存目录到忽略列表 3 months ago
.php-cs-fixer.dist.php Revert "style(config): 更新PHP代码样式配置" 4 months ago
CLAUDE.md docs(project): 添加项目指导文档 CLAUDE.md 3 months ago
LICENSE.md docs(license): 更新版权信息归属 4 months ago
README.md docs(readme): 更新依赖库安装说明 3 months ago
ast.py 支持目录处理 8 months ago
clean-elf.sh chore(build): 更新版本号并优化打包脚本 2 months ago
cli.php feat(php): 添加 std::array 类型支持并优化编译器功能 4 months ago
composer.json chore(build): 更新版本号并优化打包脚本 2 months ago
composer.lock refactor(php): 重构 PHP 编译器基础类以使用 phpx 库 4 months ago
conv.php init 3 years ago
dump.py init 3 years ago
package-on-windows.php feat(build): 更新 Windows 打包脚本以支持新示例和配置文件 4 months ago
package.json feat(build): 添加 Windows 资源文件支持功能 4 months ago
package.sh chore(build): 更新版本号并优化打包脚本 2 months ago
phpunit.xml feat(compiler): 添加测试模式和静态变量重复检测功能 5 months ago
project.yml refactor(build): 更新项目配置文件中的编译器路径 3 months ago
py2php.php op 3 years ago
rounds.txt update 8 months ago
run-tests.php 修复 Windows 运行测试 (#1) 2 months ago
swoole-logo.ico feat(build): 添加 Windows 资源文件支持功能 4 months ago
swoole-logo.svg feat(build): 添加 Windows 资源文件支持功能 4 months ago
version.txt chore(build): 更新版本号并优化打包脚本 2 months ago

README.md

依赖

  • 需要 PHP-8.2 以上版本
  • 需要 GCC-9 以上版本,支持 C++17 标准
  • 需要 CMake-3.24 以上版本
  • 需要高精度数学库:GMPMPFRlibmpdec
# 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.solibphpx.so

若编译完成,但找不到动态链接库,需要修改

vim /etc/ld.so.conf.d/swoole.conf 

添加路径

/home/swoole/workspace/projects/phpx/lib
/opt/php-8.4/lib/