韩天峰
|
715d2222e8
|
test(aot): 添加 std ordered_map 功能测试用例
- 测试基本的 ordered_map 操作,包括整数键浮点数值的存储和更新
- 测试字符串键的 ordered_map 功能及类型处理
- 测试复杂值类型的 ordered_map,包括字符串、数组、对象和变体类型
- 测试精确类值类型的容器功能,验证类型安全和继承关系
- 测试 unsafe_cast 功能及其类型转换行为
- 测试 unsafe_cast 类型不匹配的错误处理
- 测试 ordered_map 与 PHP 数组之间的赋值操作
- 测试相同类型的 ordered_map 之间复制操作
- 测试 unset 操作对 ordered_map 元素的删除功能
- 测试遍历过程中 unset 元素的行为表现
|
2 months ago |
韩天峰
|
b3e489d334
|
refactor(aot): 重构标准容器实现将unordered_map重命名为ordered_map
- 将StdUnorderedMap重命名为StdOrderedMap并在所有相关文件中更新引用
- 修改polyfills.php中std::unordered_map为std::ordered_map,std::map为std::unordered_map
- 更新文档中关于标准容器的命名和功能描述
- 修复所有测试文件中关于容器类型的断言和期望值
- 调整编译器内部类型标识符从TYPE_STD_UNORDERED_MAP到TYPE_STD_ORDERED_MAP
- 修改解析器中对标准容器类型的判断和处理逻辑
- 更新单元测试中的类型检查和声明获取方法
|
2 months ago |
韩天峰
|
18b4bf4ed6
|
test(phpunit): 添加未定义方法调用和属性访问测试用例
- 添加 undefined-method-call.php 测试文件
- 添加 undefined-prop-access.php 测试文件
- 创建基本的 PHP 对象方法调用测试场景
- 创建基本的 PHP 对象属性访问测试场景
|
2 months ago |
韩天峰
|
e4e63e7b8c
|
fix(php): 修复静态属性引用槽在动态引用绑定后的有效性问题
- 实现了对原生类型静态属性的引用管理机制
- 为整型和浮点型静态属性创建稳定的 zval* 槽位
- 添加了静态属性引用信息的条件检查和初始化逻辑
- 更新了静态属性访问的帮助函数选择机制
- 修改了变量声明生成以统一使用 zval* 类型
- 优化了头文件包含的代码生成格式
- 添加了相关的单元测试验证对象属性操作收集
- 新增了静态属性引用槽崩溃场景的测试用例
|
2 months ago |
韩天峰
|
ad617bcac8
|
test(aot): 添加类继承方法测试用例
- 创建 BaseObject 基类并实现 foo 方法
- 创建 ChildObject 子类继承 BaseObject 并实现 bar 方法
- 添加 foo_test 函数验证基类参数传递和方法调用
- 实现 main 函数进行继承关系测试
- 验证 toObject 方法
|
2 months ago |
韩天峰
|
602e8b34ee
|
feat(compiler): 为嵌入类方法添加混合返回类型推断支持
- 实现了对匿名类和嵌入类方法的混合返回类型自动推断
- 添加了魔术方法返回类型敏感性检测逻辑
- 集成了祖先类方法返回类型的递归检查机制
- 扩展了类继承链中的返回类型声明分析功能
- 优化了内部类和接口方法返回类型的反射检测
- 新增了类方法返回类型未声明时的混合类型注入逻辑
fix(optimizer): 修复对象属性提升优化中的引用槽位安全检测
- 修正了对象暴露给动态代码时的属性引用安全检查机制
- 更新了方法调用和函数调用的安全性判断逻辑
- 重构了对象参数传递时的危险操作检测算法
- 添加了
|
2 months ago |
韩天峰
|
4acb632c13
|
feat(compiler): 为类方法自动推断返回类型并优化属性访问检查
- 在 CompilerBase 中添加类方法返回类型自动推断逻辑
- 为魔术方法设置特定的返回类型标识符
- 移除 isInferredPhpDocType 条件判断简化类型处理
- 更新对象处理器设置使用自定义处理器覆盖 unset 操作
- 修改 SsaPropOptimizer 中的危险属性操作检测逻辑
- 移除对 unset($o->prop) 的特殊处理因为对象处理器已拒绝属性取消设置
- 移除动态调用对象暴露的安全性检查优化性能
- 删除不再需要的 isSafeObjectExposureCall 等辅助方法
|
2 months ago |
韩天峰
|
25aeff51a7
|
refactor(generator): 简化类对象处理器初始化逻辑
- 移除手动初始化 zend_object_handlers 的冗余代码
- 直接使用预定义的 php_aot_object_handlers 全局变量
- 减少代码行数并提高可读性
- 保持相同的功能实现
|
2 months ago |
韩天峰
|
e6c3e22f6e
|
feat(compiler): 添加未定义变量检查和对象处理器初始化
- 在属性访问时检查未定义变量并报告错误
- 初始化类对象处理器以支持对象操作
- 添加对未定义变量属性访问的测试用例
- 添加对未定义变量方法调用的测试用例
- 为动态代码中的类型化属性取消设置添加测试
|
2 months ago |
韩天峰
|
72cf8e7166
|
refactor(php): 优化零值字面量判断逻辑
- 移除多余的变量赋值,直接返回表达式结果
- 统一数值比较操作符的一致性
- 为字符串数值转换添加括号以提高可读性
- 新增对常量和类常量表达式的零值检测支持
- 简化函数中的重复返回语句结构
|
2 months ago |
韩天峰
|
215f5cdcac
|
feat(stub): 添加对推断PHP文档类型的处理支持
- 在ArgInfo构造函数中添加isInferredPhpDocType参数,默认值为false
- 修改beginArgInfoCompatible方法中的有效类型判断逻辑
- 移除未使用的可变参数代码逻辑
- 更新默认参数类型和返回类型推断处理
- 添加mixed类型函数示例文件
- 修复预处理器中参数类型检查的空值判断问题
- 添加void返回类型的基本测试用例
|
2 months ago |
韩天峰
|
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 |