状态:源级接口草案 0.1。这里是仓库根目录下的独立规范树,只含接口包、纯声明和规范文字;各平台后端与 shim 在别处。Linux x86-64、arm64 与 macOS arm64 的 45 个底层函数已有后端,裸机已有用于验证与运行客体的后端;Windows 后端仍在规划中。GC 与 WASI shim 已部分改接,跨平台全量一致性仍待验收。设计缘由与整体方案见[总体架构](../豫言操作系统/文档/豫言操作系统总体架构.汉语.md)。文言本见文言版。
是什么
一套不含垃圾回收的操作系统接口:值只有 32 位整数,数据以(地址,长度)与出址传递,每个函数返回状态码。它是各平台与上层之间的“窄腰”:Windows、macOS、Linux 和裸机各实现一份后端,WASI shim 与 GC shim 架在它上面。
它只有两个使用者:WASI shim 与 GC shim。应用不直接调用它:非 GC 应用用 WASI,GC 应用用[豫言操作系统接口](../豫言操作系统接口/总纲.汉语.md)。
与 GC 接口的关系
| | GC 接口(豫言操作系统接口) | 底层接口(本树) | | --- | --- | --- | | 值 | 豫言值类型:字符串、列、变体、资源…… | 32 位整数 | | 编译模式 | 高级(有垃圾回收),依赖标准库 | 底层(无垃圾回收),依赖底层库 | | 使用者 | 应用 | WASI shim、GC shim | | 实现 | 宿主适配包(豫言写)与宿主库 | 平台后端实现包(豫言写),每平台一份 | | 错误 | 变体结果与共用的系统错误 | 状态码(WASI errno 的子集) | | 授权 | 授权表、目录权、显示面等 | 启动时的初始句柄表(预开目录) |
两棵树互不依赖。底层接口里没有的东西(HTTP、JSON、日期拆分、路径规范化、当前目录)由 shim 用豫言实现,不进后端。
文件与身份
- 每个能力组是独立的包
豫言操作系统底层<能力>,放在目录底层<能力>/里:名称。包。豫(「编译模式」者『底层』也。,依赖底层库与所需的本树其他包)、若干模块。接口。豫、规范.汉语.md与规范.文言.md。 - 目录名等于包名去掉
豫言操作系统前缀:现行检查器据此定位兄弟包,本树不需要另改定位规则。 - 接口文件的写法沿用 GC 接口的[接口文件规则](../豫言操作系统接口/接口文件规则.汉语.md),差异与本树的通用规则见调用约定:签名里只有
整数(返回值可以是有),类型来自底层库的基础,不写函数体。 - 同一依赖闭包内编译模式必须一致(豫构检查),所以本树的包不会混进 GC 类型,也不能依赖标准库。
- 目录根的
豫言操作系统底层接口。包。豫是本树的父包,说明文件就是本总纲:它用「包含包」按“首批能力组”表格的顺序登记全部底层接口包,各包用「包含在」指回本包(规则见[包系统](../应用/豫构/包系统.汉语.md)“层级包”一节)。父包与库类型子包须同编译模式,所以父包也声明底层。父包不含模块,用于按层级发现。新增能力组时,在表格与父包「包含包」的相同位置登记,并在新包写「包含在」。
首批能力组
| 包 | 语义范围 | 函数 | 性质 | | --- | --- | --- | --- | | 底层基础 | 状态码、时钟、随机、命令行参数与环境、退出、中断、平台探测 | 11 | 核心 | | 底层句柄 | 句柄的读写、寻址、同步、等待、管道 | 13 | 核心 | | 底层文件 | 按目录句柄授权的打开、状态、目录读取与增删改名 | 9 | 核心 | | 底层网络 | TCP 监听、连接、接受 | 7 | 可选 | | 底层终端 | 终端模式与尺寸 | 2 | 可选 | | 底层进程 | 运行程序、取退出码、终止 | 3 | 可选 |
共 45 个函数。“可选”指平台可以没有:没有时所有函数返回 58(不支持),shim 据此降级。显示与输入预留为 豫言操作系统底层显示,v2 再做。
依赖关系:底层基础 ← 底层句柄 ← {底层文件、底层网络、底层终端、底层进程};所有包依赖 底层库。
检查
- 接口检查器
yy豫言操作系统接口检查已改为按包索引定位包(原先只认自身、标准库和以豫言操作系统开头的包,找不到底层库;见[检查器说明](../豫言操作系统/应用/豫言操作系统接口检查/说明.汉语.md)),本树可以直接检查:node 豫言操作系统/宿主/节点/宿主.cjs yy豫言操作系统接口检查.wasm 豫言操作系统底层接口/底层文件/豫言操作系统底层文件。包。豫,--清单与--核对清单同样可用。修复前后对全部 GC 接口包与适配清单做过对照,输出逐字相同。 - 状态码、标志、类别号等常量的统一机器可读定义仍待完成;现有后端和 shim 各持所需常量。
尚未做
- 一致性样例与测试骨架;
- Windows 后端、GC 与 WASI shim 的余下改接及全平台一致性验收;
- 显示与输入;设文件时间、建链接、分散/聚集读写、文件锁等后续候选(见方案第六节)。