refactor!: 错误码体系重构 删除特殊平台语境残留

BREAKING CHANGE: 错误码编号全部变更, 外部依赖旧编号的代码需按映射表更新

- 删除 10 个从未使用的错误码:
  JSON/MCP 系列(5001/5002/5006/5007/5008) + 其余死码(5004/5009/5013/5018/5021)
- 重排为连续 5001~5016
- 宏前缀 NAPI_(鸿蒙 NAPI 语境残留) 改为 LUAERR_
- 同步更新: errors.h / bridge.cj getErrorMessage+typed抛出点 /
  lua_runner_test.cj 断言 / api.md 对照表 / README.md / GTest 宏名
- 清理注释残留: 鸿蒙 el2 沙盒路径 TODO / 沙盒内路径描述
- 版本号 0.2.1 -> 0.2.2

验证: GTest 44/44 通过; cjpm build 成功; 独立程序运行时 9/9 通过
(含新编号 5016/5013 错误路径)
This commit is contained in:
JianFeeeee
2026-08-25 09:29:48 +08:00
parent 237aab3f36
commit 4af121c1f3
4 changed files with 105 additions and 61 deletions

View File

@ -5,7 +5,7 @@
[![Cangjie](https://img.shields.io/badge/Cangjie-SDK-orange)](https://cangjie-lang.cn/)
[![AI-Assisted](https://img.shields.io/badge/🤖_AI_Assisted-20%25-orange)](README.md#ai-%E8%BE%85%E5%8A%A9%E7%BC%96%E7%A8%8B%E6%A0%87%E8%AF%86)
![AigcAssets.png](https://raw.atomgit.com/user-images/assets/9445015/a1976a82-4d44-493a-8efd-fb12a104268e/AigcAssets.png "AigcAssets.png")
**v0.2.1版本更新**:新增doString方法可执行单句lua新增loadFunction/callFunction预加载能力AI辅助更新了文档布局与readme优化了文档布局
**v0.2.2版本更新**:新增 typed interop原始类型直通Int64/Float64/Bool 与 Lua 直接互转,不经过字符串序列化),新增 `callFunctionInt/Num/Bool``runScriptInt/Num/Bool``resultType` API扩展错误码 5016结果类型不支持。补充AI辅助编程标识
---
@ -17,9 +17,10 @@
| 模块 | AI 辅助程度 | 说明 |
| :--- | :--- | :--- |
| `typed interop``callFunctionInt/Num/Bool``runScriptInt/Num/Bool``resultType` 及 C 层 typed 函数) | 高AI 主写,人工审查) | 原始类型直通映射:仓颉 Int64/Float64/Bool 与 Lua integer/number/boolean 直接互转,带类型标记的结果读取与严格校验(错误码 5016 |
| `loadFunction`/`callFunction`/`unloadFunction` | 高AI 主写,人工审查) | 预加载函数能力:加载文件→顶层执行一次→返回函数存入 Registry→可多次调用 |
| 单元测试(新增部分) | 中AI 主写,人工修正) | 预加载相关 GTest / 仓颉单测 |
| 文档(新增部分) | 低AI 起草,人工定稿) | README / api.md 预加载部分 |
| 单元测试(新增部分) | 中AI 主写,人工修正) | 预加载与 typed interop 相关 GTest / 仓颉单测 |
| 文档(新增部分) | 低AI 起草,人工定稿) | README / api.md 预加载与 typed interop 部分 |
---
@ -33,6 +34,7 @@ Lua Runner for Cangjie 是一个专为仓颉语言设计的轻量级、高性能
## 特性
- **轻量级集成**:基于 Lua 5.4,通过 FFI 直接与仓颉语言交互,性能损耗小。
- **原始类型直通**`Int64`/`Float64`/`Bool` 与 Lua `integer`/`number`/`boolean` 直接互转,支持 typed 参数与结果(`callFunctionInt/Num/Bool``runScriptInt/Num/Bool`),整数可跨 `2^53` 保真,无需字符串往返。
- **栈式管道模式**:支持脚本间基于栈的数据隐式传递,实现类似函数式管道的调用链。
- **预加载函数**:提供 `loadFunction`/`callFunction`/`unloadFunction`,预加载一次 Lua 函数到内存Registry顶层代码仅执行一次后续可多次调用与管道模式互不干扰。
- **doString**:直接执行 Lua 代码字符串,无需写入文件。
@ -76,8 +78,8 @@ main(): Int64 {
## 当前局限性
- **数据类型限制**当前版本在仓颉与 Lua 交互层仅支持**字符串**类型。虽然 Lua 内部可以处理复杂数据结构,但传递给仓颉或从仓颉传入时必须进行序列化/反序列化(如 JSON
- **容量限制**:内部使用固定数组管理加载的库,上限为 **20 个**,超过将报错 `5016`
- **数据类型限制**跨语言交互层从**字符串**扩展为**原始类型直通**Int64/Float64/Bool 作为参数与返回值直接映射,不经过字符串序列化),复杂数据结构(表/嵌套)仍需序列化(如 JSON
- **容量限制**:内部使用固定数组管理加载的库,上限为 **20 个**,超过将报错 `5008`
- **I/O 性能**I/O 重定向依赖于文件系统交换,相对于纯内存交互存在微小的性能开销。
## 第三方组件与合规说明