韩天峰
|
df5dd2a5f6
|
refactor(php): 重构属性写入目标处理逻辑以支持动态对象属性
- 引入 PropertyWriteTarget 类来统一管理属性写入目标
- 修改 parseAssignPropertyFetch 方法以接受 PropertyWriteTarget 参数
- 移除已废弃的 parseAssignStaticProperty 方法
- 添加动态对象属性读取和写入的目标级辅助方法
- 更新复合赋值操作以使用统一的属性写入目标处理
- 改进属性引用获取逻辑以复用目标级引用辅助方法
- 在 .gitignore 中添加 swoole_compiler 和 tpc 目录排除规则
- 更新重构计划文档以反映动态属性写入目标的实现进展
|
2 months ago |
韩天峰
|
c05c63b8aa
|
refactor(php): 重构属性写入逻辑以统一动态属性访问
- 将动态属性读写操作收敛到 emitDynamicPropertyRead/Write 辅助方法
- 引入 PropertyWriteTarget DTO 来统一属性写入目标的准备和检查
- 通过 preparePropertyWriteTarget 统一处理对象和静态属性写入目标
- 使用 assertCanAssignPropertyWrite 进行属性写入的静态检查
- 通过 wrapPropertyWriteTypeCheck 实现运行时类型检查包装
- 更新复合赋值和自增自减操作符的属性访问逻辑
- 在文档中记录属性写入路径的重构计划和当前进展
|
2 months ago |
韩天峰
|
c34d11c136
|
refactor(php): 重构属性访问和赋值类型检查逻辑
- 提取属性定义获取逻辑到 getNativePropertyDef 方法
- 添加原生属性值源设置和检查方法
- 创建 PropertyAssignTypeInfo 类处理属性赋值类型信息
- 统一属性访问类型检查的实现方式
- 简化静态属性访问和动态属性访问的处理流程
- 更新文档中的重构计划说明
|
2 months ago |
韩天峰
|
59c9477bf5
|
refactor(php): 重构属性访问解析器以使用只读上下文接口
- 将 PropertyAccessResolver 从依赖 CompilerBase 大类改为依赖 PropertyAccessContext 接口
- 在 CompilerBase 中实现 PropertyAccessContext 接口并提供 getClassDef 和 getParentClass 方法
- 移除 PropertyAccessResolver 构造函数中的闭包参数,改用接口方法调用
- 更新 Preprocessor 中的父类获取逻辑以直接使用命名空间类名解析
- 修改 Translator 中的父类解析方式以保持一致性
- 在重构计划文档中添加只读接口设计原则说明
|
2 months ago |
韩天峰
|
87c54236a0
|
refactor(php): 重构属性访问解析逻辑以使用专门的解析器方法
- 将 findNativeProperty 方法替换为更具体的 resolveNativeInstanceProperty 和 resolveNativeStaticProperty
- 添加 resolveNullsafePropertyChain 方法处理空安全属性链检查
- 引入 PropertyAccessResult 类来统一属性访问结果的返回格式
- 使用 isNativePropertyAccess 方法替代直接的属性检查
- 移除旧的泛型 findNativeProperty 入口点以避免布尔参数扩散
- 更新 AssignOpTrait 中的属性访问检查逻辑
- 修改动态属性递增递减操作中的原生属性检查方式
- 调整编译器基类中的属性解析实现细节
|
2 months ago |
韩天峰
|
4b1b20c7ca
|
refactor(php): 重构属性访问解析逻辑并引入编译阶段管理
- 引入 PropertyAccessResolver 类统一处理属性访问逻辑
- 添加编译阶段管理 (idle/prepare/convert) 确保模块正确使用时机
- 将 isSameClassName、isSameOrSubclassOf、canAccessProtectedProperty 方法委托给 resolver
- 实现 PropertyAccessResult DTO 承载属性访问解析结果
- 为 Preprocessor 和 Translator 添加编译阶段进入/恢复逻辑
- 创建 CompilerPhaseTest 验证阶段管理功能
- 更新文档说明重构计划和模块拆分方向
- 修改函数返回值测试以适配重构后的测试需求
|
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 |
韩天峰
|
4e7acaf940
|
feat(compiler): 添加目标CPU指令集优化支持
- 在 Clang 和 GCC 后端中添加 -march 参数支持
- 新增 --march <arch> 命令行选项用于指定目标CPU架构
- 在 CompilerBase 中添加 march 属性和 getter 方法
- 更新文档说明 --march 选项的用法和常见值
- 在常量定义中注册 march 参数配置
- 在翻译器中解析和处理 --march 命令行参数
- 将 march 配置传递给编译后端命令构建过程
|
2 months ago |
韩天峰
|
02a91bba95
|
feat(compiler): 添加外部库集成和编译优化功能
- 支持通过 -I/--include-path 添加自定义头文件搜索路径
- 支持通过 -D/--define 定义预处理器宏用于条件编译
- 实现 LTO 链接时优化功能 (--lto) 提升性能和减小体积
- 添加 clang-format 代码格式化支持 (--format)
- 支持通过 -l/-L 参数链接外部库和指定库搜索路径
- 添加配置文件方式定义链接库和搜索路径
- 更新文档包含新功能使用说明和示例
|
2 months ago |
韩天峰
|
19164e92bc
|
docs(compiler): 添加AOT编译速度优化研究文档并完善测试用例
- 添加AOT编译速度优化研究笔记,涵盖瓶颈分析和优化方向
- 新增构造函数抛异常析构函数调用测试用例
- 添加混合数组默认参数函数测试用例
- 补充私有方法重写功能测试代码
- 增加抽象类实例化相关测试文件
|
2 months ago |
韩天峰
|
7939f28f37
|
test(phpunit): 添加抽象类和私有方法重写的测试用例
- 添加 testNewAbstractClass 方法测试抽象类实例化错误
- 添加 testOverridePrivateMethod 方法测试私有方法重写错误
- 使用 exec 方法验证预期的错误消息输出
- 扩展测试覆盖范围以包含更多边界情况
|
2 months ago |
韩天峰
|
315220eac6
|
docs: 添加 HHVM/HHBBC 和 KPHP 编译器技术调研文档
- 新增 HHVM/HHBBC 编译器架构分析文档,涵盖全程序分析、类型系统与优化管道
- 新增 KPHP 编译器设计与优化技术调研文档,包含流水线并行编译和智能类型收窄
- 记录可借鉴的创新设计,包括 rewrite rules DSL、smart casts、并行编译管道等
- 分析工具链差异,涵盖测试基础设施、基准测试框架和 IDE 集成方案
- 对比语法兼容性差异,明确支持与不支持的语言特性及架构限制
- 提供优先级评估建议,指导 AOT 编译器的技术改进方向
|
3 months ago |
韩天峰
|
279fe22d82
|
fix(compiler): 解决对象属性类型检查和赋值操作问题
- 添加对象属性赋值时的类型验证逻辑
- 实现固定类型对象属性的 unset 操作默认值恢复
- 修复 std 命名空间内置类型方法的类型检测
- 更新对象属性类型推断和方法返回类型解析
- 添加对象属性子类赋值到基类类型的错误检查
- 修改测试用例以反映 AOT 编译器的严格类型行为
|
3 months ago |
韩天峰
|
46800d9dc9
|
docs(aot): 添加 AOT 编译器优化优先级和 PHP 源码优化器分析文档
- 新增 AOT 编译器优化优先级重新评估文档,重点分析类型推断、去虚拟化、逃逸分析等核心优化策略
- 详细阐述 GCC/Clang 二次编译架构下的优化分工原则
- 新增 PHP Zend Optimizer/OPcache/JIT 设计分析文档,提取可借鉴的编译器优化技术
- 包含 SSA/e-SSA 构建、类型推断、SCCP、DCE、逃逸分析等关键技术的实现细节
- 提供 PHP 优化器位掩码类型系统的具体设计方案和算法实现
- 分析 PHP 的稀疏条件数据流框架(SCDF)和通用优化 pass 流水线架构
|
3 months ago |
韩天峰
|
95b1c89053
|
BitInt 支持位运算操作符
|
3 months ago |
韩天峰
|
eb31e3584b
|
docs: 添加 AOT 编译器高精度类型和通用方法使用教程
- 新增 HIGH_PRECISION_TYPES.md 文档,详细介绍 BigInt、Decimal 和 BigFloat 三种高精度数值类型
- 新增 UNIVERSAL_METHODS.md 文档,全面介绍通用方法系统的使用方式和各类型支持的方法
- 包含高精度类型的构造、运算、转换等完整使用指南
- 提供通用方法的设计原理、Handler 类型和各类原生类型的方法详解
- 添加完整的使用示例和最佳实践说明
|
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 |
韩天峰
|
05a409ac37
|
test: 添加AOT测试及eval()作用域限制文档
|
3 months ago |
韩天峰
|
7ee2a161b9
|
docs: 添加两项专利申请技术交底书
- 添加 C++ 模版实现动态语言强类型数据容器的专利文档
- 添加混合态编程语言编译执行方法的专利文档
- 文档涵盖技术方案、系统组成、方法流程和关键保护点
- 包含详细的术语解释和技术背景说明
|
3 months ago |
韩天峰
|
25a574122a
|
docs(std): 添加 STD 容器文档说明
- 介绍 Swoole AOT 强类型高性能容器特性
- 详细说明 std::array、std::vector、std::map、std::unordered_map 的使用方法
- 提供各类容器的代码示例和性能对比数据
- 解释与 PHP Array 的转换机制和使用建议
- 包含编译原理说明和性能测试结果
- 说明 UnsafePtr 与 native 函数参数的使用规则
|
4 months ago |
韩天峰
|
9186d04da4
|
refactor(backend): 将调试配置选项从 debug_info 统一更改为 debug
- 将所有编译器后端(GCC、Clang、MSVC)中的 debug_info 参数重命名为 debug
- 更新单元测试中相应的配置选项参数名称
- 修改命令行参数解析从 --debug-info 改为 --debug
- 调整文档中关于调试选项的描述和示例
- 修复链接阶段不应包含调试符号的逻辑错误
- 重构内部调试变量命名从 debugInfo 改为 debug
- 更新 YAML 配置文件中的调试选项键名
|
4 months ago |
韩天峰
|
028a83dcb2
|
feat(compiler): 添加编译器选择机制和平台优化
- 实现基于环境变量的编译器选择(PHPX_CC > CXX > 平台默认)
- 支持通过 YAML 配置文件指定 cpp-compiler 选项
- 为 macOS、Linux、Windows 自动选择合适的默认编译器
- 优化 PHP 路径检测逻辑,移除硬编码路径依赖
- 为 extension 和 bin 模式统一添加 PHP 库链接
- 在 macOS 上实现 RPATH 支持以解决动态库加载问题
- 添加对多种构建模式名称的映射支持(extension/ext/binary/bin/cli)
|
4 months ago |
韩天峰
|
3489413661
|
docs: 添加 AOT 编译器类继承规则文档和预览版使用须知
- 新增 CLASS_INHERITANCE.md 文档,详细说明 AOT 编译器类继承规则
- 新增 README.md 文件,包含预览版使用条款和责任限制说明
- 文档涵盖合法继承示例、非法继承示例和最佳实践指南
- 添加故障排除部分和常见问题解答
- 说明 AOT 编译器与传统 PHP 在继承方面的差异对比
- 强调预览版软件的使用限制和风险提示
|
4 months ago |
韩天峰
|
a284a9bfaf
|
docs(syntax): 更新不支持语法文档并添加新测试用例
- 新增重复函数名和类名不支持特性的详细说明
- 新增break/continue多层循环不支持特性的详细说明
- 新增字符串越界访问行为差异特性的详细说明
- 添加相关替代方案和最佳实践建议
- 更新统计数据和FAQ问答内容
- 修复代码块标记格式问题
- 添加字符串相关的bug测试用例
|
5 months ago |
韩天峰
|
26682179d4
|
docs(syntax): 更新不支持语法文档添加引用参数默认值和变长引用参数说明
- 新增引用参数带有默认值的不支持语法说明
- 新增变长参数中使用引用的不支持语法说明
- 更新统计信息表格中的语法数量和百分比
- 在快速参考表中添加新的不支持语法条目
- 为相关测试文件添加 skip 标记说明
- 更新更新日志记录新增的两个不支持语法特性
|
5 months ago |
韩天峰
|
646fb7d56d
|
docs(compiler): 添加 AOT 编译器命令行工具使用指南
- 新增完整的命令行选项详解文档
- 包含优化级别、编译模式、输出文件名等所有参数说明
- 提供典型使用场景和性能优化技巧
- 添加故障排除和最佳实践章节
- 包含编译过程详解和高级主题说明
|
5 months ago |
韩天峰
|
c8e22239bb
|
docs: 添加 PHP 与 C++ 混合编程指南并完善原生类型文档
- 新增完整的 PHP 与 C++ 混合编程指南文档
- 详细介绍 AOT 编译器的混合编程机制和使用方法
- 添加 Box 封装器机制的完整说明和示例
- 扩展原生类型文档,新增 objval 编译期函数说明
- 更新类型映射表,增加性能和状态标识
- 补充类型声明方式对比表格
- 添加大量实用示例和最佳实践指导
|
5 months ago |
韩天峰
|
1d14d569bf
|
docs: 添加 AOT 编译器文档集
- 新增 COMPILATION_MODES.md 详细介绍扩展模式和二进制模式
- 新增 NATIVE_TYPES.md 说明原生类型支持情况
- 新增 QUICKSTART.md 提供快速入门指南
- 新增 README.md 创建文档索引
- 更新 UNSUPPORTED_SYNTAX.md 补充类型约束说明
|
5 months ago |
韩天峰
|
552fa1c882
|
docs(guide): 添加函数参数类型声明优化指南
- 介绍自动原生类型机制,支持 int、float、bool 参数声明
- 对比 ZVAL 类型与原生类型的内存占用和性能差异
- 提供斐波那契数列和圆周率计算的实际测试案例
- 展示性能对比数据,AOT 原生类型比 Zend VM 快 100-300 倍
- 分析内存布局优化、寄存器直接运算和编译期优化原理
- 提供递归函数、循环密集型、数学计算和条件判断的最佳实践
- 介绍混合类型策略,外层灵活内层高效的设计模式
- 警告类型不匹配、返回值约束和溢出风险等注意事项
- 包含完整的性能测试基准和决策树指导
- 总结核心要点和推荐实践方案
|
5 months ago |
韩天峰
|
2ef2358735
|
fix(compiler): 移除变量类型重新赋值检查逻辑
- 删除了变量类型不匹配时的致命错误检查
- 允许相同变量名在不同类型的std::转换间灵活赋值
- 更新了本地变量类型验证和添加逻辑
- 修改了表达式解析和类型转换流程
|
5 months ago |
韩天峰
|
5b0346a4ad
|
test(aot): 添加 AOT 编译器功能测试和文档
- 新增匿名类功能测试文件 tests/aot/anonymous-classes.phpt
- 新增数组展开操作符测试文件 tests/aot/array-spread.phpt
- 新增箭头函数测试文件 tests/aot/arrow-functions.phpt
- 新增属性注解测试文件 tests/aot/attributes.phpt
- 新增构造函数属性提升测试文件 tests/aot/constructor-promotion.phpt
- 新增生成器测试文件 tests/aot/generators.phpt
- 新增 trait 基础功能测试文件 tests/aot/trait-basic.phpt
- 更新测试运行脚本支持 main 函数自动调用
- 新增 AOT 编译器语法支持文档 docs/UNSUPPORTED_SYNTAX.md
- 记录 ZVAL 与原生类型性能对比和使用建议
- 文档化扩展模式和二进制可执行文件模式差异
- 详细说明不支持的语法特性包括生成器、可变变量等
|
5 months ago |