韩天峰
|
785d9c9d6d
|
test(php): 添加 compact 和 globals 相关功能测试用例
- 新增 CompactTest 类测试 compact('this') 在不同上下文中的行为
- 添加 CountGlobalsTest 类测试优化器路径中未定义变量检测逻辑
- 实现 globals 数组访问形式的编译通过验证
- 补充 optimizer-undefined-var.php 测试文件验证错误回退机制
- 添加 globals-array-access.php 测试文件验证数组访问正常编译
- 创建 global.php 示例文件展示全局变量使用方式
|
2 months ago |
韩天峰
|
57517381a1
|
feat(generator): 优化属性默认值生成逻辑支持数组类型
- 添加 simpleType 判断逻辑以识别数组类型
- 实现空数组默认值的特殊处理机制
- 新增 hasNullDefault 和 useEmptyArrayDefault 判断条件
- 修改默认值生成流程以支持数组类型的 ZVAL_EMPTY_ARRAY
- 添加静态类属性表达式测试用例验证功能
- 重构代码结构提高可读性和维护性
|
2 months ago |
韩天峰
|
dc5c90044b
|
fix(php): 修复$GLOBALS变量处理问题
- 在CompilerBase.php中为$GLOBALS添加特殊处理逻辑,使用php_globals_array()创建独立副本
- 在FuncCallOptimizer.php中优化函数调用时对$GLOBALS的处理
- 移除Translator.php中$GLOBALS的全局变量初始化代码
- 避免直接操作$GLOABLS符号表的引用计数
- 确保$GLOBALS在各读取位置都通过安全方式访问
|
2 months ago |
韩天峰
|
f63084f8d4
|
test(aot): 添加数组中null作为键的测试用例
- 创建了null作为数组键的测试文件
- 验证了多个null键值对的处理逻辑
- 确认了数组索引从0开始的预期行为
- 测试了字符串值的正确赋值功能
|
2 months ago |
韩天峰
|
129fcce880
|
fix(php): 修复全局变量处理和代码格式化问题
- 将默认代码格式化功能从禁用改为启用
- 添加 GLOBALS 超全局变量到类型映射数组
- 在函数调用优化器中检查参数变量是否存在避免动态调用错误
- 为全局变量添加线程本地存储支持
- 实现 GLOBALS 超全局变量的特殊初始化逻辑
- 修复全局变量清理过程中的 GLOBALS 处理
|
2 months ago |
韩天峰
|
99c3dec641
|
feat(php): 添加魔术方法类型推断支持
- 在 ArgInfo 类中添加 undeclared 属性用于标识未声明类型
- 在 FunctionDef 类中添加 returnTypeUndeclared 属性用于标识返回类型未声明
- 实现 getMagicMethodDefaultReturnType 函数为魔术方法提供默认返回类型映射
- 实现 getMagicMethodDefaultParamType 函数为魔术方法提供默认参数类型映射
- 更新魔术方法检测器中的类型检查逻辑,支持未声明类型的自动填充
- 重构 MagicMethodDetector 中的参数验证,为不同魔术方法设置正确的类型约束
- 添加对魔术方法参数和返回类型的自动类型补全功能
|
2 months ago |
韩天峰
|
1e6fb4972a
|
feat(php): 支持 compact 函数中的 'this' 变量
- 添加了对 compact('this') 的支持,允许在类方法中使用 this 变量
- 实现了 'this' 变量的特殊处理逻辑,避免未定义变量错误
- 添加了类上下文检查,防止在类外部使用 compact('this')
- 创建了新的测试文件来验证 compact('this') 在不同场景下的行为
- 更新了函数调用优化器以正确处理 'this' 变量的特殊情况
|
2 months ago |
韩天峰
|
989395d7e1
|
fix(php): 修复常量比较的大小写敏感问题
- 修改 isScalarBool 方法使用 strtolower 进行不区分大小写的布尔值比较
- 修改 getBoolValue 方法使用 strcasecmp 替代严格相等比较
- 修改 isNull 方法使用 strcasecmp 进行不区分大小写的 null 比较
- 在 getConstantValue 中使用 strcasecmp 替代严格相等比较
- 在 getTypeFromConstant 中使用 strcasecmp 替行不区分大小写的布尔值检查
- 添加对函数内部声明函数的错误检查
- 添加测试用例验证布尔数组排序功能
|
2 months ago |
韩天峰
|
397bfc9fbb
|
refactor(php): 优化编译器参数引用检测逻辑
- 修改 CompilerBase.php 中 isPassedByReference 方法,增加对变长引用参数的支持
- 添加 Reflection::getVariadicParameter 方法用于获取可变参数的引用信息
- 修复 toReference 空链情况下的调用逻辑,改为使用成员函数形式
- 新增 array-multisort 函数的测试用例验证正常参数功能
|
2 months ago |
韩天峰
|
e0f6de8480
|
feat(aot): 添加对any类型声明的支持并优化参数信息生成
- 添加了012、013、014测试用例验证类型声明功能
- 将any类型作为内置伪类型处理,映射为mixed类型
- 支持方法签名中的any返回类型注解
- 实现PHPDoc类型与实际类型的合并处理逻辑
- 为非可变参数函数自动添加尾随可变参数支持
- 修复了回调函数传递额外参数时的类型处理问题
|
2 months ago |
韩天峰
|
cba9990e80
|
refactor(parser): 重构零值字面量检测逻辑
- 将 isZeroLiteral 方法从 BinaryOpTrait 移动到 CompilerBase 类中
- 为 isZeroLiteral 方法添加详细的文档注释说明其用途
- 添加 targetPlatform 配置选项支持交叉编译目标平台
- 修复对象属性测试用例中的数组索引访问功能
- 在 array_sum 和 array_product 测试中添加错误报告控制
|
2 months ago |
韩天峰
|
8267ae2bf4
|
feat(build): 添加交叉编译目标平台支持
- 在 Clang 和 GCC 编译器后端中添加 --target 参数支持
- 添加 target-platform 配置选项的常量定义
- 在命令行参数解析中添加对 target-platform 的支持
- 将 target-platform 配置传递给编译器命令生成逻辑
- 更新帮助文档显示新的交叉编译选项
- 支持指定交叉编译目标三元组 (如 aarch64-linux-gnu)
|
2 months ago |
韩天峰
|
22c2d17954
|
feat(cli): 添加 no-color 命令行选项并清理帮助文档
- 添加 no-color 参数用于禁用 ANSI 颜色输出
- 移除帮助文档中过多的命令行示例
- 简化 CLI 帮助界面以提高可读性
|
2 months ago |
韩天峰
|
4e7acaf940
|
feat(compiler): 添加目标CPU指令集优化支持
- 在 Clang 和 GCC 后端中添加 -march 参数支持
- 新增 --march <arch> 命令行选项用于指定目标CPU架构
- 在 CompilerBase 中添加 march 属性和 getter 方法
- 更新文档说明 --march 选项的用法和常见值
- 在常量定义中注册 march 参数配置
- 在翻译器中解析和处理 --march 命令行参数
- 将 march 配置传递给编译后端命令构建过程
|
2 months ago |
韩天峰
|
8f3f3e73eb
|
refactor(php): 简化配置项读取逻辑
- 移除对下划线格式配置键的支持,统一使用中横线格式
- 更新 cxx-flags 配置项读取方式
- 更新 cxx-std 配置项读取方式
- 更新 ld-flags 配置项读取方式
- 更新 link-libs 配置项读取方式
- 更新 link-paths 配置项读取方式
- 更新 cpp-compiler 配置项读取方式
|
2 months ago |
韩天峰
|
02a91bba95
|
feat(compiler): 添加外部库集成和编译优化功能
- 支持通过 -I/--include-path 添加自定义头文件搜索路径
- 支持通过 -D/--define 定义预处理器宏用于条件编译
- 实现 LTO 链接时优化功能 (--lto) 提升性能和减小体积
- 添加 clang-format 代码格式化支持 (--format)
- 支持通过 -l/-L 参数链接外部库和指定库搜索路径
- 添加配置文件方式定义链接库和搜索路径
- 更新文档包含新功能使用说明和示例
|
2 months ago |
韩天峰
|
b8247d4cc7
|
test(array): 添加数组合并展开操作的测试用例
- 新增 array-merge-unpack.phpt 测试文件
- 实现 Dg 类用于测试数组合并展开功能
- 添加 f1 方法测试 array_merge(...array_map('array_values', $this->r))
- 添加 f2 方法测试双重 foreach 循环展开
- 实现 chk 方法验证两种方法的结果一致性
- 添加 main 函数执行测试用例
fix(optimizer): 修复函数调用优化器对命名参数和展开参数的处理
- 在 dispatchFuncCall 方法中添加参数检查逻辑
- 检测到命名参数或 unpack 展开参数时返回 false
- 避免静态优化路径处理需要运行时解析的参数
- 确保命名参数和展开语法正确回退到动态调用
|
2 months ago |
韩天峰
|
e55da7297d
|
feat(compiler): 添加输出目录参数支持
- 在 CompilerBase 中添加 outputDir 属性用于存储 -o 参数指定的输出目录
- 实现将目标文件路径与输出目录进行拼接的功能
- 在 Translator 中解析输出参数中的路径分隔符并分离目录和文件名
- 支持通过 -o 参数直接指定完整的输出路径包括目录结构
|
2 months ago |
韩天峰
|
a6a62c8e81
|
refactor(compiler): 优化构建目录处理和代码生成流程
- 将干运行输出改为使用translator的output方法并添加颜色样式
- 在设置构建目录时添加路径解析和验证,确保目录存在且可访问
- 移除重复的头文件和扩展源文件生成代码
- 重构代码生成逻辑,将头文件生成移到正确的执行位置
- 添加对构建路径解析失败的异常处理
|
2 months ago |
韩天峰
|
3801158b41
|
feat(compiler): 添加干运行模式和构建目录选项
- 实现了 --dry 参数支持,允许仅生成 C++ 代码而不进行编译链接
- 添加了 --build-dir 参数用于指定生成 C++ 代码的构建目录
- 在翻译器中增加了 dryRun 属性和对应的判断方法
- 更新了命令行帮助信息,显示新的参数选项
- 在干运行模式下显示生成的源文件数量和构建目录路径
- 添加了相关常量定义和参数解析逻辑
|
2 months ago |
韩天峰
|
6543dfccce
|
Merge pull request '修复一些问题' (#2) from fix-20260617 into master
Reviewed-on: #2
|
2 months ago |
韩天峰
|
cce6967acf
|
fix(php): 修复静态属性晚绑定支持问题
- 修改 CompilerBase.php 中的静态属性处理逻辑,正确区分 self 和 static 关键字
- 为 native-property-full-name.php 添加 writeStatic 测试方法
- 更新 NativePropertyTest.php 中的编译方法返回值类型和测试用例
- 添加静态属性晚绑定功能的完整测试用例 static-prop-late-static-binding.phpt
|
2 months ago |
韩天峰
|
91675ed366
|
feat(php): 添加除零检查和改进原生属性访问功能
- 添加对字面量除零、模零、赋值除零和赋值模零操作的编译时检查
- 实现对整数、浮点数和字符串类型的零值检测
- 为 AssignOpTrait 和 BinaryOpTrait 添加 guardLiteralDivisionByZero 方法
- 改进原生属性访问的类名解析,使用完整的类名进行查找
- 支持 static 关键字作为类名解析的一部分
- 添加 isSameClassName 和 isSameOrSubclassOf 辅助方法用于类继承关系判断
- 实现受保护属性访问权限控制的 canAccessProtectedProperty 方法
- 添加多个测试文件验证除零检查和原生属性访问功能
- 创建 NativePropertyTest 和 OperatorTest 测试类验证相关功能
|
2 months ago |
韩天峰
|
7e52d51b5b
|
fix(php): 解决除零运算错误处理问题
- 添加了对除法和取模运算中零值检测的统一处理
- 当遇到除零或模零运算时抛出致命错误而不是返回NaN
- 移除了旧的零除法返回NaN的逻辑
- 统一了除法和取模运算的零值检查条件
|
2 months ago |
Yurun
|
8e5b9e8076
|
fix(compiler)): 修复除以零MSVC编译不通过
|
2 months ago |
Yurun
|
30ef9352a2
|
fix(const): 修复常量名与变量名冲突问题、常量名大小写敏感问题
|
2 months ago |
Yurun
|
a365474674
|
fix(tests): 修复 Windows 测试弹出 UAC
|
2 months ago |
Yurun
|
f2e063b41d
|
fix(compiler): 修复命名空间内类名解析及use别名查找
|
2 months ago |
韩天峰
|
19164e92bc
|
docs(compiler): 添加AOT编译速度优化研究文档并完善测试用例
- 添加AOT编译速度优化研究笔记,涵盖瓶颈分析和优化方向
- 新增构造函数抛异常析构函数调用测试用例
- 添加混合数组默认参数函数测试用例
- 补充私有方法重写功能测试代码
- 增加抽象类实例化相关测试文件
|
2 months ago |
韩天峰
|
5a7805b544
|
feat(php): 添加对动态属性赋值操作符和递增递减操作的支持
- 实现了动态属性的赋值操作符(如 +=、-=、.= 等)的解析和代码生成
- 添加了动态属性递增递减操作(++、--)的特殊处理逻辑
- 新增 genDynamicPropIncDec 方法用于生成动态属性 ++/-- 操作的 C++ 代码
- 为 clone 测试用例中的属性访问错误提供了更准确的错误消息
- 在属性获取逻辑中添加了静态与非静态属性访问的错误检查机制
|
2 months ago |
韩天峰
|
386c6568f1
|
test(aot): 添加可空布尔类型的基本测试用例
- 添加 bool 可空类型的基础测试文件 nullable-bool.phpt
- 测试静态类中 ?bool 类型参数的默认值行为
- 验证 null、true、false 和无参数传入的情况
- 包含动态类 eval 情况下的可空布尔类型测试
- 确保所有测试场景的输出符合预期结果
|
2 months ago |
韩天峰
|
db5de84468
|
fix(php): 修复可选参数中的null值处理问题
- 在函数调用优化器中添加对可空参数的支持
- 修改buildArgList方法以接收和处理nullables数组
- 当参数允许null值时直接传递原始变量而非解析值
- 更新函数反射信息以包含参数可空性信息
- 调整测试用例以反映explode函数中null限制的行为变化
- 移除显式传入null时使用默认值的特殊处理逻辑
|
2 months ago |
韩天峰
|
f45dadc2f8
|
test(strings): 更新字符串测试以支持AOT编译
- 移除多个测试文件中的 --CREDITS-- 和 --SKIPIF-- 部分
- 修改 bug73817.phpt 添加缺失的输出标记 ===DONE===
- 更新 chunk_split_variation4.phpt 中的跳过条件注释并移除问题测试用例
- 修改 fprintf_error.phpt、gh18823_strict.phpt 等多个测试的跳过原因
- 在 heredoc.phpt 中添加新的基本测试用例
- 修复 implode_basic.phpt 中的函数调用参数
- 更新多个测试文件的跳过条件以更好地描述AOT限制
- 调整 str
|
2 months ago |
韩天峰
|
ed9462bb49
|
chore(tests): 移除字符串函数测试中的AOT限制跳过条件
- 移除多个字符串函数测试文件中的 skip AOT limitation 条件
- 在005.phpt中将INI设置移至FILE部分并使用ini_set函数
- 更新addcslashes_005.phpt中的错误输出格式
- 修改bug67252.phpt中跳过条件的注释方式
- 调整bug68710.phpt和bug72663_2.phpt中的完成标记输出
- 移除trim相关
|
2 months ago |
韩天峰
|
f0c4b6bc98
|
fix(php): 解决可选参数传入null时使用C++默认值的问题
- 当可选参数显式传入null时跳过该参数,使C++默认值生效
- 添加对substr、strpos、stripos、strrpos、strstr、explode等函数的null参数处理
- 确保null参数行为与PHP原生函数一致
- 新增测试用例验证各种可选参数为null时的正确行为
|
2 months ago |
韩天峰
|
10fd8fe0ce
|
add string tests
|
2 months ago |
韩天峰
|
1ec0f3a2e0
|
chore(build): 更新版本号并优化打包脚本
- 添加 clean-elf.sh 脚本用于删除临时 ELF 可执行文件
- 将 swoole/phpx 依赖从 ~2.3.6 更新到 ~2.3.7
- 从打包清单中移除 composer.lock 文件
- 将版本号从 1066 更新到 1069
|
2 months ago |
yurunsoft
|
dfb6f693c3
|
修复 Windows 运行测试 (#1)
Co-authored-by: Yurun <admin@yurunsoft.com>
Reviewed-on: #1
Co-authored-by: yurunsoft <admin@yurunsoft.com>
Co-committed-by: yurunsoft <admin@yurunsoft.com>
|
2 months ago |
韩天峰
|
29236bb66a
|
test(php): 添加对象属性默认数组测试并移除运行时初始化检查
- 新增 multiple default array properties 测试用例
- 移除 ArrayInitPlan 的 requiresRuntimeInit 检查逻辑
- 简化 wrapArrayInitPlan 方法实现
|
2 months ago |
韩天峰
|
0dc846a4fc
|
feat(php): 添加数组初始化计划支持并修复构造函数提升属性默认值处理
- 引入 ArrayInitPlan 实体类用于处理数组初始化计划
- 修复构造函数参数提升属性的默认值归属问题
- 为数组类型的参数默认值添加运行时初始化支持
- 实现数组初始化计划的构建和包装逻辑
- 添加默认参数辅助函数生成功能
- 重构静态属性和实例属性的初始化处理逻辑
- 添加 readonly 类测试用例以验证功能正确性
|
2 months ago |
韩天峰
|
5ed79e9451
|
fix(php): 修复字面量字符串为空时的编译错误
- 在声明字面量字符串数组前检查数组是否为空
- 避免当没有字面量字符串时生成无效的 extern 声明
- 添加空数组条件判断以防止编译器报错
- 为函数默认值相关的字符串字面量添加相同保护
- 确保代码在各种情况下都能正确编译
|
2 months ago |
韩天峰
|
91a710844c
|
refactor(php): 重构静态属性默认值初始化逻辑
- 修改 genLocalVarDecl 方法接受局部变量数组参数
- 恢复 genScopeVarDecl 方法并调用 genLocalVarDecl
- 在 Preprocessor 中添加静态属性默认值初始化处理逻辑
- 扩展 PropertyDef 类添加 defaultInit 和 defaultClean 属性
- 更新 Translator 中静态属性设置逻辑支持初始化和清理代码
- 添加静态数组属性测试用例
|
2 months ago |
韩天峰
|
93367a722e
|
test(const): 添加零值类常量作为数组键的测试用例
- 创建了测试文件 zero-const.phpt 验证类常量值为0的情况
- 测试了将值为0的类常量用作数组键的功能
- 验证了返回数组中键值对的正确性
- 确保类型转换和数据完整性符合预期行为
|
2 months ago |
韩天峰
|
d1c4e365b1
|
test(const): 添加类常量默认值测试用例
- 添加了类常量默认值从 self::CV 获取的测试用例
- 测试静态方法和实例方法中使用类常量作为参数默认值
- 验证了函数调用时传入不同参数的输出结果
- 修复了类常量默认值非字符串类型时的导出问题
- 确保默认值能正确转换为字符串格式进行显示
|
2 months ago |
韩天峰
|
881c6dbe45
|
feat(trait): 实现trait抽象方法重复定义的兼容性检查
- 添加对多个trait中相同抽象方法的签名兼容性验证
- 实现抽象方法与具体方法之间的优先级处理逻辑
- 支持抽象方法参数类型、返回类型和可见性的比较验证
- 添加联合类型和交集类型的标准化字符串转换功能
- 创建详细的错误消息处理重复抽象方法的不同情况
- 增加测试用例验证trait重复抽象方法的处理机制
|
2 months ago |
韩天峰
|
e8fa430c8c
|
test(stdlib): 添加ArrayObject的count函数测试用例
- 创建了新的测试文件tests/aot/stdlib/countable.phpt
- 添加ArrayObject实例化和元素添加的测试代码
- 验证count函数对ArrayObject的计数功能
- 设置期望输出为int(3)验证测试结果
|
2 months ago |
韩天峰
|
5e1c44832c
|
chore(version): 更新版本号从 1064 到 1066
- 将 version.txt 中的版本号从 1064 更新为 1066
|
2 months ago |
韩天峰
|
afa8aa939a
|
fix(tests): 修复测试脚本中的函数参数和信息输出
- 更新 swoole/phpx 依赖版本从 ~2.3.4 到 ~2.3.6
- 移除 write_information 函数中的 $phpdbg 参数
- 删除对 $php_cgi 和 $phpdbg 相关的信息收集逻辑
- 简化 PHP 版本信息输出,只显示基础 PHP 信息
- 清理全局变量引用,移除不再使用的变量
|
2 months ago |
韩天峰
|
df78e177f4
|
refactor(optimizer): 优化函数调用参数转换逻辑
- 提取参数转换逻辑到独立的 applyArgConversion 方法中
- 将数组类型参数转换改为 convertArrayExpr 方法
- 在 UniversalMethodCall 中实现 PHP 函数调用优化
- 添加 tryOptimizePhpFn 方法支持直接 C++ 调用
- 实现 mergeConstArgs 方法合并常量参数
- 保留动态 php::call 作为备选方案
|
2 months ago |
韩天峰
|
797c19824d
|
Revert "refactor(Php): 将PHP函数调用改为C++函数调用"
This reverts commit b1cc95818a.
|
2 months ago |