公告

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

文档 语言 能力域即语言构造

能力域即语言构造

这一页是语言与 FUAI 的接缝。如果能力只是一组运行时检查函数,那么“这个程序需要哪些能力”就只能在运行时才知道;如果能力是语言构造,它就能在编译期被声明、检查、并导出成形式对象。

loment 作者面
// 声明一块可撤销的能力域
capability blk_write: disk[0..4] revocable {
  on_revoke => fallback
}

export fn flush(req: FlushReq) contract(hex64) {
  guard blk_write(idx)   // 越界在编译期拒绝
  ...
}

四件事由同一条声明推出

发生时机 产物
编译期边界检查 编译时 越界访问直接编译失败
运行期 trap 运行时 动态越界落到 trap,而不是静默继续
审计计数 每次使用 guard 站点落审计(A2 的输入)
域表 编译时生成 CapDomain 常量表,供内核执行

这四件事合起来,让 A1–A4 从“运行时可能会检查”变成“离线就能判定”。其中 A1(无越权执行)和 A4(可撤销)直接来自这条声明的两个字段,A2(可审计)来自 guard 站点,A3(模型缺席仍运行)来自“没有申请 AI 能力空间”这一条可检查的性质。

实测过的两件事

  • 能力域模糊测试 —— 120 组随机域与索引,无一次越权放行。
  • 越界声明编译期报错 —— excluded 出界声明强制生效,不是警告。
延伸到内核: 域表由形式对象生成后交给内核执行;内核侧的能力表与审计环见 AI 层 · 能力域与审计环