韩天峰
|
275ef95da7
|
移除 resolveExprType 方法,只使用 detectTypeOfExpr
|
3 months ago |
韩天峰
|
8faac7d972
|
fix(compiler): 修复方法调用解析中的参数传递错误
- 修正了 BackendOptionsTest 中的优化级别断言,从 /O2 改为 /O1
- 修复了 CompilerBase 中的方法名参数传递错误,将 $method 改为 $methodName
- 在无法调用方法时添加了致命错误提示
- 删除了 PreprocessorTest 中已弃用的缓存测试方法
|
3 months ago |
韩天峰
|
08f90e2df9
|
feat(php): 添加对box类型的支持
- 在CompilerBase中添加TYPE_BOX常量定义
- 将box类型映射到php::Box类型标识符
- 修改类型解析逻辑以支持box伪类型处理
- 更新gen_stub.php中的类型转换和映射逻辑
- 在StdContainerParser中扩展box类型处理
- 添加box类型到类型搜索顺序数组中
- 实现box类型与其他类型的转换逻辑
|
3 months ago |
韩天峰
|
549630e83e
|
fix(build): 修正编译器入口文件路径
- 将 require 语句从 compiler-build.php 更改为 compiler.php
- 确保正确的编译器主文件被加载执行
|
3 months ago |
韩天峰
|
bcc518406f
|
refactor(compiler): 重构编译器主逻辑到独立函数
- 将编译器核心逻辑从 compiler.php 移至 src/compiler-build.php
- 添加 main 函数封装编译流程
- 优化 ROOT_PATH 定义检查避免重复定义
- 使用 require_once 替代 require 避免重复加载
- 保留命令行参数解析和执行功能
|
3 months ago |
韩天峰
|
593cd523d5
|
feat(php): 添加对 any 类型的支持
- 在 CompilerBase.php 中添加 'any' 类型映射到 TYPE_VAR
- 修改 gen_stub.php 中的类型解析逻辑以支持 any 类型
- 当遇到 any 类型时返回 mixed 类型的 SimpleType 实例
- 统一变量名使用以提高代码一致性
|
3 months ago |
韩天峰
|
fda0acc38f
|
refactor(php): 移除编译缓存机制并更新强制编译描述
- 移除了 Preprocessor 和 Translator 中的缓存检查逻辑
- 删除了 hasCppFileCache 和 hasObjectFileCache 方法
- 更新 force 参数描述为 "Force recompile phpx misc files (ignore cache)"
- 简化了编译流程,不再跳过已存在缓存的文件
- 保留了 misc 目录下源文件的缓存检查功能
- 从 Constants.php 和 Translator.php 中移除了相关的缓存控制代码
|
3 months ago |
韩天峰
|
adde76b715
|
feat(php): 添加对 phpx/src/misc 目录下源文件的缓存支持
- 实现 hasMiscObjectFileCache 方法用于检查 phpx/src/misc 下的源文件是否已有有效缓存
- 添加 isPhpxMiscFile 方法判断文件是否为 phpx/misc 目录下的文件
- 在编译前检查 misc 目录下的文件是否命中缓存并跳过编译
- 缓存检查逻辑独立于 enableCache 参数,始终生效(除非指定 --force)
- 仅当目标文件比源文件和 phpx 头文件更新时才使用缓存
- 遍历 phpx/include 和 phpx/src/misc 目录检查头文件修改时间
|
3 months ago |
韩天峰
|
3045259ae0
|
feat(compiler): 添加编译后运行功能支持
- 实现命令行参数解析功能,支持路径和选项参数
- 添加 --run/-r 选项用于编译完成后立即执行二进制文件
- 更新帮助信息显示新的运行选项
- 修改 build 方法返回目标文件路径而不是 void
- 实现 run 方法执行编译后的二进制文件
- 添加目标参数获取功能支持传递给执行程序
- 移除简单的文件参数检查逻辑
|
3 months ago |
韩天峰
|
4a2b2ef201
|
test(aot): 更新幂运算整数溢出测试的期望输出
- 修正了 pow-int-overflow.phpt 测试用例的期望值精度
- 将期望输出从 1.2089258196146E+24 更新为 1.2089258196146292E+24
- 提高了测试断言的数值精度匹配准确性
|
3 months ago |
韩天峰
|
4c3d7ca4c3
|
feat(compiler): 添加对 bigint、bigfloat 和 decimal 类型的支持
- 在 zendTypeMap 中添加了 bigint、bigfloat 和 decimal 类型映射
- 实现了类型名称的大小写不敏感匹配逻辑
- 添加了对 std 类中 bigInt、bigFloat 和 decimal 方法的类型推断
- 支持 native_types、decimal_types 和 bigint_types 的大小写不敏感解析
- 在 polyfills.php 中定义了新的类型常量
- 添加了相关测试用例验证大数运算功能
- 优化了变量类型检测和赋值时的类型处理逻辑
|
3 months ago |
韩天峰
|
c604fc09ab
|
feat(compiler): 添加对 Big* 类型的字符串转换和数学函数优化支持
- 在 echo 表达式中实现 BigInt、BigFloat 和 Decimal 类型的自动 toString 转换
- 为 abs、pow、sqrt、floor、ceil、round 数学函数添加 Big* 类型返回值推断
- 优化二进制连接操作中的类型转换逻辑,支持 Big* 类型到字符串的转换
- 为 (string) 强制转换、strval() 函数和 floor/ceil/round 函数添加 Big* 类型支持
- 新增测试用例验证 Big* 类型的数学函数优化功能
- 添加 Decimal 类型的精确计算和舍入处理示例
|
3 months ago |
韩天峰
|
5129bab900
|
test(aot): 添加动态调用命名参数功能测试
- 实现了动态实例化与命名参数的测试用例
- 验证动态方法调用与参数展开的功能
- 测试控制器类的构造函数命名参数传递
- 验证动态方法调用返回结果的正确性
- 添加了多场景动态调用的预期输出验证
|
3 months ago |
韩天峰
|
011cb1ed8c
|
test(aot): 添加大整数、大浮点数、十进制数和流类型的容器测试
- 添加 std-bigfloat 类型的 vector 容器功能测试
- 添加 std-bigint 类型的 vector、map、array 和 foreach 功能测试
- 添加 std-decimal 类型的 vector 容器功能测试
- 添加 std-stream 类型的 vector 容器功能测试
- 实现容器元素类型转换逻辑支持大数值类型
- 修复容器声明中的元素类型转换问题
- 添加新的原生类型映射支持 bigint、bigfloat、decimal 和 stream 类型
|
3 months ago |
韩天峰
|
11acfdf10f
|
refactor(aot): 移除UnsafePtr类型支持并优化std容器实现
- 移除UnsafePtr类型声明及相关参数标记功能
- 修改std容器变量访问方式,统一使用_ref后缀引用
- 更新unsafe_cast函数参数验证逻辑,移除UnsafePtr参数检查
- 重构std容器在C++代码中的声明和初始化方式
- 删除相关测试用例及单元测试中的UnsafePtr验证逻辑
- 统一std容器赋值、遍历、删除操作的引用访问模式
|
3 months ago |
韩天峰
|
000b6a221d
|
fix(tests): 修正测试文件中的路径引用
- 修正 empty-test.phpt 中的静态属性测试文件路径
- 修正 isset-test.phpt 中的静态属性测试文件路径
- 修正 magic-constants.phpt 中 __DIR__ 魔术常量的期望输出
- 修正 ref-call-arg.phpt 中 zip 文件的路径引用
- 修正 static_class_property_read_write.phpt 中的测试文件路径
- 修正 universal_method_expr.phpt 中 Assert.php 的引入路径
|
3 months ago |
韩天峰
|
0043fc78f8
|
feat(php): 添加原生类和接口检查功能
- 新增 isNativeClass 方法用于检查是否为原生类
- 新增 isInterface 方法用于检查是否为接口
- 重构 addObject 方法中的对象验证逻辑
- 修改 TypedObject 使用条件判断逻辑
- 添加内部类测试用例
|
3 months ago |
韩天峰
|
71627fd920
|
fix(compiler): 修复抽象类和接口的类型处理逻辑
- 移除对抽象类和接口参数类型的限制检查
- 简化对象类型推断逻辑,统一处理所有类类型
- 更新 addObject 方法,阻止为抽象类、接口、内部类创建实例
- 修正参数类型处理中的重复对象添加问题
|
3 months ago |
韩天峰
|
ee81d116ef
|
refactor(Php): 将静态常量引用从父类改为当前类
|
3 months ago |
韩天峰
|
bf4c5a7852
|
fix(generator): 解决常量值格式化和命名空间解析问题
- 添加 formatConstValue 函数统一处理常量值格式化
- 修复类常量引用时的字符串转义问题
- 优化 getClassConstValue 方法的命名空间解析逻辑
- 添加 getNamespaceOfClass 工具方法获取类的命名空间
- 更新默认参数处理中的常量值获取方式
- 添加新的测试用例验证默认数组属性功能
|
3 months ago |
韩天峰
|
17fcb16aec
|
fix(php): 修复受保护方法访问检查和字符串转义问题
- 在 CompilerBase.php 中添加 classDef 检查以避免空指针错误
- 在 gen_stub.php 中对字符串表达式进行转义处理
- 将 Utils.php 中的 genCharPtr 和 escapeString 方法设为公共方法
- 添加测试用例验证默认数组属性功能
|
3 months ago |
韩天峰
|
ce7d254709
|
fix(compiler): 修复trait中类常量访问的命名空间解析问题
- 为getNamespacedClassName方法添加可选的当前命名空间参数
- 在gen_stub.php中传递当前类信息到getClassConstValue调用
- 在Translator.php中使用当前类的命名空间信息进行类常量查找
- 在类注册完成后清理ClassInfo::$currentClass避免污染
- 修复self引用时的默认值解析逻辑
|
3 months ago |
韩天峰
|
ec5f393a27
|
fix(php): 将数组类常量更新写入到 ZendVM 中
|
3 months ago |
韩天峰
|
95b1c89053
|
BitInt 支持位运算操作符
|
3 months ago |
韩天峰
|
8c8daa47e5
|
feat(generator): 添加 Windows 资源文件生成器
- 实现 ResourceFileGenerator 类用于生成 .rc 资源文件
- 支持图标文件嵌入功能,可指定 icon 配置项
- 实现版本信息生成功能,支持文件版本、产品版本等属性
- 提供配置示例文档,包括公司名称、版权等元数据
- 实现版本号格式化功能,支持多种输入格式转换
- 添加 UTF-8 编码支持,解决中文乱码问题
- 实现资源头文件生成,便于 C++ 代码引用资源 ID
|
3 months ago |
韩天峰
|
826e62e7b4
|
feat(php): 添加 Windows 平台的大数运算库支持
- 为 Windows 平台添加 gmp.lib、gmpxx.lib、mpfr.lib 库依赖
- 为 Windows 平台添加 libmpdec.lib、libmpdec++.lib 库依赖
- 统一跨平台的大数运算库配置逻辑
- 移除平台判断条件,简化库文件加载代码
|
3 months ago |
韩天峰
|
775328a217
|
chore(build): 添加 Python 缓存目录到忽略列表
- 在 .gitignore 中添加 __pycache__ 目录
- 防止 Python 编译缓存文件被提交到仓库
|
3 months ago |
韩天峰
|
a4d5d86905
|
test(native_types): 添加 Decimal 和 BigInt 类型的测试用例
- 添加 Decimal 类型的 ceil、floor、round、sqrt、toFloat 方法测试
- 添加 BigInt 类型的 divmod、gcd、powmod、sqrt 方法测试
- 添加 Decimal 和 BigInt 的 pow 和 divmod 运算测试
- 添加 BigInt 的 toInt 和 toFloat 类型转换测试
- 验证各种数学运算的边界情况和负数处理
- 确保所有测试用例都通过严格类型声明验证
|
3 months ago |
韩天峰
|
706f4cc9ab
|
对 phpt 测试文件进行分类 [2]
|
3 months ago |
韩天峰
|
b1284be533
|
对 phpt 测试文件进行分类
|
3 months ago |
韩天峰
|
144b60a3e3
|
feat(compiler): 支持 bigint_types 和 decimal_types 声明指令
- 添加了 bigint_types 和 decimal_types 的 use 指令支持
- 实现了整数字面量自动转换为 BigInt 类型的功能
- 实现了浮点数字面量自动转换为 Decimal 类型的功能
- 添加了新的数学运算方法如 divmod、powmod、sqrt 等
- 更新了类型转换逻辑以支持大数运算
- 添加了相应的测试用例验证功能正确性
- 修改了编译器内部类型检测和转换机制
|
3 months ago |
韩天峰
|
6b5e8ad2e0
|
feat(universal_method): 支持通过反射调用PHP内部函数作为扩展方法
- 移除原有的字符串append方法实现
- 新增universal_method_internal.phpt测试文件验证内部函数扩展方法功能
- 修改findExtensionMethod方法支持先查找用户定义函数再回退到PHP内部函数
- 添加buildInternalExtensionMethod方法构建内部函数扩展方法定义
- 实现validateExtensionFirstParam和validateInternalExtensionFirstParam方法验证参数类型
- 更新测试用例移除已删除的append方法相关测试
|
3 months ago |
韩天峰
|
1476e5a4eb
|
fix(universal-method): 修复扩展方法链式调用的返回类型推断
- 在内置方法查找后添加扩展方法的返回类型检查
- 重构 findExtensionMethod 调用逻辑以支持链式调用场景
- 使用函数定义的返回类型而非默认的 TYPE_VAR
- 移除冗余的命名空间函数查找逻辑
|
3 months ago |
韩天峰
|
eb31e3584b
|
docs: 添加 AOT 编译器高精度类型和通用方法使用教程
- 新增 HIGH_PRECISION_TYPES.md 文档,详细介绍 BigInt、Decimal 和 BigFloat 三种高精度数值类型
- 新增 UNIVERSAL_METHODS.md 文档,全面介绍通用方法系统的使用方式和各类型支持的方法
- 包含高精度类型的构造、运算、转换等完整使用指南
- 提供通用方法的设计原理、Handler 类型和各类原生类型的方法详解
- 添加完整的使用示例和最佳实践说明
|
3 months ago |
韩天峰
|
69e4386454
|
test(compiler): 添加大数类型运算测试和自增自减操作限制
- 添加 Decimal 算术运算测试用例
- 添加 BigInt 复合赋值运算测试用例
- 添加 Decimal 复合赋值运算测试用例
- 添加 Decimal 比较和转换测试用例
- 添加 BigInt 二元运算符测试用例
- 添加 Decimal 运算符重载测试用例
- 添加 Decimal 一元负号测试用例
- 在编译器中实现对 BigInt、Decimal 和 BigFloat 类型的自增自减操作限制
- 添加 PHPUnit 测试验证自增自减操作错误提示
- 为 BigInt 和 Decimal 类型禁用 ++ 和 -- 操作符
|
3 months ago |
韩天峰
|
a459a8bd95
|
feat(php): 添加对 BigInt Decimal BigFloat 复合赋值运算的支持
- 实现了 Big* 类型的复合赋值操作扩展为静态方法调用
- 添加了 parseBigAssignOp 和 parseBigAssignOpExpr 方法处理大数值类型运算
- 针对 BigInt/BigDecimal/BigFloat 不可变特性生成 Type::add($v, $x) 形式代码
- 添加了对 +、-、*、/、% 等运算符的支持映射
- 设置了相应的 uses 标志位跟踪大数值类型使用情况
- 修复了 ZendVM add_function 无法处理大数值类型的兼容性问题
|
3 months ago |
韩天峰
|
743c170e39
|
docs(native_types): 完善文档中高精度数值类型使用指南
- 添加 BigInt、Decimal、BigFloat 三种高精度数值类型的详细介绍
- 补充高精度数值类型的 C++ 底层库依赖和关键头文件说明
- 详细说明高精度数值类型的声明与构造方式
- 完善算术运算符和比较运算符的使用示例
- 添加通用方法表格对比 BigInt、Decimal、BigFloat 的方法差异
- 补充类型转换规则和跨类型转换限制说明
- 添加 C++ API 参考和超长字面量自动识别机制说明
- 增加使用建议章节区分原生类型与 ZVAL 的适用场景
|
3 months ago |
韩天峰
|
f33641aead
|
docs(native_types): 更新原生类型文档并完善类型提升规则说明
- 将标题从"AOT编译器原生类型支持说明"改为"AOT编译器类型系统说明"
- 新增高精度数值类型支持(bigInteger、decimal、bigFloat)
- 更新类型映射表,增加底层实现列和新类型条目
- 完善二元运算类型提升规则文档,包括Var主导规则、Float优先规则、大数类型精度提升规则
- 添加类型提升完整矩阵表格便于查阅
- 更新复合赋值运算符类型转换说明
- 将最后更新日期更新至2026年5月26日
|
3 months ago |
韩天峰
|
ee30acc94e
|
feat(compiler): 添加大整数、小数和大浮点数类型支持
- 在编译器基础类中添加 BigInt、Decimal 和 BigFloat 类型常量
- 实现大数字字面量自动识别逻辑,包括超过 64 位整数范围的整数字面量
- 实现高精度小数字面量识别,对 16 位以上有效数字的浮点数字面量进行特殊处理
- 添加算术运算符重载支持,实现 BigInt、Decimal、BigFloat 的 +、-、*、/、% 等操作
- 添加比较运算符支持,实现 <、>、<=、>=、==、!=、<=> 运算符的正确处理
- 实现不同数值类型间的转换逻辑,确保精度安全
- 添加幂运算符 (**) 对 BigInt 类型的支持
- 添加一元负号运算符对大数字类型的支持
- 实现类型检测逻辑,准确识别各种大数字类型
- 添加对 std::bigInt、std::decimal、std::bigFloat 构造函数的支持
- 添加必要的第三方库依赖,包括 GMP、libmpdec 和 MPFR 库
- 新增多组测试用例验证大数字类型的功能正确性
|
3 months ago |
韩天峰
|
8a9a8ce138
|
feat(cli): 添加 AST 语法树导出工具和大整数示例
- 新增 bin/dump-ast.php 脚本用于导出 PHP 文件的 AST 结构
- 实现了完整的 AST 节点递归转换和美化打印功能
- 添加了 examples/bigint/bigint.php 大整数测试示例
- 集成了 PhpParser 库进行语法树解析
- 提供了命令行参数验证和错误处理机制
- 实现了 AST 节点类型的智能识别和信息提取
|
3 months ago |
韩天峰
|
dd940db5d9
|
feat(php): 添加数学函数和数组排序方法支持
- 添加 abs、ceil、floor、round 等数学函数支持
- 添加 sqrt、pow、log、exp 等数学运算函数
- 添加三角函数 sin、cos、tan 及其反函数
- 添加角度转换函数 deg2rad、rad2deg
- 添加最值函数 max、min
- 添加数组排序方法 sortDesc、keySort、valueSort
- 添加数组组合函数 combine 和 fillKeys
- 为整型和浮点型分别配置数学函数映射
|
3 months ago |
韩天峰
|
4076d2f4e4
|
test(stream): 添加流扩展方法支持测试
- 新增 stream_read_chunk 扩展方法测试用例
- 新增 stream_count_lines 扩展方法测试用例
- 验证 readChunk() 方法功能正确性
- 验证 countLines() 方法功能正确性
- 包含临时文件创建和清理测试流程
|
3 months ago |
韩天峰
|
1b6884a983
|
fix(aot): 修复流资源类型处理和常量文件移除问题
- 更新测试用例中的错误消息断言以匹配正确的流资源错误描述
- 在编译器基础类中添加 stream 类型定义并将其映射为 var 类型进行处理
- 修复函数参数和返回值中 stream 类型的处理逻辑
- 移除不再需要的 constants.php 配置文件及其全部内容
|
3 months ago |
韩天峰
|
c04778cc51
|
refactor(php): 优化编译器基础类和通用方法调用实现
- 在CompilerBase.php中添加占位符表达式检查逻辑,统一返回TYPE_OBJECT类型
- 更新UniversalMethodCall.php中的方法处理器配置,将多个方法从php_fn改为direct_method
- 为genUniversalDirectMethod方法添加intCastArgs参数支持
- 实现genUniversalCppFn方法用于C++函数调用
- 为genUniversalPhpFn方法添加constArgs参数和接收器位置控制
- 重构字符串方法配置,移除toString方法和isTyped数组方法
- 更新测试文件,移除toString方法相关测试用例
- 改进代码生成逻辑,支持参数类型转换和常量参数插入
|
3 months ago |
韩天峰
|
5c86bf39f1
|
feat(examples): 添加 PHP 反射 API 示例程序
- 实现了打印内置函数参数和返回值类型信息的功能
- 添加了打印用户自定义函数信息的支持
- 实现了打印类方法参数和返回值类型信息的功能
- 添加了打印闭包(Closure)信息的支持
- 提供了完整的反射细节打印功能
- 支持联合类型、交集类型等复杂类型格式化
- 包含了 tentative return type 的
|
3 months ago |
韩天峰
|
12d44084ec
|
feat(aot): 添加对表达式结果的通用方法调用支持
- 实现了函数调用、方法调用、静态调用和属性获取后的通用方法调用
- 新增 stream_cast 伪函数用于流类型转换测试
- 支持数组方法链式调用和可变操作
- 添加表达式上下文中的流转换功能
- 扩展了对内部函数反射返回类型的处理
- 优化了数组操作的返回值一致性
- 完善了通用方法调用的错误处理机制
|
3 months ago |
韩天峰
|
6309346c9a
|
feat(core): 通用方法实现,纯静态,零成本抽象
|
3 months ago |
韩天峰
|
0c77bc53e4
|
feat(core): 添加断言类 Assert 库实现
- 实现了基础断言功能,包括类型验证、值比较等核心方法
- 添加了字符串、数字、数组、对象等多种数据类型的断言支持
- 集成了IP地址、文件路径、类存在性等特殊场景的验证方法
- 提供了批量验证和条件验证的便捷方法
- 实现了错误消息自定义和异常抛出控制机制
|
3 months ago |
韩天峰
|
f331591b65
|
test(assign): 添加变量重新赋值类型检查的测试用例
- 更新了现有测试用例的消息格式以包含具体的变量和类型信息
- 添加了对象类型到各种基本类型的重新赋值测试用例(int、float、bool、str、array)
- 添加了基本类型到对象类型的重新赋值测试用例(int、float、bool、array)
- 添加了字符串数组到各种基本类型的重新赋值测试用例(int、float、bool)
- 添加了标量类型到数组类型的重新赋值测试用例(int、float、bool、str)
- 新增了多个PHP代码文件用于测试不同类型的重新赋值场景
- 重命名了原有的字符串到对象重新赋值测试文件
|
3 months ago |
韩天峰
|
5d150a2b02
|
refactor(php): 优化变量赋值类型检查逻辑
- 移除数组类型重分配检查的特殊处理
- 添加全局翻译器变量用于测试环境
- 引入通用变量赋值表达式检查方法
- 改进错误消息中的变量名显示格式
- 统一变量类型转换错误处理流程
|
3 months ago |