diff --git a/doc/job-2026-08-19.md b/doc/job-2026-08-19.md deleted file mode 100644 index e068e44..0000000 --- a/doc/job-2026-08-19.md +++ /dev/null @@ -1,74 +0,0 @@ -# job 2026-08-19 —— byteseek 扩展为全功能 runtime - -> 状态:进行中 -> 关联:`doc/substrate.md`(架构基线,已过时)、`doc/stage1-tasks.md`(任务清单,B1/B2/B4 相关) - -## 背景 - -极简 `kvlang/runtime` 只实现 kvspace 原生语义(算术 / string / array / dict / 控制流 -/ kvspace 读写),连 `println` 都没有——这是正确的,不是缺陷:kvlang 追求的是 kvspace -世界,而 kvspace 世界里没有 term、os、net、fs、http 这些东西。 - -于是「全功能 runtime」由 **byteseek(宿主)** 承担:它把外围设备用 rwir 桥进 -kvspace,再在其上用 rwfunc 拼 stdlib。 - -## 原则:rwir 的两个触发条件 - -1. **出 kvspace**——真 tty / 网络 / 文件 / syscall,必须宿主原生。 -2. **性能敏感**——kvlang 解释执行 + Redis 往返慢,扩展原生快。 - -`rwfunc` 留给:树内组合、性能无所谓、且需要可自改的部分。 - -> `json.to/from` 属第 2 条:它不出 kvspace(子树 ↔ 文本),但整树遍历 + TLV 编解码 -> 在 kvlang 里太慢,必须是 rwir。 - -## 目标 stdlib 分类 - -| lib | opcode | 说明 | 状态 | -|---|---|---|---| -| **term** | `print / println / cerr / input`(裸名) | tty 输入输出,byteseek 自实现 | ✅ 已有 `src/rwir/io.rs` | -| **json** | `json.to / json.from` | 子树 ↔ JSON 文本 | ✅ 已内嵌(单测通过) | -| **http** | `http.call`(单 rwir)+ `http.get/post/put/del`(rwfunc) | 网络抓取 | ✅ rust 原生 ureq | -| **os** | `os.proc.* / os.net.* / os.fs.*` | 进程 / 网络 / 文件 | 待实现(`os.mem` 砍) | - -- `os.proc` 吸收现有 `shell.run` / `python.run`(是 proc 的特例)。 -- 命名:普适原语保持裸名(不打断已教给 LLM 的 `println`),其余点号分组 - (`http.get` / `os.proc.run` / `json.to`)。 -- `json.to(path) -> str`、`json.from(str) -> path`:JSON 对象/数组 ↔ KV 子树 - (目录 → 嵌套对象,compact 数组与散 key 数组统一序列化为 JSON 数组)。 - -## 进程模型:单进程 - -byteseek 单进程嵌入全部 rwir(driver 模式,就地 dispatch)。唯一的重写是 json: -现在是 Go 独立进程(poll `/lib/json.to/.todo` 队列),内嵌需用 Rust 重写 -(serde_json + 子树遍历 + TLV 编解码),语义照搬 `runtime-rwirext_example/go/json`, -以 `tutorial/10-rwirext/json.kv` 为验收。 - -`go/json`、`rust/term` 降级为「第三方扩展示例」。 - -## 落地顺序 - -1. **json Go→Rust 内嵌**:`src/rwir/json.rs` + ffi 增补(`kvspaceList/Del/Mkindex/ - TlvEncode`)→ 注册 `json.to/from`。最大一块,且有精确 spec 与 tutorial 验收。 -2. **http**:复用 `llm.rs` 的 curl 子进程模式 + `TOOL_CAP` 截断。 -3. **os.proc**(吸收 shell/python)→ **os.fs** → **os.net**。 - -## 关键设计决策(落地中沉淀) - -- **http 单 rwir + rwfunc 拆分**:rwir 只有 `http.call(method, header, url, body)`; - `http.get/post/put/del` 是 `lib http` 下的 rwfunc 封装(`lib/byteseek/http.kv`)。 - 参数 `header` 是 `"K: V\nK2: V2"` 原文块(空串 = 无 header)。 -- **http 走 rust 原生**(ureq,含 gzip),不经 curl 子进程;超时 30s,代理读 - `http_proxy`/`https_proxy` 环境变量。 -- **字符串类型是 `[]char/utf32`,不是 `[]char/utf8`**:kvlang 字符串字面量默认编码 - `char/utf32`(`layout/src/lower.rs::lit_to_type`),裸标识符/字面量传参须用 - `[]char/utf32` 才匹配。json 走 `char/utf8`(`kvspaceNewCharByte`),是 host 侧产物, - 与字面量编码不同——将来 http+json 组合传参需显式转换。 - -## 待办 - -- [x] json Rust 内嵌(`json.to/from`) -- [x] http rwir(`http.call` + `lib http` rwfunc) -- [x] kvlang/layout 三 ABI:vet / format(保 lib 分组、幂等)/ layoutcode(改名 + 增量合并) -- [x] 刷新 `doc/substrate.md` 与 `doc/stage1-tasks.md` -- [ ] os.proc / os.fs / os.net rwir