FUJR 容器
ELF、PE、Mach-O 都是 CPU 的执行格式。FUJR(.run)不是——它是这个项目自己的打包容器,用来把程序、资源与权限声明装在一个文件里。
结构
| 节 | 内容 |
|---|---|
| MAGIC | 容器魔数,用于快速识别与拒绝。 |
| MANIFEST | 权限与能力声明:api.subsystems、文件系统名字空间、网络白名单。这是“打包即权限”的载体。 |
| EMBED | 内嵌载荷。首行是 shebang 时按 .shell 处理。 |
| DATA | 资源节,最多 8 项。模型卡(M31)就走这里。 |
| FNV | 校验和。 |
工具
| 工具 | 用途 |
|---|---|
| tools/fujopack.py | 打包成 .run |
| fujorun | 作为 initrd 的装载器,支持多模块 |
| fujopack / fujorun Rust | 同一格式的 Rust 实现 |
这就是那 39 KB 的由来。
FUJR 容器此前有五处平行实现,合计约 39 KB 代码,改一处要记得改四处。它是 L0 单一真源要收拢的第一批目标之一——收拢之后,容器布局只声明一次。见 L0 一节。
为什么值得单独存在
因为“程序”和“程序被允许做什么”在这套设计里是同一件事的两面。把它做成容器而不是配置项,意味着权限声明会随程序一起分发、一起签名、一起被拒绝——而不是靠运行时读一个可能不存在的配置文件。
相关:
.run 与 fujo-sandbox 的关系见 架构 · 进程与隔离;L0 收拢的细节见 语言 · L0 单一真源。