# Tcl 兼容矩阵（0.17.0）

| 能力 | 本轮实现 | 仍需追平 |
|---|---|---|
| 内部值 | 数值/文本/列表/字典表示、跨变量/参数/返回/异常选项传递、集合复制隔离、指定字符串类型转换 | 全部内部表示/字符串驻留/原始字节和上游边界，累计内存治理 |
| expr | BigInt/Double、算术/位运算/比较、eq/ne/in/ni、惰性 &&/||/?:、常用数学函数 | 完整函数分派、任意规模整数、全部浮点/错误细节 |
| 脚本解析 | 分组、变量/数组索引替换、命令替换、{*} 展开、按命令执行保留先前副作用、subst 三种开关/异常、info complete | 全部增量解析和极端嵌套/Unicode 边界 |
| 过程与作用域 | 默认参数/args、namespace eval/inscope、变量声明、global/upvar/uplevel、内置/过程重命名 | trace、别名全部边界、运行中 namespace 延迟销毁和根删除 |
| 命名空间库 | import/export/forget/origin、path/upvar/unknown、导入引用/循环检测、auto_import 回调 | Tcl 自带自动加载库、完整生态与上游全量 |
| ensemble | create/configure/exists、map/subcommands/parameters/prefixes/unknown、动态导出、转发帧与安全参数 | 全部重入/删除/错误堆栈边界、上游全量 |
| array | 全部 11 子命令/缩写、搜索游标/失效/复用、真实哈希遍历/统计、别名条目保留与对象生命周期 | trace、完整上游边界、跨平台标识解析和统一累计内存 |
| dict | 构造、get/set/unset、incr/append/lappend、for/map/filter/update/with | 全部写回异常边界、嵌套/数组对象缓存和代表性性能 |
| string | cat、UTF-16 索引/替换/匹配、BMP Unicode 16 分类/简单大小写、trim/reverse/map、is 的 strict/failindex 和数字/列表失败位置 | 全部子命令/选项、原始字节表示与补充平面参考异常、完整上游 Unicode 边界 |
| format/scan | 位置参数、宽度/精度/填充、精确浮点舍入、整数大小、扫描集合/抑制/%n、变量写入顺序 | 原始 UTF-8 截片一项已知差异、完整诊断和上游全量；固定 Windows 32/64 位配置 |
| list | 原有十命令 + lset/linsert/lreplace/lmap；lsearch 18 个选项、regexp/sorted、嵌套索引/二分；lsort 12 选项、stride/indices/嵌套索引与比较命令次序 | 原始字节诊断截片、完整对象/重入/诊断和上游边界 |
| 控制与异常 | if/then/elseif/else、for/foreach/while、break/continue、catch options、return -level/-code/-options、自定义码、try/on/trap/finally、throw、-during | 完整错误码/诊断栈 |
| switch | 精确/glob/regexp、nocase、贯穿/default、捕获/索引变量、调用者作用域和完成码 | 完整选项诊断/堆栈、上游全量及代表性性能 |
| 分支正则 | 有界 MoonBit AST 匹配器、ARE/ERE/BRE、Unicode 类别、重复/前瞻/反向引用与捕获 | 静态编译选项前缀差异、完整语法边界、非指数算法和整体内存治理 |
| 工具和会话 | JSON 行 CLI、独立模块会话、真实 Worker 网页、导入/下载/清空/取消/超时 | 完整文件边界、网络/进程/事件 I/O、自动加载与二进制扩展生态、累计内存治理 |
| 正则命令 | regexp 捕获/全局/内联/下标/起点/元数据；regsub 引用替换/全局字面量快路径 | 6299 原生案例中 6291 一致、8 个字节码差异；完整编译、诊断、缓存及算法/性能仍有缺口 |
| 性能与缓存 | 有界脚本/表达式缓存、数字分类、标量集合延迟序列化、避免重复参数数组和临时执行容器 | 全部对象表示、字节码、累计内存治理；0.12.0 短字典负载较 0.11.1 回退约 20.5%，其余九组为旧版约 0.96–1.07 倍；新增 switch 负载慢于原生约 1.7–15.9 倍 |
| 证据 | 5828 分支程序一致（5650 成功逐字/178 拒绝）与 35 原生超时分开记录；855 值传递原生程序一致 + 4970 转换程序中 4969 一致/1 明确差异 + 1866 Unicode/字符串 + 65536 码位数据审计 + 1019 替换/完整性 + 321 异常 + 312 命名空间 + 340 缓存 + 726 语义 + 248 原有系统 Tcl 场景，两个编译后端，真实宿主验证 | 全量上游测试、跨操作系统、代表性性能和应用迁移 |

[0.17 文件与包增量](FILE-IO.md)：真实磁盘会话、source、数字版本包加载；41 个独立 Tcl 对照通过。

上述实现是可执行子集，不是全量上游通过声明；20 项追平目标继续保持活动状态。

$name 仅接受 ASCII 名称是 Tcl 8.6 的规定；Unicode 变量使用 ${名称}，Unicode 数组索引可用。本实现不复刻已记录的原生补充平面转换崩溃或截断 UTF-8；相关本地保证不算原生对照通过。

分支正则限额：4096 UTF-16 模式单元、64 捕获/解析层、128 执行层、每状态数组 16384 项及现有执行预算。可空反向引用的 35 个原生超时探针不算兼容通过；现有路径枚举算法仍可能在复杂短输入上触及本地资源限额。

0.16.0 当前验证：JS/WasmGC 各 11211 项，56 新宿主和 20 实际网页检查；938 个数组原生探针中 937 完成且一致、1 原生超时，零未解释差异。原有 regexp 8 项、conversion 1 项、sort 2 项明确差异，以及 switch 35 项超时仍保留。四组五进程计时中短字典较 0.15.0 回退约 22.7%，其他 23 个既有负载中位比为 0.943–1.040；六项新数组负载为原生耗时约 2.49–5.89 倍。当前指纹见 evidence/array-upgrade.json，历史版本测量不代表当前引擎。公共函数/方法签名保持不变；生成接口新增 ArrayObject 内部类型条目。
