用 Rust 自写静态类型语言 Lumen:下一步加带数据的 enum 与 match
Abhishekcur · x · 2026-09-30
作者正在用 Rust 从零构建一门小型静态类型语言 Lumen(词法、解析、类型检查、降到类型化 IR、优化、跑在栈式字节码 VM 上,已有 structs/tuples/arrays/int 与 bool 的 match)。目前缺两块:无法表达"值是几种形状之一"(无 enum/option),也无法构造递归数据结构(类型检查通过但造不出来)。
计划:
- 先解除数组只能存 i64/f64/bool/str 的限制——运行时数组只是共享 vec,structs 本就存成数组,瓶颈在类型系统的小而可复制的 type enum;可像 tuples 一样按 index interning 绕过。
- 然后加携带数据的 enum + match 拆包,先不做泛型(手写 maybeint,写第三个才加泛型),仅支持 flat pattern,穷尽性检查即"每个 variant 或 wildcard";enum 降级为 tag+fields,match 变成对 tag 的 if/else。
- 作者预测后端(codegen/VM/verifier)完全不用改,并提前写下预测以便验证错多少。
- 已知坑:引用计数下递归数据会产生循环泄漏,暂不修。
最终目标是用 Lumen 自己写 Lumen 的 lexer。
「编程与Agent」频道最新
- 一名操作员同时指挥 7 个 AI agent,swarming 编排被称跨域解决方案 — sethlazar · 2026-09-30
- 开发者用 Claude Sonnet 5.5 做出夜店保安扔人小游戏 — chongdashu · 2026-09-30
- DHH 用 AI 提速引争议,开发者:别用理解换速度 — georgemillo · 2026-09-30
- 用 Weaviate + Postgres 把千页保险文档两分钟变成专属知识库 — CShorten30 · 2026-09-30
- Think 完成大版本打磨:一周合入 50+ 稳定性改进 — threepointone · 2026-09-30
- AI 游戏开发最后一块拼图:自动绑定与动画被攻克 — anselm · 2026-09-30