韩天峰
|
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 |
韩天峰
|
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 |
韩天峰
|
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 |
韩天峰
|
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 |
韩天峰
|
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 |
韩天峰
|
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 |
韩天峰
|
6309346c9a
|
feat(core): 通用方法实现,纯静态,零成本抽象
|
3 months ago |
韩天峰
|
0c77bc53e4
|
feat(core): 添加断言类 Assert 库实现
- 实现了基础断言功能,包括类型验证、值比较等核心方法
- 添加了字符串、数字、数组、对象等多种数据类型的断言支持
- 集成了IP地址、文件路径、类存在性等特殊场景的验证方法
- 提供了批量验证和条件验证的便捷方法
- 实现了错误消息自定义和异常抛出控制机制
|
3 months ago |
韩天峰
|
5d150a2b02
|
refactor(php): 优化变量赋值类型检查逻辑
- 移除数组类型重分配检查的特殊处理
- 添加全局翻译器变量用于测试环境
- 引入通用变量赋值表达式检查方法
- 改进错误消息中的变量名显示格式
- 统一变量类型转换错误处理流程
|
3 months ago |
韩天峰
|
619687d563
|
fix(php): 修复PHP编译器中的类型映射和常量处理问题
- 添加double类型到浮点数类型的映射
- 优化变量首次赋值时的类型确定逻辑,支持函数级作用域的变量处理
- 直接返回基本类型常量而不是通过getNativeType方法
- 添加内部常量的类型推断支持
- 简化布尔值和浮点数常量的类型返回逻辑
|
3 months ago |
韩天峰
|
928f9050d6
|
feat(php): 添加对PHP常量和分组use语句的支持
- 新增useConstants数组用于存储常量导入映射
- 实现常量名称解析和命名空间查找逻辑
- 支持通过别名导入常量的功能
- 添加对分组use语句的解析处理
- 完善匿名类继承接口的全限定名称转换
- 优化函数调用时的参数信息获取方式
- 修复方法调用中本地函数定义的引用方式
|
3 months ago |
韩天峰
|
b11a6630fe
|
添加注释
|
3 months ago |
韩天峰
|
81272cf7fb
|
refactor(php): 将内置函数调用改为符号表调用方式
- 添加 funcSymbols 数组存储函数符号
- 修改 shell_exec 调用为通过符号表调用
- 修改 define 函数调用为通过符号表调用
- 在 prepare 方法中初始化 shell_exec 和 define 的函数指针
|
3 months ago |
韩天峰
|
6c74f1c8b5
|
refactor(php): 重构编译器常量和构建模式配置
- 移除多余的类型常量间的空行,统一代码风格
- 添加构建模式相关常量 BUILD_MODE_BIN、BUILD_MODE_EXT、ENTRY_FUNCTION 等
- 将硬编码的字符串替换为对应的常量引用
- 移除不再使用的 phpx_func.h 头文件引用
- 重命名 cxxflags 为 cxxFlags 以符合命名规范
- 将构建模式判断逻辑封装为 isBuildModeBin 和 isBuildModeExt 方法
- 更新配置文件中的默认值为常量引用
- 移除不再需要的 trait 解析方法
|
3 months ago |
韩天峰
|
e8e0a2e95c
|
refactor: 提取 parseBlockStmts 方法统一处理缩进
|
3 months ago |
韩天峰
|
af758ef130
|
refactor: 按目标名称区分函数与全局变量声明头文件
|
3 months ago |
韩天峰
|
33fe40453b
|
feat(php): 添加左移赋值操作符支持
- 实现了 Expr_AssignOp_ShiftLeft 节点解析
- 添加了 parseAssignOpShiftLeft 方法处理左移赋值操作
|
3 months ago |
韩天峰
|
28b6c6e726
|
feat(debug): 添加调试信息支持以改进异常回溯功能
- 实现函数级别的调试信息生成,包括类方法和全局函数
- 添加命名空间前缀到调试函数名称中
- 集成 php::pushDebugFrame 和 php::popDebugFrame 用于运行时调试栈管理
- 添加调试信息启用和禁用机制
- 为嵌套函数调用添加异常传播测试用例
- 创建调试跟踪示例文件以验证功能实现
|
3 months ago |
韩天峰
|
b2d52d5d80
|
feat(php): 更新翻译器版本到0.2.0
|
3 months ago |
韩天峰
|
fb458405b8
|
允许类方法的默认参数使用类常量
|
3 months ago |
韩天峰
|
0c2a25ea52
|
feat(compiler): 添加对多种原生源文件格式的编译支持
- 实现了对 C、汇编、Objective-C、Objective-C++ 等源文件的识别和分类
- 为 Clang、GCC、MSVC 编译器后端添加了 buildNativeCompileCommand 方法
- 在编译命令中添加 -x 参数指定源文件语言类型
- 重构了文件扫描逻辑,统一处理多种原生源文件格式
- 为不同语言类型的源文件生成相应的编译选项配置
- 更新了翻译器逻辑,根据文件扩展名自动检测并选择合适的编译方法
|
3 months ago |
韩天峰
|
519ad7b292
|
fix(aot): 修复变量类型检查逻辑并更新测试用例
- 移除多余的变量类型验证检查逻辑
- 更新测试用例中的类型注解以匹配实际实现
- 修正 EsmtpTransport 类型在配置方法中的使用
|
4 months ago |
韩天峰
|
ea462010d1
|
feat(compiler): 添加标准容器foreach循环支持和删除元素保护
- 实现std::map和std::unordered_map的foreach循环功能
- 实现std::array和std::vector的foreach循环功能
- 添加在foreach循环中删除容器元素的保护机制
- 添加标准容器类型的变量检查和类型验证
- 更新标准容器声明语法以支持键值类型参数
- 添加标准容器键值类型推断功能
|
4 months ago |
韩天峰
|
feef37d28f
|
fix(php): 解决数组取消设置时空维度的错误处理
- 在数组维度获取为空时添加致命错误提示
- 添加对 unset($arr[]) 语法的错误检测
- 新增对应的单元测试验证空数组维度取消设置的错误情况
- 创建测试文件验证数组取消设置的边界情况
|
4 months ago |
韩天峰
|
31fcc94c2e
|
refactor(php): 优化编译器优化级别映射逻辑
- 统一使用标准的优化级别映射数组替代嵌套三元运算符
- 修复优化级别1的映射错误,从/O2更正为/O1
- 提高代码可读性和维护性
- 确保所有优化级别配置的一致性
- 移除重复的映射定义代码
|
4 months ago |
韩天峰
|
fa2cb45df5
|
test(aot): 添加标准容器复制赋值功能测试
- 新增 std map 相同类型复制测试用例
- 新增 std unordered_map 相同类型复制测试用例
- 新增 std array 嵌套相同类型复制测试用例
- 新增 std vector 相同类型复制测试用例
- 实现标准容器复制赋值语法解析功能
- 添加嵌套数组访问层级检查机制
- 完善类型匹配验证逻辑
|
4 months ago |
韩天峰
|
4411216354
|
refactor(aot): 简化 unsafe_ptr 使用并改进错误处理
- 移除手动创建 unsafe_ptr 的调用,直接传递容器变量
- 添加对 UnsafePtr 参数重新赋值的错误检查
- 验证 UnsafePtr 参数必须是标准容器变量
- 更新 unsafe_cast 错误消息以反映参数要求
- 移除不再需要的 unsafe_ptr 解析方法
- 添加新的测试用例验证各种错误场景
|
4 months ago |
韩天峰
|
5d1e8d893c
|
refactor(aot): 优化 unsafe_cast 类型转换实现
- 将 std::unsafe_cast 的类型检查逻辑重构为统一的模板函数
- 修改异常类型从 RuntimeException 为 TypeError
- 更新编译器代码生成以使用新的类型转换函数
- 添加对 std::map 和 std::unordered_map 的类型转换支持
- 创建新的测试用例验证各种容器类型的 unsafe_cast 行为
- 修正现有测试用例中的异常类型断言
|
4 months ago |
韩天峰
|
7f4dee40c0
|
fix(aot): 解决std容器unsafe_cast类型检查问题
- 添加了stdTypeMap用于存储标准类型映射关系
- 实现了registerStdType方法用于注册标准类型ID
- 为std数组、向量和映射容器添加了类型ID分配逻辑
- 在unsafe_cast操作中增加了类型ID验证机制
- 添加了类型不匹配时的异常抛出功能
- 修复了self::class和parent::class的命名空间解析问题
- 更新了unsafe_ptr创建时的类型ID传递逻辑
- 添加了多个测试用例验证类型不匹配场景
|
4 months ago |
韩天峰
|
79bc9d4e69
|
feat(aot): 添加对UnsafePtr类型和相关函数的支持
- 在ArgInfo类中添加unsafePtr属性
- 添加UnsafePtr类型到编译器类型映射
- 实现std::unsafe_ptr()和std::unsafe_cast()函数的解析和处理逻辑
- 添加对UnsafePtr类型的变量跟踪和验证机制
- 支持通过unsafe_cast进行标准容器的不安全转换
- 添加相应的单元测试验证功能正确性
|
4 months ago |
韩天峰
|
ee240aed25
|
test(php): 添加标准容器静态类匹配测试用例
- 添加 testStdContainerStaticClassMismatch 测试方法验证对象分配错误
- 更新 StdContainerParser 中的 fatal error 消息格式保持一致性
|
4 months ago |
韩天峰
|
872c98fc28
|
fix(std-container): 修复标准容器类值类型的精确检查逻辑
- 将 std::vector 的类值类型精确匹配测试添加到测试套件
- 修复 std::map 错误消息格式以显示正确的参数对象类型验证
- 添加 std::unordered_map 的类值类型精确匹配测试用例
- 添加 std::array 的类值类型精确匹配测试用例
- 简化 StdContainerParser 中的对象转换逻辑,使用统一的 toObject 方法进行类型检查和转换
|
4 months ago |
韩天峰
|
73bf28667d
|
feat(compiler): 添加对标准容器类型的完整支持
- 实现了标准数组维度获取的类型检测和解析功能
- 扩展了类型转换系统以支持字符串、数组和对象类型
- 在polyfills.php中添加了新的类型常量和容器函数定义
- 重构了标准容器解析器以支持复杂的值类型验证
- 实现了标准容器赋值操作中的类型安全检查
- 添加了类值类型的支持和验证机制
- 完善了标准容器的类型信息解析和存储功能
|
4 months ago |
韩天峰
|
22966d0553
|
feat(php): 扩展标准容器支持功能
- 将StdArrayParser重命名为StdContainerParser以支持更多容器类型
- 添加对std::vector、std::map和std::unordered_map的支持
- 新增TYPE_STD_VECTOR、TYPE_STD_MAP和TYPE_STD_UNORDERED_MAP常量定义
- 实现std容器表达式解析和类型检测功能
- 扩展函数上下文中的容器存储结构
- 添加polyfill类以支持复杂类型定义
- 实现容器维度获取、赋值操作和类型转换功能
- 支持容器的偏移设置和键值类型转换功能
|
4 months ago |
韩天峰
|
58a4702ed2
|
perf(php): 优化大数组内存分配策略
- 引入 MAX_BYTES_IN_STACK 常量控制栈上数组大小限制
- 实现超过 65536 字节的数组自动转到堆上分配
- 在 StdArrayParser 中计算数组总字节数并存储到 bytes 属性
- 根据数组大小选择栈上初始化或堆上 unique_ptr 分配方式
- 避免大数组在栈上分配导致的内存溢出问题
|
4 months ago |
韩天峰
|
30ad4dbb0e
|
feat(compiler): 实现函数作用域管理和类型声明优化
- 添加函数作用域层级管理功能,支持嵌套作用域跟踪
- 实现抽象类和接口类型的实例化检查,防止非法创建实例
- 优化参数类型声明处理,增加对象参数的作用域管理
- 添加标准数组创建的位置限制检查,确保在顶层作用域创建
- 扩展继承关系检查逻辑,支持内部接口的类型验证
- 增加完整的单元测试覆盖类型命中和声明功能
|
4 months ago |
韩天峰
|
1e22f19e63
|
refactor(php): stdArray 修改为在堆上分配内存,避免栈内存过大
|
4 months ago |