Skip to content

struct + spec: 类型系统/词法规范收敛 + struct 一等类型(v0.2.8) - #233

Merged
miaobyte merged 18 commits into
masterfrom
199-struct
Sep 7, 2026
Merged

miaobyte merged 18 commits into
masterfrom
199-struct

Conversation

@miaobyte

@miaobyte miaobyte commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

199-struct 累积的 v0.2.8 内容:struct 一等类型、spec 卷(类型系统/词法/布局/runtime)、defrwfunc kind 移除、error_cases 重组、<-- 删除(spec)。\n\n关联 #199

- ast: StructDecl/Field(name:kindexpr + 默认值字面量),File/PkgNode 挂 structs,
  sig_string 反序列化(struct X { f:T=..; … })。
- parser:struct 关键字解析进 pkg 树;kindexpr/kvkind 加 structref 形状。
- code.rs:struct 入库(/lib 下 defstruct?待定);Cargo.toml/描述对齐。

未完成 WIP 防护性提交(layout 侧),未跑全量回归。
- builtin_collection:struct·new(type, field...) 解析 struct 原型签名、按字段类型校验实参、
  经 kvspaceCpTree 深拷贝原型子树生成 structref 实例(struct 签名/字段类型/默认值语义)。
- builtin.c/kv.c/kindexpr.c/runtime_internal.h:structref kind 路由、CpTree 胶合。
- const.h/builtin_kv.c:相应常量/内建接线。

未完成 WIP 防护性提交(runtime 侧),未跑全量回归。
- 删除旧 extern/wip 的 01-linked-list/02-tree/03-graph(占位),重写:
  00-point/01-fields/02-mutate/03-linked-list/04-tree/05-graph/06-list-reverse/07-list-local。
- README_CN:编译期→布局、描述措辞对齐。

未完成 WIP 防护性提交(示例侧),未跑全量回归。
struct WIP 基于 #219 前 master,教程注释仍用 #;rebase 后按现行 // 语法转换。
struct 赋值改浅拷:base + 一层成员(kv·cplist),不走 cpTree 整棵子树深拷——
成员子树不必整体克隆,一层足够且更快。parser/layout/runtime/runtime-rs 同步。
kvlangKvMkindex 传 cap=0(默认);教程演示预分配容量目录。
- docs/kvlang-ecosystem-architecture.{drawio,png}:从 deepx-design 迁入。
- stdlib/kvlang/reference/:五语言对齐参考材料(c99/go/typescript/rust/python,
  含 CPython 源码树、C99 标准 PDF 等),供 layout/runtime 行为对齐查阅。
- stdlib/kvlang/spec/:kvlang 形式化规范(词法/类型/求值,.kv 形态,站点可渲染)。
stdlib/kvlang/reference/(五语言对齐参考:CPython 源码树/C99 PDF 等 8.4MB)
不纳入 git,磁盘保留供本地查阅;spec/docs 仍入库。
- kindexpr ndim:裸类型匹配 ndim 改 `==1`(此前 `>=1` 误收多维)。
- parser:null 报错(空值只有 None);[] 数组匹配细化测试。
- runtime:随 spec(stdlib/kvlang/spec)对齐的语法/类型行为修正。
deepdive/26 篇删除,spec/ 卷(导言/词法/类型/kvspace模型/布局语义/runtime语义/
设计理由/附录,245 文件)承接为语言规范唯一事实源(spec+issue 驱动)。
spec 从 221 细碎章节文件收敛重组(80+73),按卷(导言/词法/kvspace模型/类型系统/
layout语义/runtime语义/设计理由/附录)整合;语言规范事实源仍在 spec/。
- key/value 存储与交换:字符串默认 utf8(变宽字节序列,禁码点索引)。
- utf32 开放给用户 kv 代码:定宽可索引的工作形态,utf8→utf32 显式转换。
- string 标准库只处理定宽(utf32);utf8 须先转 utf32 再处理。
- 三层面关系小结表。
- 运算符基础:三种→两种(= 写左 / -> 写右),注明「无 <-」历史删除说明。
- 词法单元:Arrow = 两种记号;词法组合规则去 `<-`。
- 全 spec 赋值示例 `x <- e` → `x = e`;stringkeymap/构造器/指令架构/控制流/附录语法同步。
- 指令架构表去重复行、prose 改两种方向。
字符串编码独立章编号到类型系统卷末尾(26-),替代先前无编号文件。
负例用例(error_cases/)提为仓库顶层目录,与 tutorial/(正例)平级,扩展至 79 例。
- site highlight:去 defrwfunc 关键词。
- 10-types 教程:签名说明 defrwfunc → rwfunc(kind 收敛)。
- tutorial/agent_eval.py、benchmark.csv:陈旧产物删除。
questions/ 为早期 README 习题集,已被 tutorial + error_cases 覆盖;error_test.py/
issue116_exp.py 为早期独立测试脚本,并入统一 test.py 后删除。
cond 求值统一经 int 判非零;删 kvlangXvalueAsBool 辅助。
@miaobyte
miaobyte merged commit 5e36464 into master Sep 7, 2026
1 of 4 checks passed
@miaobyte
miaobyte deleted the 199-struct branch September 7, 2026 06:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant