Skip to content

v0.2.0-beta.3

Choose a tag to compare

@KingBes KingBes released this 19 Jul 01:22
· 138 commits to main since this release

Full Changelog: 0.2.0-beta.2...v0.2.0-beta.3

v0.2.0-beta.3

本次版本聚焦测试体系对标 PHP 原生PHP 8.5 兼容性修复,同时包含多个扩展补全。

🎯 核心亮点

1. 测试体系对标 PHP 原生

  • 测试数量 169 → 209(+40,超出 200+ 目标)
  • 目录结构对齐 PHP tests/ 原生布局(lang//func//array//strings//math/ 等)
  • 移植 50+ PHP 8.5 原生 .phpt 测试,每个文件标注原生测试编号
  • 跨平台 CI 全绿:Windows AMD64 / Linux x86_64 / Linux aarch64 / macOS arm64

2. PHP 8.5 兼容性修复(14 项)

  • 嵌套数组深层访问$arr[0][1][2]$m["items"][0]["id"] 现可正确读取(新增 AST 追踪 + 嵌套深度推断)
  • list/[] 解构类型推断:混合类型数组 [$a1, [$a2, [$a3]]] = [10, [20, [30]]] 正确解构(per-index 类型推断)
  • ?? 数组键语义$arr["missing"] ?? "default"array_key_exists 检查,缺失键返回右侧而非 getter 默认值
  • 数学函数语义对齐abs(float) 返回 float、pow(int, -1) 返回 float、sqrt(-1) 返回 NAN、count($arr, COUNT_RECURSIVE) 递归统计
  • 数组函数补全array_pad() 新实现、array_keys($arr, $search) 搜索参数、max(1,2,3)/min(...) 可变参数形式

3. 扩展补全

  • PDO 扩展(SQLite 驱动):首个基于类的扩展,33 个方法
  • stream 扩展:新增 6 个函数(15 → 21)
  • OpenSSL 扩展:内置 mbedTLS 3.6.6 静态编译,21 个函数,零运行时依赖
  • zlib 扩展:新增 22 个函数(gz 文件流 + 增量上下文 API)
  • zip 扩展:新增 5 个函数

📊 数据对比

指标 beta.1 beta.3 变化
测试数量 161 209 +48
内置函数 281+ 345+ +64
跨平台 CI 3 平台 4 平台 +macOS arm64

⚠️ 已知限制

  • array_splice 需要 by-reference 修改支持,AOT 下不支持,测试保留 @skip
  • macOS + TCC:Generator 通过 pthread 线程模拟实现
  • TCC + Windows:使用 ELF 目标格式,与 MinGW COFF .a 库不兼容

📚 详细变更

完整变更记录见 CHANGELOG.md