韩天峰
|
5fa7b61cc8
|
chore(deps): 更新 swoole/phpx 依赖版本
- 将 swoole/phpx 从 ~2.3.0 更新到 ~2.3.1 版本
|
3 months ago |
韩天峰
|
28d1432664
|
refactor(type): 移除不必要的类实例断言检查
- 删除了 MapType 类中冗余的 get_class 断言验证
- 简化了类型比较逻辑,提升代码简洁性
- 更新版本号从 1055 到 1057
|
3 months ago |
韩天峰
|
1ea7ec0764
|
feat(compiler): 添加性能分析和 objval 函数支持
- 在 Clang、Gcc 和 Msvc 编译后端中添加 PROF_OUTPUT_FILE 宏定义支持
- 实现编译器性能分析模式,通过 --profile 参数启用并自动链接 -lprofiler 库
- 添加 .prof 文件分析功能,支持 php bin/compiler.php app.prof 格式调用 pprof 工具
- 实现 objval() 函数的 AOT 编译支持,用于对象类型转换
- 更新编译器缓存逻辑,启用性能分析时强制重新编译
- 添加 Linux 平台限制检查,非 Linux 系统使用 --profile 参数时显示错误提示
- 创建 objval 函数的单元测试用例
|
3 months ago |
韩天峰
|
33ee85c122
|
refactor(Php): 更新数值类型转换函数命名
- 将 php::newBigInt() 替换为 php::toBigInt()
- 将 php::newDecimal() 替换为 php::toDecimal()
- 将 php::newBigFloat() 替换为 php::toBigFloat()
- 移除不再使用的 mpdec++ 和 mpdec 库依赖
|
3 months ago |
韩天峰
|
04a56a7762
|
fix(stub): 修复异常处理并支持属性默认值中的new操作
- 在RuntimeException中添加堆栈跟踪信息输出
- 新增对属性默认值为new表达式的处理逻辑
- 添加测试用例验证nullable类型属性的处理
- 支持构造函数参数中使用new操作符作为默认值
|
3 months ago |
韩天峰
|
c77d3ca273
|
chore(version): 更新版本号
- 将版本号从 1054 更新为 1055
|
3 months ago |
韩天峰
|
b42ba105a2
|
docs(readme): 更新依赖库安装说明
- 添加 GMP、MPFR、libmpdec 高精度数学库依赖说明
- 提供 Ubuntu/Debian、RHEL/CentOS/Fedora、Arch Linux 系统的安装命令
- 补充各库的功能说明:GMP 用于 BigInt,MPFR 用于 BigFloat,libmpdec 用于 Decimal
|
3 months ago |
韩天峰
|
f30a29a048
|
fix(php): 修复文件编码检查和方法调用问题
- 添加了UTF-8编码检查以确保文件正确读取
- 更新了composer.json中的swoole/phpx依赖版本
- 修复了Translator中类名获取的方法调用
- 移除了UniversalMethodCall中不需要的返回类型参数
|
3 months ago |
韩天峰
|
64e9d76770
|
test(assign): 添加严格类型声明为0的测试用例
- 新增 testStrictTypesZeroNotAllowed 测试方法
- 验证 declare(strict_types=0) 不被允许的情况
- 添加对应的测试代码文件 declare-strict-types-zero.php
- 确保只有 strict_types=1 被支持的功能测试
|
3 months ago |
韩天峰
|
31bd1ae256
|
fix(php): 修复严格类型声明和类型检查逻辑
- 移除未使用的 strictTypes 属性
- 在 declare(strict_types=0) 时抛出错误,只支持 strict_types=1
- 简化类型赋值检查逻辑,统一类型相同时可赋值
- 移除宽松类型转换警告相关代码
|
3 months ago |
韩天峰
|
92a4ecd24c
|
refactor(build): 更新项目配置文件中的编译器路径
- 将 compiler-build.php 替换为 compiler.php
- 调整了项目构建配置以使用新的编译器文件路径
|
3 months ago |
韩天峰
|
775972cc8c
|
refactor(php): 移除未使用的常量和方法
- 移除了未使用的 MAX_BYTES_IN_STACK 常量
- 移除了未使用的 addCompilationOption 方法
- 移除了未使用的 TYPE_SEARCH_ORDER 常量
- 清理了编译器基类中的冗余代码
|
3 months ago |
韩天峰
|
b04ee5e8b2
|
refactor(Php): 重构编译器中的类名解析和参数构建逻辑
- 将 toObject() 方法中的类名解析逻辑提取为独立的 resolveClassNameArg() 方法
- 简化了 UniversalMethodCall 中的参数构建过程
- 提取通用的 buildReceiverArgs() 方法来处理接收者参数构建
- 移除了重复的参数处理代码,提高了代码复用性
- 改进了错误处理的一致性
|
3 months ago |
韩天峰
|
fc165fea27
|
refactor(Php): 提取 std 容器解析的公共逻辑
- 将 std::map 和 std::unordered_map 的重复解析逻辑提取到 parseStdMapBase 方法
- 使用参数化的方式处理不同类型的容器解析需求
- 消除了两个方法中的代码重复
- 提高了代码的可维护性和一致性
- 保持了原有的功能行为不变
|
3 months ago |
韩天峰
|
bbbb3c948e
|
refactor(php): 重构表达式字符串转换逻辑
- 将复杂的条件判断结构替换为统一的方法调用
- 提取类型检测和字符串转换逻辑到独立方法
- 简化代码结构并提高可读性
- 减少重复代码提升维护性
|
3 months ago |
韩天峰
|
a510801d24
|
refactor(php): 重构二进制运算符相等性比较逻辑
- 移除重复的类型检测和转换代码
- 引入 genBigNumericCmp 方法统一处理大数值比较
- 简化 Equal 和 NotEqual 运算符的实现
- 优化 Spaceship 运算符的比较逻辑
- 统一字符串转换方法的调用方式
|
3 months ago |
韩天峰
|
215c077291
|
refactor(php): 优化类名解析逻辑并添加objval函数支持
- 提取类名参数解析逻辑到独立的resolveClassNameArg方法
- 简化toObject方法中的类名解析实现
- 添加对objval函数调用的类名解析支持
- 在polyfills中定义objval函数以支持新的解析逻辑
|
3 months ago |
韩天峰
|
26a538680f
|
refactor(php): 将 stream_cast 函数替换为 toStream 方法
- 移除 stream_cast 全局函数实现
- 将 stream_cast($stream) 调用转换为 $stream->toStream() 方法调用
- 更新编译器中的流类型识别逻辑,移除对 stream_cast 的特殊处理
- 修改标准容器解析器中的 unsafePtr 为 boxExpr 属性
- 更新相关测试文件中的调用方式和断言
- 替换不安全指针转换为标准容器转换方法
|
3 months ago |
韩天峰
|
8deb99c372
|
test(aot): 添加对象属性toArray方法测试用例
- 测试toArray()方法调度功能
- 验证(array)强制转换调用toArray()而不是读取属性表
- 添加User类包含toArray方法的测试
- 添加PlainUser类无toArray方法的对照测试
- 验证有toArray方法时强制转换调用该方法
- 验证无toArray方法时回退到属性表读取
|
3 months ago |
韩天峰
|
a4ac86524c
|
refactor(compiler): 优化关键字方法分派逻辑
- 简化了关键字方法和扩展方法的检测流程
- 统一了接收器类型的获取方式
- 提取了重复的空值检查逻辑
- 改进了代码结构和可读性
- 为关键字扩展方法添加了测试用例
|
3 months ago |
韩天峰
|
7a164aa8ee
|
refactor(php): 重构关键词方法查找机制以支持扩展方法
- 将 TO_METHOD_TYPE_MAP 重命名为 KEYWORD_METHOD_MAP
- 实现统一的关键词方法查找函数 findKeywordMethod()
- 添加对 __ 扩展方法的支持,允许作为 $receiver->camelCase() 调用
- 在方法分派前先检查关键词扩展方法
- 为关键词扩展方法实现蛇形命名转换和参数验证逻辑
- 更新现有方法调用以使用新的关键词方法映射常量
|
3 months ago |
韩天峰
|
1bb0324605
|
feat(compiler): 支持字符串到大数类型的转换
- 添加字符串到Decimal类型的转换逻辑
- 添加字符串到BigInt类型的转换支持
- 添加字符串到BigFloat类型的转换支持
- 为字符串字面量提供直接转换优化
- 添加测试用例验证链式调用场景
|
3 months ago |
韩天峰
|
52fcc86660
|
feat(php): 添加对void类型方法调用的检查
- 在CompilerBase.php中检测接收器类型为void时抛出致命错误
- 为变量表达式方法调用添加void类型检查
- 为命名方法调用添加void类型检查
- 在单元测试中添加void方法调用测试用例
- 创建void方法调用测试代码文件
|
3 months ago |
韩天峰
|
057e25a950
|
feat(type): 添加对 stream 类型的支持
- 在类型解析中添加 stream 伪类型的识别和处理
- 将 stream 类型视为与 resource 相同的混合类型处理
- 更新类型映射表以支持 stream 类型到 ZEND_STR_MIXED 的转换
- 修改条件判断逻辑以包含 stream 类型的处理分支
|
3 months ago |
韩天峰
|
32ac23630a
|
fix(type): 修复stream和box伪类型的类型转换处理
- 移除CompilerBase中对stream/box类型的硬编码转换逻辑
- 在Preprocessor中添加stream/box到var类型的运行时转换
- 修改Translator中参数类型的C++代码生成逻辑
- 更新UniversalMethodCall中stream/box类型的参数匹配规则
- 添加测试用例验证数组元素链式调用的类型转换功能
|
3 months ago |
韩天峰
|
3f9c76df5d
|
refactor(compiler): 替换 std::unsafe_cast 为对象方法调用并优化类型转换
- 将测试文件中的 std::unsafe_cast 调用替换为对应的 toStd* 方法
- 移除 std::unsafe_cast 函数实现,改为使用 $source->toStdMap 等方法
- 更新错误消息输出,移除函数名前缀
- 添加 TO_METHOD_TYPE_MAP 常量定义类型转换方法映射
- 修改变量赋值检查逻辑,支持新的 to* 转换方法
- 移除对 objval 函数的支持,统一使用 toObject 方法
- 新增 parseToStdAssign 方法处理标准容器转换分配
- 添加 genToObjectCall 和 genToConvertCall 代码生成方法
- 重构 UniversalMethodCall 类,移除重复的转换方法定义
- 优化类型检测逻辑,支持新的转换方法类型推断
|
3 months ago |
韩天峰
|
a4d28fbe6b
|
refactor(tests): 替换 objval 函数调用为 toObject 方法
- 移除了全局 objval 函数实现
- 将所有测试文件中的 objval($obj, Class::class) 替换为 $obj->toObject(Class::class)
- 更新了 std-vector、std-map、std-unordered-map、std-array 和 type_decl 测试
- 添加了新的 var_convert 链式调用测试用例
- 统一了对象类型转换的调用方式
|
3 months ago |
韩天峰
|
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 |