公告

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

文档 语言 Potato 形式对象

Potato 形式对象

Potato 不是语言。它没有语法,只有结构。它的位置在编译流程的输出端:每个编译单元产出一份机器可读的形式对象,描述这个单元的类型、布局、能力需求与契约。

json loment/build/<unit>.potato.json
{"unit": "ahci.flush",
 "potato": "v1",
 "language": "loment",
 "capabilities": [
   {"name": "blk_write", "domain": "disk[0..4]",
    "revocable": true, "on_revoke": "fallback"}
 ],
 "contracts": [{"pred": "hex64", "mode": "binary"}],
 "guards": 1,
 "excluded": []}

v0 与 v1

版本 覆盖 状态
v0 标量、数组、struct、枚举、布局、能力域 仍合法,可回放(冻结样本 demo.v0.json 持续回放)
v1 新增泛型与单态化实例、trait/impl、切片、str、ptr、()、guard 审计站点 7/7 自检 · 33 条反例全被拒 · 跨实现 50/50
版本策略: v0 对象永远合法——新版本发布不会让旧对象失效。这看起来是小事,但它决定了“回放”能不能作为一条长期判据存在。

校验分三层

查什么
结构层 顶层字段白名单(按版本)、unit/language/imports 形态、表内元素唯一、types 与 enums 共用一个命名空间
类型层 合法类型的递归定义;layout 字段只允许定宽整型,且 offset + width ≤ size、区间不重叠
语义层 能力域区间合法性、枚举载荷键、泛型参数、单态化实参匹配、trait/impl 方法集、guard 计数非负

反例完备性由 33 条变异保证:规范里每一条规则至少对应一条被拒绝的反例。这是防止“规范写得很严但校验器没实现”这类空隙的办法。

强制导出的三层都不可关闭

  • 编译器内部 —— emit_potato() 返回前调用独立校验器,有错即编译失败。
  • CLI 层 —— 要 --emit-rust / --emit-llvm 就必须同时给 --emit-potato,否则退出码 2。
  • 仓库层 —— lom_audit 要求每个示例都有一份逐字节一致的对象,且通过独立校验器。
跨实现一致性(M53): 同一份形式对象必须被两份独立实现判成同一个结果——FujoOS 侧的 potato.py 与 LinuxFUAI 侧的 potato_verify.py(按规范独立实现,不 import 前者)。50 条对照全部一致。