韩天峰
|
436e09f6ae
|
chore(deps): 更新 swoole/phpx 依赖版本
- 将 swoole/phpx 从 ~2.1.3 更新到 ~2.1.5
- 添加动态调用方法测试用例 method-002.phpt
- 新增命名参数调用功能的测试验证
- 添加对象动态方法调用的相关测试代码
|
4 months ago |
韩天峰
|
2c041ab8e1
|
fix(php): 修复PHP翻译器代码生成问题
- 为extern "C"块添加缺失的换行符
- 移除未使用的objectFiles变量声明
|
4 months ago |
韩天峰
|
81957f56d7
|
feat(php): 更新符号常量并添加参数列表支持
- 在Symbol类中添加argList方法返回'php::ArgList'
- 修改CompilerBase中参数列表的返回值格式
- 添加count-array.php示例文件展示数组计数功能
|
4 months ago |
韩天峰
|
c4c46bf3f0
|
feat(compiler): 添加PHP编译器基础类和调试符号支持
- 添加CompilerBase核心编译器类,支持PHP到C++代码转换
- 实现AST节点解析和表达式处理功能
- 添加跨平台编译器检测和配置支持
- 集成PhpParser进行PHP语法树解析
- 实现类型系统和变量管理功能
- 添加调试信息和错误处理机制
- 扩展.gitignore文件以忽略调试符号文件
|
4 months ago |
韩天峰
|
b5ef65edc2
|
feat(compiler): 添加 Windows Clang 编译器支持
- 实现智能编译器检测,支持 PHPX_CC 环境变量优先级
- 添加 isClangAvailable() 方法检测 PATH 和 Visual Studio LLVM 路径
- 实现 Windows Clang 编译选项处理,使用 GCC 风格参数
- 添加 lld-link 链接器支持,提供比 link.exe 更快的链接速度
- 支持 Clang 完整的 Sanitizer 功能(AddressSanitizer、UBSan 等)
- 更新编译命令构建逻辑,区分 MSVC 和 Clang 参数格式
- 添加详细的 Windows Clang 使用指南和测试文档
|
4 months ago |
韩天峰
|
334594c659
|
feat(compiler): 实现 C++ 标准独立配置功能
- 将 C++ 标准从 cxxflags 中分离,支持 --cxx-std 参数配置
- 添加 project.yml 中的 cxx_std 配置项,支持独立设置标准版本
- 实现 Windows 和 Unix 平台的差异化默认标准(Windows 使用 c++17,Unix 使用 c++14)
- 添加 /NODEFAULTLIB 选项解决 Windows CRT 库冲突问题
- 增加 --debug-info 参数支持,自动禁用优化并生成调试信息
- 更新配置优先级规则文档,明确命令行参数、YAML 配置和默认值的覆盖关系
- 添加 C++ 标准配置指南和调试模式使用说明
- 修复 cxxflags 中标准标志被忽略的问题
|
4 months ago |
韩天峰
|
20436c5e41
|
refactor(php): 重构 MSVC 警告屏蔽机制
- 将硬编码的警告屏蔽改为从 Constants 配置中动态读取
- 添加 MSVC_SUPPRESSED_WARNINGS 常量数组管理所有警告代码
- 扩展警告屏蔽范围,涵盖 Windows SDK 和 PHP SDK 的常见警告
- 在示例项目中添加 MSVC 警告屏蔽说明文档链接
|
4 months ago |
韩天峰
|
b4b735644d
|
feat(php): 添加PHP编译器基础类实现
- 实现了PHP到C++的代码转换核心功能
- 添加了AST节点解析和类型系统映射
- 实现了变量、函数、类的声明和调用处理
- 集成了PHPParser进行语法树解析
- 添加了跨平台编译支持(Windows、Linux、macOS)
- 实现了字面量字符串管理和内存优化
- 添加了全局变量和超全局变量处理
- 实现了魔术方法检测和闭包生成器
- 集成了CLImate库提供命令行界面支持
- 添加了错误处理和调试信息生成功能
- 实现了代码格式化和文件保存功能
|
4 months ago |
韩天峰
|
b1272f47e7
|
feat(php): 添加PHP编译器基础类实现
- 实现PHP到C++的代码转换功能
- 添加表达式解析和类型系统支持
- 集成AST节点处理和代码生成逻辑
- 实现跨平台编译器检测和配置
- 添加PHP版本兼容性检查
- 实现字面量字符串和变量管理
- 添加函数和类定义映射机制
- 实现命名空间和类型声明处理
|
4 months ago |
韩天峰
|
8994813b8b
|
feat(compiler): 添加 Windows GUI 模式编译支持
- 新增 --no-console 参数用于隐藏控制台窗口
- 实现 Windows 子系统编译选项 (/SUBSYSTEM:WINDOWS)
- 添加 mainCRTStartup 入口点配置
- 更新编译器常量定义和参数解析
- 创建 GUI 模式示例程序 hello-gui.php
- 创建控制台模式示例程序 hello-console.php
- 完善 Windows GUI 程序开发文档
- 更新项目 README 说明和使用指南
|
4 months ago |
韩天峰
|
09ea347c11
|
feat(win32-hello): 添加中国时区支持并更新最佳实践指南
- 在 hello-win.php 中添加 date_default_timezone_set('Asia/Shanghai')
- 在 main.php 中添加 date_default_timezone_set('Asia/Shanghai')
- 在 CHINESE_SUPPORT_GUIDE.md 中添加时区设置说明
- 更新最佳实践列表,添加时区设置建议
- 更新 .gitignore 添加 *.obj 文件忽略规则
|
4 months ago |
韩天峰
|
d50aa88504
|
docs(examples): 添加 Win32 Hello World 示例项目和相关文档
- 添加 Windows 中文支持指南文档
- 添加 PHPX 编译器 C++ 函数导出规范文档
- 添加编码指南文档
- 创建 hello-win.php 主程序文件
- 创建 main.php 简单消息框示例文件
- 创建 window.php 完整窗口示例文件
- 添加项目配置文件 project.yml
- 创建 README.md 项目说明文档
- 添加 C++ Windows API 封装实现文件 winapi.cc
- 添加 C++ 函数声明桩文件 winapi.stub.php
|
4 months ago |
韩天峰
|
2481eebd0c
|
fix(php): 修正整数类型后缀逻辑判断
- 修复了在不同操作系统下整数类型后缀的判断逻辑
- 将原来的 isMacos 判断改为 isLinux 判断
- 确保在 Linux 系统下使用 'L' 后缀,在其他系统使用 'LL' 后缀
|
4 months ago |
韩天峰
|
f266e6ec62
|
fix(php): 修复 Windows 编译链接错误
- 替换 ws2_32.lib 等库为 msvcrt.lib、kernel32.lib 等完整的 CRT 和系统库
- 添加 oldnames.lib、gdi32.lib、winspool.lib 等必要的 Windows API 库
- 保留 ws2_32.lib 并添加 uuid.lib、odbc32.lib 等数据库相关库
- 为编译器添加 /MD 参数以使用动态多线程 CRT
- 移除 ZEND_ENABLE_STATIC_TSRMLS_CACHE 宏定义以避免静态缓存冲突
|
4 months ago |
韩天峰
|
b1df315299
|
feat(compiler): 支持 PHP 嵌入模式并改进 Windows 编译配置
- 添加 php8embed.lib 支持作为嵌入模式首选库文件
- 更新 Windows 库文件查找顺序以支持嵌入模式
- 区分 C 和 C++ 文件的编译选项处理
- 将宏定义应用限制在编译阶段而非链接阶段
- 更新 Windows 链接器使用 link.exe 替代编译器
- 添加 .dll 和 .exe 文件到 .gitignore
- 修复 PHP ZTS 检测逻辑移除严格比较
- 移除示例中的环境变量输出以减少冗余信息
- 添加 C++ 异常处理支持和标准版本指定
|
4 months ago |
韩天峰
|
be77cfaab1
|
feat(compiler): 增强 PHP 编译器对 Windows 平台和 ZTS 版本的支持
- 检测 PHP 是否为线程安全版本(ZTS)并相应配置编译选项
- 添加 PHPX_HOME 环境变量支持用于自定义 phpx 目录
- 优化 Windows 平台下 PHP 路径检测逻辑,支持从 SDK/include 目录读取头文件
- 实现 Windows 平台下 PHP 库文件的多路径查找策略(SDK/lib, lib, 根目录)
- 添加 Windows 编译时必需的宏定义(ZEND_WIN32, PHP_WIN32, ZTS 等)
- 修复跨平台路径分隔符处理问题,统一 Windows 使用反斜杠
- 增强错误处理和用户提示信息
- 新增 Preprocessor 类用于源文件预处理和依赖分析
|
4 months ago |
韩天峰
|
69886abb5d
|
feat(build): 添加 Windows 平台编译支持
- 实现了 Windows 平台检测和 MSVC 编译器配置
- 添加了 Windows 特定的包含路径和链接库处理
- 实现了 Windows 和 Unix 平台的条件编译选项
- 适配了 Windows 文件路径分隔符和文件扩展名
- 添加了 Windows 下 PHP 目录检测逻辑
- 在 Windows 平台下跳过 clang-format 格式化步骤
|
4 months ago |
韩天峰
|
bdb1f1e7c9
|
feat(build): 更新打包脚本支持跨平台优化
- 添加 macOS 系统检测和 strip 符号剥离功能
- 实现 Linux 系统使用 UPX 压缩,macOS 系统使用 strip 优化
- 添加硬件架构检测,输出文件名包含系统和架构信息
- 重构代码结构,分离操作系统特定的处理逻辑
- 适配不同系统的 stat 和 du 命令差异
- 保留备份机制和错误处理流程
|
4 months ago |
韩天峰
|
15f9d35c69
|
refactor(examples): 优化基准测试和协程示例代码
- 在 simplecall 函数中添加计算总和并打印结果
- 统一函数定义的大括号格式
- 修复 matrix 和 sieve 函数的参数类型声明
- 调整 return 语句的括号格式
- 使用 Swoole\Coroutine\run 函数别名简化调用
|
4 months ago |
韩天峰
|
7f260f3d52
|
fix(php): 修复整数类型在macOS平台的后缀处理
- 根据平台类型动态选择整数后缀,macOS使用LL,其他平台使用L
- 解决了跨平台编译时整数类型不一致的问题
|
4 months ago |
韩天峰
|
c87d750ef3
|
refactor(php): 重构PHP目录获取逻辑以支持macOS编译
- 提取php-config路径获取为公共方法getPhpDir()
- 移除Translator类中的重复代码
- 为macOS平台添加rpath绝对路径配置
- 修复macOS环境下ldconfig缺失导致的链接问题
|
4 months ago |
韩天峰
|
10ab3d44a7
|
feat(php): 添加C++标准版本配置选项
- 引入cxxStd属性,默认设置为c++14标准
- 在编译命令中自动添加-std参数
- 避免重复添加标准参数的逻辑检查
- 支持自定义C++编译标准版本配置
|
4 months ago |
韩天峰
|
4293e95664
|
fix(build): 修复PHP扩展文件路径检查逻辑
- 移除了文件扩展名前的多余点号
- 使用动态扩展名变量构建正确的文件路径
- 更新错误消息以反映正确的文件名格式
- 修正了libphp和libphpx文件的路径验证逻辑
|
4 months ago |
韩天峰
|
0fb8957fc7
|
fix(core): 修复编译器基础类构造函数调用并添加操作系统类型检测支持
- 在 CompilerBase 构造函数中添加对父类构造函数的调用
- 为 Translator 类添加 osType 属性和相关平台检测方法
- 根据操作系统类型动态确定 PHP 扩展库文件后缀名
- 实现对 macOS (.dylib) 和 Linux/Windows (.so) 平台的库文件兼容性支持
|
4 months ago |
韩天峰
|
70d06eeb2b
|
cs-fix
|
4 months ago |
韩天峰
|
c4b7e3022a
|
fix(php): 修复函数use语句解析问题
- 修正useFunctions映射返回值,确保函数名正确拼接
- 修复use语句类型判断逻辑,处理未知类型情况
- 添加any函数polyfill支持
- 新增函数use测试用例验证功能正确性
|
4 months ago |
韩天峰
|
935aeb8b1b
|
refactor(php): 重构变量赋值类型检查逻辑
- 将复杂的类型检查条件判断提取到独立的 checkVarAssignExpr 方法中
- 移除 CompilerBase.php 中的冗长条件判断逻辑
- 在 MagicMethodDetector.php 的 __toString 检查中添加严格类型参数
- 添加 str.php 示例文件用于测试字符串类型转换
- 更新 myext/test.php 添加环境变量访问示例
- 在 Translator.php 中添加 clang-format 版本检测逻辑
|
4 months ago |
韩天峰
|
3460c1e435
|
feat(build): 更新打包脚本以支持版本号自动递增
- 移除硬编码的输出文件名
- 添加基于版本号的动态输出文件命名
- 在打包过程中显示当前版本和输出文件信息
- 添加版本文件初始化,当前版本为1002
|
4 months ago |
韩天峰
|
715f764c11
|
feat(build): 添加PHP版本要求和编译脚本版本管理功能
- 在composer.json中添加PHP 8.2-8.6版本要求和pcntl扩展依赖
- 修改package.sh脚本支持版本号自动递增管理
- 添加version.txt文件用于存储版本号
- 实现带版本号的二进制文件命名机制
- 更新UPX压缩逻辑以处理版本化二进制文件
- 改进打包流程中的文件管理和清理机制
- 添加版本号显示和打包成功后的版本信息输出
|
4 months ago |
韩天峰
|
eba8964d34
|
fix(php): 解决方法调用时的类型检查和反射问题
- 在方法调用前添加变量类型检查,防止对非对象类型调用方法
- 修复反射中获取方法返回类型的逻辑,改进变量命名避免冲突
- 添加对字符串类型参数调用对象方法的错误检测和提示
|
4 months ago |
韩天峰
|
2d0baeaea9
|
feat(examples): 添加 Swoole 相关示例代码
- 新增 Swoole 协程运行示例文件 co.php
- 添加错误常量引用示例文件 const-ref.php
- 创建 Swoole HTTP 服务器示例文件 http.php
- 实现基本的协程运行功能
- 集成 HTTP 服务器请求处理逻辑
- 添加异常处理和响应状态管理
|
4 months ago |
韩天峰
|
7519c3c523
|
feat(php): 添加PHP版本兼容性检查和函数命名空间处理
- 添加PHP版本检查确保8.2.0以上且低于8.6.0
- 使用指定PHP版本创建解析器而不是最新支持版本
- 新增getNamespacedFuncName方法处理函数名的命名空间补齐
- 为动态函数调用添加命名空间全限定名称转换
- 导入PhpVersion类用于版本处理
|
4 months ago |
韩天峰
|
608db0e8c2
|
fix(php): 修复引用参数传递和模块命名问题
- 添加标量值作为引用参数时的错误检查
- 为动态调用类添加占位符处理
- 统一模块名称前缀为 app_
- 简化模块名称生成逻辑
- 添加动态调用测试用例
|
4 months ago |
韩天峰
|
0293b28148
|
feat(compiler): 添加环境变量支持并优化打包流程
- 在编译器中添加 _ENV 全局变量数组支持
- 更新示例程序以演示环境变量访问功能
- 新增 package.sh 脚本实现自动化打包流程
- 集成 UPX 压缩优化二进制文件大小
- 完善打包脚本中的文件检查和错误处理机制
|
4 months ago |
韩天峰
|
db3dc030f0
|
fix(php): 修复代码格式化和常量定义问题
- 将 $formatCode 默认值从 false 修改为 true 以启用代码格式化
- 在 README.md 中添加预览版系统兼容性说明
- 修复 README.md 中编译命令的路径描述错误
- 修复常量定义时 genCharPtr 方法调用参数缺失问题
|
4 months ago |
韩天峰
|
00a8ea180b
|
fix(php): 修复函数定义中的arginfo引用格式
- 移除了arginfo引用中不必要的<?=语法
- 统一了arginfo命名格式为直接使用zifName变量
- 确保命名空间函数的arginfo引用格式与其他函数保持一致
|
4 months ago |
韩天峰
|
489020d5a3
|
refactor(parser): 优化类信息管理逻辑
- 将 ClassInfo::$currentClass 从对象引用改为字符串存储
- 移除 getCurrentClassName 方法并直接使用 $currentClass 属性
- 在类解析过程中正确设置当前类名字符串值
- 统一常量访问时的类名获取方式
- 简化类名字符串的存储和访问流程
|
4 months ago |
韩天峰
|
7ee03288ac
|
docs(license): 更新版权信息归属
- 将软件知识产权归属从 Swoole 开发团队更改为上海识沃网络科技有限公司
- 添加详细的依赖环境配置文档
- 包含 PHP、GCC、CMake 版本要求说明
- 提供 PHPX 编译安装指南
- 添加动态链接库配置说明
|
4 months ago |
韩天峰
|
4aeeb162a2
|
docs(license): 添加许可证文件并移除README中的重复内容
- 新增 LICENSE.md 文件包含完整的预览版使用须知
- 移除 README.md 中的许可证相关内容以避免重复
- 规范化文档结构,将法律声明独立到专门的许可证文件中
|
4 months ago |
韩天峰
|
3489413661
|
docs: 添加 AOT 编译器类继承规则文档和预览版使用须知
- 新增 CLASS_INHERITANCE.md 文档,详细说明 AOT 编译器类继承规则
- 新增 README.md 文件,包含预览版使用条款和责任限制说明
- 文档涵盖合法继承示例、非法继承示例和最佳实践指南
- 添加故障排除部分和常见问题解答
- 说明 AOT 编译器与传统 PHP 在继承方面的差异对比
- 强调预览版软件的使用限制和风险提示
|
4 months ago |
韩天峰
|
d78a43099d
|
refactor(php): 重构 PHP 编译器基础类以使用 phpx 库
- 移除硬编码的 phpx 目录路径,改用动态获取方法
- 将 phpx 目录设置方法从公共改为受保护,并返回 vendor 中的 phpx 路径
- 更新 include 和 lib 目录路径为从 phpx 库动态获取
- 在 composer.json 中添加 swoole/phpx 依赖
- 添加构建前检查 php-config 和必要库文件的验证逻辑
- 更新源文件路径为从 phpx 库目录中获取
- 为 debug-info 参数添加默认值配置
|
4 months ago |
韩天峰
|
b4d82a1bad
|
remove(embed): 删除嵌入式PHP相关文件,迁移至 phpx 目录
- 移除main.cc主程序文件及其PHP嵌入初始化代码
- 删除php_aot_helper.h头文件及其中的辅助函数声明
- 移除php_cli_process_title.c进程标题设置功能实现
- 删除php_cli_process_title.h头文件及函数声明
- 移除php_cli_process_title.stub.php存根文件
- 删除php_cli_process_title_arginfo.h参数信息文件
- 移除ps_title.c进程标题底层实现文件
- 删除ps_title.h头文件及状态枚举定义
|
4 months ago |
韩天峰
|
ccfef0f2b6
|
fix(cli): 修复命令行参数处理和调试选项配置
- 将命令行参数验证移到路径设置之前
- 添加 translator 的 showUsage() 方法调用
- 默认关闭 debugInfo、formatCode 和 printBacktraceOnError
- 在编译命令中条件性添加 -g 参数
- 仅在启用格式化时运行 clang-format
- 更新帮助信息显示动态命令名称
- 添加 -d, --debug-info 选项支持
- 将 -v 选项从 verbose 改为显示版本
- 改进错误处理使用 translator 的 error 方法
|
4 months ago |
韩天峰
|
0e319c48de
|
fix(php): 修复原生类型变量和对象属性的 unset 操作问题
- 修改对象属性 unset 警告消息为更准确的描述
- 添加对原生类型变量的 unset 操作检查和警告
- 阻止原生类型变量执行 unset 操作
- 新增 unset 原生类型变量的测试用例
- 完善变量类型检查逻辑以区分原生类型
|
4 months ago |
韩天峰
|
fbeac08f20
|
feat(php): 添加对象属性变量管理和取消设置检查功能
- 新增 getObjectPropVarName 方法用于生成对象属性变量名
- 新增 getObjectPropVarInfo 方法用于获取对象属性变量信息
- 新增 hasObjectPropVar 方法用于检查对象属性变量是否存在
- 将警告颜色从黄色更改为洋红色以提高可读性
- 在取消设置对象属性时添加不允许操作的警告提示
- 添加对整数类型属性取消设置的特殊处理逻辑
- 新增 unset-int-prop.php 示例文件演示属性取消设置行为
|
4 months ago |
韩天峰
|
9ed73be36f
|
refactor(examples): 更新PHP示例中的类型声明和代码结构
- 为Foo类的属性$b添加int类型声明
- 为read_prop和write_prop方法的参数$n添加int类型声明
- 移除python/sys.php文件开头的注释和无用函数定义
- 重新组织sys.php文件中的代码顺序,将main函数移到合适位置
- 保持原有的系统API调用功能不变
|
4 months ago |
韩天峰
|
2912b40b0f
|
feat(compiler): 添加原生类型支持和属性获取功能
- 在编译器基础类中添加了 Expr_PropertyFetch 表达式处理逻辑
- 实现了原生属性变量检测和类型推断功能
- 新增了属性获取表达式的原生属性变量标记机制
- 更新了多个示例文件以使用 native_types 命名空间
- 添加了默认数组属性测试用例验证功能
- 集成了 polyfills 支持并在主入口点传递命令行参数
|
4 months ago |
韩天峰
|
089ae56f0b
|
fix(php): 修正生成文件的日志消息
- 将日志消息从 'generate stub file' 更改为 'generate ArgInfo file'
|
4 months ago |
韩天峰
|
c86059217d
|
feat(compiler): 优化对象属性访问性能
- 引入 PropertyDef 实体类来管理属性定义
- 添加 OBJECT_PROP 常量用于标识对象属性
- 修复 findNativeProperty 方法中的参数传递问题
- 实现 native 属性类型的引用优化,提升 this_ 对象的属性访问性能
- 为整型和浮点型属性创建直接引用访问机制
- 改进属性查找逻辑,支持 nativePropertyDef 和 nativeClassDef 属性
- 在编译代码中添加对象属性引用声明,优化运行时性能
- 添加测试用例验证默认数组属性功能
|
4 months ago |
韩天峰
|
12ff420d87
|
refactor(config): 将编译器选项配置迁移至常量类
- 移除独立的 compiler_options.php 配置文件
- 将编译器选项定义移至 Php/Constants.php 中的 COMPILER_OPTIONS 常量
- 更新 CompilerBase.php 中的 getNamespacedClassName 调用方式
- 修改 Constants.php 中的 UNSUPPORTED_FUNCTIONS 为数组类型
- 更新 Translator.php 中配置加载方式,使用 Constants::COMPILER_OPTIONS 替代 require
- 添加 objval 函数的相关测试用例
|
4 months ago |