公告

FujoOS公布日延期,以仓库发布为准

文档 语言 Loment 语言

Loment 语言

造一门新语言最大的障碍不是设计,是语料:没有语料的语言,大模型写不了,而今天写系统的人(和 Agent)大量依赖模型辅助。Loment 对这个问题的回答很直接——不新造语法。

策略: Loment 的表面语法取 Rust 的严格子集,加少量显式扩展。模型的 Rust 先验可以直接迁移,于是“零语料”这道坎被绕过而不是被硬闯。先例是 C++ 之于 C、TypeScript 之于 JS、Kotlin 之于 Java——新意落在语义与工具上,不落在语法上。

设计目标(按优先级)

  • 布局与 ABI 是一等公民 —— 显式 layout,编译期 ABI 校验,禁止隐式布局。这条直接消灭了手写 ELF 头与手写机器码那类工作。
  • 确定性 —— 无 GC、显式所有权、no_std 优先。内核里不能有“偶尔停顿一下”的东西。
  • 能力域语法化 —— capability 是语言构造,A1–A4 可以在编译期静态检查。见下一节。
  • 语义模型导出 —— 每个编译单元产出可审计的 Potato 形式对象。这是硬性的,不是可选优化。
  • 跨后端 —— 先做 transpile-to-Rust,再谈 LLVM 与自研后端;可行性判据是“能否不写后端就跑起来”。三条都跑通了:Rust 转译与 LLVM IR 双路径差分逐值一致,自研原生后端 lomelf 把同一份 IR 链成 ELF 或 PE——链条上已经不需要 C 编译器。
  • 内核内可用 —— 不依赖宿主,与既有的汇编器 / 链接器 / 编译壳路线衔接。
  • 能调到别的语言 —— extern fn(0.1.4 Pre2 加进来):C ABI 那一族用 --link 静态链进来,运行期那一族走进程桥。纯 Loment 程序不受影响——它仍然是 freestanding 的。见 FFI

三层分期

是什么 状态
L0 接口层:.lom 单一真源 → 生成器 → 多语言产物 已落地
L1 系统语言:Loment 本体,转译到 Rust 起步 0.1.4 Pre2
L2 平台母语:SDK 用 Loment,内核自带工具链 远期

写在前面的一条止损线

如果 L1 在三个月内无法与 Rust 原版逐位对齐,就回退到“L0 + 代码生成”路线,L1 归档。这条线在立项文档里就写定了,不是事后追认——它的作用是在做不下去时,让放弃变成一个已经决定过的动作,而不是一次情绪化的止损。