v0.2.0-beta.3
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