背景
#66 的实现 commit 0769a11(成员分隔符 . → ·)改了 layout / runtime / tutorial 共 22 个文件,但未触及 runtime-rwirext_example/go/json/。json 扩展仍整体停留在 . 时代,导致 json ↔ kvspace 互转在当前主干上完全不可用。
三处脱节:
| 位置 |
现状 |
应为 |
| 成员 key 前缀 |
path+"." |
path+"·" |
| 注册 opcode 名 |
/lib/json.to、/lib/json.from |
/lib/json·to、/lib/json·from |
validateKey 禁止字符 |
含 .,不含 · |
含 ·,放行 . |
实测失效链:
list(c, "/rt/x.") → kvspace-durable assert_dir 拒绝 → kvspace: index must end with /: /rt/scalar-obj. → 宿主进程 abort(另见 0-kvspace 的 ABI panic issue)。
- 注册名不匹配 →
kvlang: vthread 1 error: NameError: rwfunc not found: json·to。
tutorial/json.kv、tutorial/json_roundtrip.kv 仍写 json.to(...),layout 静默降级(另见 1-layout 的静默降级 issue)。
需求描述
json 扩展与 tutorial 全量迁移到 ·,并让 . 成为合法成员名字符——这正是 #66 换分隔符的收益:{"a.b":1}、{"3.14":1} 应能无损往返。
预期结果
json·to / json·from 在 /lib/ 下以 · 名注册,runtime 派发命中。
- KV 成员 key 一律
p·k,与 kvspace OBJ_SEP、runtime MEMBER_SEP 同一约定。
validateKey 拒绝 / · [ ] \n \r \0 ‥ 与 ASCII 控制字符,放行 .。
- 两个 tutorial 用新语法跑通。
方案简述
本地已有最小修复补丁(未提交):json.go 引入 const sep = "·" 替换全部 path+".",opcode 名改 "json"+sep+"to",validateKey 调整禁止字符集;两个 tutorial .kv 同步。
修复后实测:json_roundtrip.kv 端到端输出与期望完全一致,Go 层往返用例 10/10、随机 300/300、key 边界 16/16(含 {"a.b":1}、{"3.14":1} 通过,{"a·b":1} 正确拒绝),redis 与 shm 双后端一致。
遗留:edge_test.go 注释仍写 {"a.b":1}「应拒绝」,需同步为「合法」。
背景
#66 的实现 commit 0769a11(成员分隔符
.→·)改了 layout / runtime / tutorial 共 22 个文件,但未触及runtime-rwirext_example/go/json/。json 扩展仍整体停留在.时代,导致 json ↔ kvspace 互转在当前主干上完全不可用。三处脱节:
path+"."path+"·"/lib/json.to、/lib/json.from/lib/json·to、/lib/json·fromvalidateKey禁止字符.,不含··,放行.实测失效链:
list(c, "/rt/x.")→ kvspace-durableassert_dir拒绝 →kvspace: index must end with /: /rt/scalar-obj.→ 宿主进程 abort(另见 0-kvspace 的 ABI panic issue)。kvlang: vthread 1 error: NameError: rwfunc not found: json·to。tutorial/json.kv、tutorial/json_roundtrip.kv仍写json.to(...),layout 静默降级(另见 1-layout 的静默降级 issue)。需求描述
json 扩展与 tutorial 全量迁移到
·,并让.成为合法成员名字符——这正是 #66 换分隔符的收益:{"a.b":1}、{"3.14":1}应能无损往返。预期结果
json·to/json·from在/lib/下以·名注册,runtime 派发命中。p·k,与 kvspaceOBJ_SEP、runtimeMEMBER_SEP同一约定。validateKey拒绝/ · [ ] \n \r \0 ‥与 ASCII 控制字符,放行.。方案简述
本地已有最小修复补丁(未提交):
json.go引入const sep = "·"替换全部path+".",opcode 名改"json"+sep+"to",validateKey调整禁止字符集;两个 tutorial.kv同步。修复后实测:
json_roundtrip.kv端到端输出与期望完全一致,Go 层往返用例 10/10、随机 300/300、key 边界 16/16(含{"a.b":1}、{"3.14":1}通过,{"a·b":1}正确拒绝),redis 与 shm 双后端一致。遗留:
edge_test.go注释仍写{"a.b":1}「应拒绝」,需同步为「合法」。