韩天峰
e5dbf10ceb
feat(ocean): add ocean demo with Godot integration
...
- Add CMakeLists.txt for building TypePHP Ocean Godot bridge extension
- Create main.php game logic with chunk-based world generation and weather system
- Add Godot scene configuration with environment settings and particle effects
- Implement PHP stubs for ocean backend functions
- Add complete C++ backend implementation with OpenGL rendering and physics
- Integrate spectral wave simulation and dynamic weather transitions
- Implement chunk loading/unloading system for infinite world navigation
- Add mouse capture and input handling for 3D camera controls
- Create marker placement system for world objects and islands
2 months ago
韩天峰
348c3d01fc
feat(minecraft-demo): add C++ backend and Godot extension for Minecraft demo
...
- Add GDExtension ignore files for C++ and GDExtension source directories
- Implement CMakeLists.txt for Godot extension with proper library linking
- Create PHP stub functions for Minecraft crafting operations
- Add comprehensive C++ backend implementation with OpenGL rendering
- Implement window management, texture loading, and block rendering
- Add chunk system with face building and distance-based visibility
- Include mouse capture, camera controls, and crosshair rendering
- Implement world initialization, block placement, and chunk management
- Add sky gradient, fog effects, and transparent object rendering
2 months ago
韩天峰
7e28e8441b
feat(build): add support for building shared libraries in addition to binaries and extensions
...
- Add BUILD_MODE_LIB constant to CompilerBase class
- Implement isBuildModeLib and isBuildModeEmbed methods for library detection
- Update Clang backend to handle lib build mode with -fPIC flag and DLL linking
- Modify GccLikeBackend to support lib build mode with shared library flags
- Update MSVC backend to handle lib build mode with DLL compilation
- Extend PlatformBase to return correct extensions for lib builds
- Add proper handling for misc directory files during preprocessing
- Create new example project demonstrating library build functionality
- Update Translator to include main.cc for embed modes and add PHPX_NO_MAIN define for libraries
- Expand mode mapping to accept multiple library-related build mode aliases
- Increment version number from 1082 to 1084
- Update documentation to reflect new lib build option alongside bin and ext modes
2 months ago
韩天峰
da0707e4d0
remove(Python): remove Python translator and example file
...
- Removed entire Python Translator class with all parsing methods
- Deleted sys.php example file with Python import statements
- Removed all AST parsing functionality for Python to PHP conversion
- Eliminated keyword mapping and builtin types handling for Python
- Removed code
2 months ago
韩天峰
9ffe109cb1
feat: 添加斗地主Win32示例游戏
2 months ago
韩天峰
6577f9bf81
fix: 修正项目名称与输出目录的解析逻辑
2 months ago
韩天峰
c3f0151e87
feat(aot): 支持类继承、接口及抽象类的类型兼容与运行时检查
...
允许子类对象赋值给父类/接口/抽象类声明的类型变量和容器,引入 declaredClass 区分声明类型与实际类型,对无法静态证明的继承关系添加运行时类型
2 months ago
韩天峰
b40a448804
docs(examples): 添加 FFI 崩溃示例
2 months ago
韩天峰
6e5b186c91
refactor(php): 重构PHP解析器的表达式处理和动态属性访问
...
- 将parseExpr替换为parseExprAsValue方法,统一处理void表达式转换为null
- 移除多处trimBrackets调用,简化表达式解析流程
- 添加emitDynamicPropertyFetchRead/Write/Unset等统一动态属性访问方法
- 重构PropertyWriteTarget类,将objectExpr和propertyExpr设为私有并添加getter方法
- 合并动态属性访问的目标路径和传统回退路径
- 修改测试框架中的exec方法为compile方法,更新相关测试用例
- 移除void表达式相关的错误检查,在运行时将其转换为null值
- 优化类型转换表达式的括号处理,移除不必要的trimBrackets调用
- 统一动态属性读取、写入、引用和取消设置的操作方法
2 months ago
韩天峰
f0f72f651d
feat(examples): 添加字符串连接示例并改进yield示例输出
...
- 新增 concat.php 示例文件展示字符串连接操作
- 修改 yield.php 示例中的输出方式为循环打印每个值
- 将 yield 示例的 var_dump 替换为更清晰的逐行输出格式
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
韩天峰
2824d8d21d
test(str): 添加字符串索引访问测试用例
...
- 测试 isset 对字符串布尔索引的处理
- 测试对象作为字符串索引的异常情况
- 验证 PHP 字符串索引访问的行为
- 检查不同类型索引的安全性问题
- 确保字符串索引边界检查功能正常
2 months ago
韩天峰
bbddd40297
refactor(examples): 为基准测试函数添加参数类型声明
...
- 为 Ack 函数添加 int 类型参数声明
- 为 ackermann 函数添加 int 类型参数声明
- 为 ary3 函数添加 int 类型参数声明
- 为 hash1 函数添加 int 类型参数声明
- 为 hash2 函数添加 int 类型参数声明
- 为 gen_random 函数添加 int 类型参数声明
- 为 heapsort_r 函数添加 int 类型参数声明
- 为 heapsort 函数添加 int 类型参数声明
3 months ago
韩天峰
0647b6425a
fix(php): 修复类常量解析和对象转换功能
...
- 添加对 self::class、parent::class 和 static::class 的支持
- 实现 parent::class 的继承链验证和错误处理
- 禁止使用 static::class 并提示编译时无法解析
- 移除 objval() 函数中的冗余参数验证逻辑
- 为 self::class 和 parent::class 场景添加测试用例
- 更新版本号至 1064
- 添加 yield 示例代码文件
3 months ago
韩天峰
a524211cd3
refactor(php): 重构PHP编译器基础功能并完善类继承支持
...
- 将parseFunction方法从CompilerBase.php迁移到Translator.php中
- 添加SsaBuilder和Skip异常类的引入声明
- 移除Preprocessor.php中的方法重写检测逻辑
- 在Translator.php中恢复类方法重写的检测和处理机制
- 添加新的继承测试示例文件A0.php、C0.php和main.php
- 更新simple.php示例文件内容
- 优化函数解析过程中的SSA分析和变量类型优化逻辑
3 months ago
韩天峰
c5f38a3d05
fix(parser): 修复变量类型推断问题
...
- 当右侧表达式为无类型但左侧变量已有已知原生类型时,
使用左侧类型进行转换以确保类型安全
- 在赋值操作中添加类型检查逻辑,避免类型丢失问题
- 更新 fibo 和 fibo_r 函数参数类型声明为 int
- 添加 issetor 性能测试用例以验证类型推断优化效果
3 months ago
韩天峰
5e549a4c15
perf(compiler): 优化静态属性访问性能并增强类型检查
...
- 添加对静态属性 unset 操作的错误处理
- 实现静态属性的 C++ 引用优化提升访问性能
- 为整型和浮点型静态属性添加原生引用支持
- 在函数上下文中添加静态属性引用映射表
- 更新微基准测试包含静态属性操作性能测试
- 添加静态属性 unset 的单元测试用例
- 修复静态属性访问相关的类型声明问题
3 months ago
韩天峰
9eec3e7483
feat(aot): 添加对全局变量和Stmt_Block语句块的支持
...
- 在CompilerBase中添加Stmt_Block解析支持
- 新增global-int测试用例验证全局变量整型操作
- 新增globals-null-arithmetic测试用例处理NULL全局变量算术运算
- 修复switch语句缩进格式问题
- 初始化micro_bench中last_time变量
- 注释掉部分性能测试以聚焦核心功能
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
韩天峰
8a9a8ce138
feat(cli): 添加 AST 语法树导出工具和大整数示例
...
- 新增 bin/dump-ast.php 脚本用于导出 PHP 文件的 AST 结构
- 实现了完整的 AST 节点递归转换和美化打印功能
- 添加了 examples/bigint/bigint.php 大整数测试示例
- 集成了 PhpParser 库进行语法树解析
- 提供了命令行参数验证和错误处理机制
- 实现了 AST 节点类型的智能识别和信息提取
3 months ago
韩天峰
5c86bf39f1
feat(examples): 添加 PHP 反射 API 示例程序
...
- 实现了打印内置函数参数和返回值类型信息的功能
- 添加了打印用户自定义函数信息的支持
- 实现了打印类方法参数和返回值类型信息的功能
- 添加了打印闭包(Closure)信息的支持
- 提供了完整的反射细节打印功能
- 支持联合类型、交集类型等复杂类型格式化
- 包含了 tentative return type 的
3 months ago
韩天峰
6309346c9a
feat(core): 通用方法实现,纯静态,零成本抽象
3 months ago
韩天峰
28b6c6e726
feat(debug): 添加调试信息支持以改进异常回溯功能
...
- 实现函数级别的调试信息生成,包括类方法和全局函数
- 添加命名空间前缀到调试函数名称中
- 集成 php::pushDebugFrame 和 php::popDebugFrame 用于运行时调试栈管理
- 添加调试信息启用和禁用机制
- 为嵌套函数调用添加异常传播测试用例
- 创建调试跟踪示例文件以验证功能实现
3 months ago
韩天峰
8a27a0055b
feat(jni): 添加JNI扩展功能支持Java与PHP交互
...
- 在.gitignore中添加*.class文件忽略规则
- 新增Hello.java示例类用于JNI测试
- 实现完整的JNI C++桥接代码,包括类型转换和异常处理
- 添加PHP stub文件定义JNI相关函数接口
- 创建main.php演示程序展示JNI功能使用方法
- 配置project
3 months ago
韩天峰
73bf28667d
feat(compiler): 添加对标准容器类型的完整支持
...
- 实现了标准数组维度获取的类型检测和解析功能
- 扩展了类型转换系统以支持字符串、数组和对象类型
- 在polyfills.php中添加了新的类型常量和容器函数定义
- 重构了标准容器解析器以支持复杂的值类型验证
- 实现了标准容器赋值操作中的类型安全检查
- 添加了类值类型的支持和验证机制
- 完善了标准容器的类型信息解析和存储功能
4 months ago
韩天峰
b17b4acbac
feat(build): 添加 Windows 资源文件支持功能
...
- 在 .gitignore 中添加 node_modules 目录
- 在 Msvc.php 中添加 compileResourceFile 方法用于编译 .rc 资源文件
- 新增 package.json 配置文件及 svg-to-ico.js 转换脚本
- 在 project.yml 中添加 Windows 资源文件配置示例
- 添加 swoole-logo.svg 图标文件
- 在 Translator.php 中集成资源文件生成功能
- 实现资源文件编译和链接到最终可执行文件的流程
- 更新版本号从 1049 到 1051
4 months ago
韩天峰
c79573a9fe
fix(php): 修复编译器基类中的回溯打印和类型返回验证问题
...
- 将 printBacktraceOnError 默认值从 false 修改为 true
- 扩展子类作为父类返回时的类型检查,支持抽象类或接口
- 更新 SimpleType::fromNode 和 fromString 方法以支持 ArrayType 返回类型
- 修改测试用例中 ZipArchive 的路径处理逻辑
- 更新测试输出预期结果以匹配新的行为
4 months ago
韩天峰
6cc40059e0
feat(game): 将俄罗斯方块游戏重构为纯PHP逻辑实现
...
- 移除原有的C++游戏逻辑,将所有游戏状态管理转为PHP实现
- 添加TetrisBoard类处理游戏核心逻辑(碰撞检测、方块锁定、消除行等)
- 添加TetrisRenderer类负责Win32图形渲染
- 定义完整的俄罗斯方块形状和颜色常量数组
- 实现键盘控制(左右移动、旋转、硬降等功能)
- 添加计分系统和等级计算功能
- 更新C++层仅提供Win32 API封装(窗口创建、绘图原语等)
- 修改游戏主循环处理Windows消息和自动下落逻辑
- 添加游戏结束检测和重新开始功能
4 months ago
韩天峰
16259f095d
fix(game): 修复俄罗斯方块游戏的SDL资源管理和退出机制
...
- 添加sdlInitialized标志跟踪SDL初始化状态
- 实现cleanup方法确保窗口和渲染器正确释放
- 使用SDL_PushEvent替代SDL_Quit解决退出冲突
- 修复析构函数中的资源清理逻辑
4 months ago
韩天峰
9186d04da4
refactor(backend): 将调试配置选项从 debug_info 统一更改为 debug
...
- 将所有编译器后端(GCC、Clang、MSVC)中的 debug_info 参数重命名为 debug
- 更新单元测试中相应的配置选项参数名称
- 修改命令行参数解析从 --debug-info 改为 --debug
- 调整文档中关于调试选项的描述和示例
- 修复链接阶段不应包含调试符号的逻辑错误
- 重构内部调试变量命名从 debugInfo 改为 debug
- 更新 YAML 配置文件中的调试选项键名
4 months ago
韩天峰
e80083bf6a
docs(tetris): 添加俄罗斯方块游戏示例项目和相关文档
...
- 新增 BOX_USAGE_GUIDE.md 详细说明 Box 机制使用方法
- 添加 main.php 实现游戏逻辑和 SDL 图形操作
- 创建 project.yml 项目配置文件
- 新增 PROJECT_SUMMARY.md 项目完成总结文档
- 添加 QUICKSTART.md 快速开始指南
- 创建 README.md 项目说明文档
- 添加 README_SDL.md SDL 版本说明文档
4 months ago
韩天峰
2bf36baf56
俄罗斯方块示例程序
4 months ago
韩天峰
619c482c7d
docs(examples): 添加俄罗斯方块游戏示例项目
...
- 新增完整的俄罗斯方块游戏实现,展示PHP与C++混合编程
- 添加TetrisBox类继承Box机制进行对象封装传递
- 实现Windows GUI界面创建和GDI图形渲染功能
- 提供游戏主循环、键盘输入处理和自动下落逻辑
- 添加项目配置文件、快速开始指南和详细使用手册
- 包含类型映射规则说明和最佳实践总结
4 months ago
韩天峰
7ee5f8e018
删除无效的文档
4 months ago
韩天峰
daa5379e46
feat(std-array): 添加标准数组类型支持
...
- 添加了 TYPE_STD_ARRAY 常量定义
- 在全局头文件列表中加入 phpx_std_array.h
- 修复了嵌套数组索引解析逻辑,使用 convertIntExpr 方法转换整数表达式
- 优化了 std::array 函数参数解析,直接获取数值而非解析标量值
- 使用 TYPE_STD_ARRAY 常量替换硬编码的 std::array 字符串
- 修改返回值为注释格式的声明字符串以便调试
4 months ago
韩天峰
faf6fe7a6b
feat(php): 添加对多维标准数组维度访问的支持
...
- 在 CompilerBase 中实现多维数组维度提取和转换逻辑
- 为 StdArrayParser 的 parseStdArrayDimFetch 方法添加 toArray 参数支持
- 修正 std::array 维度访问边界检查和错误消息格式
- 添加多维数组维度访问验证以防止维度不匹配错误
- 更新示例代码以测试多维标准数组功能
4 months ago
韩天峰
817c056859
example(error): 添加资源类型参数示例代码
...
- 创建了 resource.php 示例文件
- 定义了接受 resource 类型参数的函数 foo
- 实现了通过 fopen 打开 stdin 流的功能
- 添加了主函数调用演示 resource 参数传递
4 months ago
韩天峰
2b088d71c5
feat(php): 添加 std::array 类型支持并优化编译器功能
...
- 新增 StdArrayParser trait 处理 std::array 类型解析
- 添加 std::array 类型检测和类型转换功能
- 实现 std::array 的维度检查和安全索引访问
- 添加 polyfills.php 文件提供类型定义和数组填充功能
- 更新 C++ 标准从 c++14 到 c++17
- 修复表达式解析中的类型检测逻辑
- 优化编译器的并发编译功能
- 添加数组循环性能测试示例
- 实现 std::array 的多维数组支持
4 months ago
韩天峰
673f3b3dc5
refactor(preprocessor): 重构参数声明生成逻辑
...
- 添加 genArgumentDeclaration 方法统一处理参数声明格式
- 将参数声明逻辑从多个位置提取到独立方法中
- 简化可变参数和普通参数的声明处理流程
- 更新版本号从 1002 到 103
- 删除废弃的示例文件 test1.cc
- 添加混合类型声明的测试用例
4 months ago
韩天峰
81957f56d7
feat(php): 更新符号常量并添加参数列表支持
...
- 在Symbol类中添加argList方法返回'php::ArgList'
- 修改CompilerBase中参数列表的返回值格式
- 添加count-array.php示例文件展示数组计数功能
4 months ago
韩天峰
b5ef65edc2
feat(compiler): 添加 Windows Clang 编译器支持
...
- 实现智能编译器检测,支持 PHPX_CC 环境变量优先级
- 添加 isClangAvailable() 方法检测 PATH 和 Visual Studio LLVM 路径
- 实现 Windows Clang 编译选项处理,使用 GCC 风格参数
- 添加 lld-link 链接器支持,提供比 link.exe 更快的链接速度
- 支持 Clang 完整的 Sanitizer 功能(AddressSanitizer、UBSan 等)
- 更新编译命令构建逻辑,区分 MSVC 和 Clang 参数格式
- 添加详细的 Windows Clang 使用指南和测试文档
4 months ago
韩天峰
334594c659
feat(compiler): 实现 C++ 标准独立配置功能
...
- 将 C++ 标准从 cxxflags 中分离,支持 --cxx-std 参数配置
- 添加 project.yml 中的 cxx_std 配置项,支持独立设置标准版本
- 实现 Windows 和 Unix 平台的差异化默认标准(Windows 使用 c++17,Unix 使用 c++14)
- 添加 /NODEFAULTLIB 选项解决 Windows CRT 库冲突问题
- 增加 --debug-info 参数支持,自动禁用优化并生成调试信息
- 更新配置优先级规则文档,明确命令行参数、YAML 配置和默认值的覆盖关系
- 添加 C++ 标准配置指南和调试模式使用说明
- 修复 cxxflags 中标准标志被忽略的问题
4 months ago
韩天峰
20436c5e41
refactor(php): 重构 MSVC 警告屏蔽机制
...
- 将硬编码的警告屏蔽改为从 Constants 配置中动态读取
- 添加 MSVC_SUPPRESSED_WARNINGS 常量数组管理所有警告代码
- 扩展警告屏蔽范围,涵盖 Windows SDK 和 PHP SDK 的常见警告
- 在示例项目中添加 MSVC 警告屏蔽说明文档链接
4 months ago
韩天峰
b4b735644d
feat(php): 添加PHP编译器基础类实现
...
- 实现了PHP到C++的代码转换核心功能
- 添加了AST节点解析和类型系统映射
- 实现了变量、函数、类的声明和调用处理
- 集成了PHPParser进行语法树解析
- 添加了跨平台编译支持(Windows、Linux、macOS)
- 实现了字面量字符串管理和内存优化
- 添加了全局变量和超全局变量处理
- 实现了魔术方法检测和闭包生成器
- 集成了CLImate库提供命令行界面支持
- 添加了错误处理和调试信息生成功能
- 实现了代码格式化和文件保存功能
4 months ago
韩天峰
b1272f47e7
feat(php): 添加PHP编译器基础类实现
...
- 实现PHP到C++的代码转换功能
- 添加表达式解析和类型系统支持
- 集成AST节点处理和代码生成逻辑
- 实现跨平台编译器检测和配置
- 添加PHP版本兼容性检查
- 实现字面量字符串和变量管理
- 添加函数和类定义映射机制
- 实现命名空间和类型声明处理
4 months ago
韩天峰
8994813b8b
feat(compiler): 添加 Windows GUI 模式编译支持
...
- 新增 --no-console 参数用于隐藏控制台窗口
- 实现 Windows 子系统编译选项 (/SUBSYSTEM:WINDOWS)
- 添加 mainCRTStartup 入口点配置
- 更新编译器常量定义和参数解析
- 创建 GUI 模式示例程序 hello-gui.php
- 创建控制台模式示例程序 hello-console.php
- 完善 Windows GUI 程序开发文档
- 更新项目 README 说明和使用指南
4 months ago
韩天峰
09ea347c11
feat(win32-hello): 添加中国时区支持并更新最佳实践指南
...
- 在 hello-win.php 中添加 date_default_timezone_set('Asia/Shanghai')
- 在 main.php 中添加 date_default_timezone_set('Asia/Shanghai')
- 在 CHINESE_SUPPORT_GUIDE.md 中添加时区设置说明
- 更新最佳实践列表,添加时区设置建议
- 更新 .gitignore 添加 *.obj 文件忽略规则
4 months ago
韩天峰
d50aa88504
docs(examples): 添加 Win32 Hello World 示例项目和相关文档
...
- 添加 Windows 中文支持指南文档
- 添加 PHPX 编译器 C++ 函数导出规范文档
- 添加编码指南文档
- 创建 hello-win.php 主程序文件
- 创建 main.php 简单消息框示例文件
- 创建 window.php 完整窗口示例文件
- 添加项目配置文件 project.yml
- 创建 README.md 项目说明文档
- 添加 C++ Windows API 封装实现文件 winapi.cc
- 添加 C++ 函数声明桩文件 winapi.stub.php
4 months ago
韩天峰
b1df315299
feat(compiler): 支持 PHP 嵌入模式并改进 Windows 编译配置
...
- 添加 php8embed.lib 支持作为嵌入模式首选库文件
- 更新 Windows 库文件查找顺序以支持嵌入模式
- 区分 C 和 C++ 文件的编译选项处理
- 将宏定义应用限制在编译阶段而非链接阶段
- 更新 Windows 链接器使用 link.exe 替代编译器
- 添加 .dll 和 .exe 文件到 .gitignore
- 修复 PHP ZTS 检测逻辑移除严格比较
- 移除示例中的环境变量输出以减少冗余信息
- 添加 C++ 异常处理支持和标准版本指定
4 months ago