静态读取豫言操作系统纯声明接口。
源码浏览已生成;不能解析的文件以纯文本展示,不表示通过类型检查。
# 豫言操作系统接口检查 本工具读取仓库里接口包的纯声明源文件(根目录 `豫言操作系统接口` 与 `豫言操作系统底层接口` 下的包)。整包调用为 `node 豫言操作系统/宿主/节点/宿主.cjs yy豫言操作系统接口检查.wasm 包描述文件路径 [实现文件路径 宿主或应用]`;单文件调用为 `node 豫言操作系统/宿主/节点/宿主.cjs yy豫言操作系统接口检查.wasm 接口文件路径 同目录包描述文件路径 [实现文件路径 宿主或应用]`。它复用编译器的词法与抽象语法解析,停在“类型声明必须紧接定义”的归并步骤之前;读取包描述文件的所有者、名称、完整版本与直接依赖,拒绝越过直接依赖的导入、同包重复声明和函数体。`。接口。豫` 默认由宿主提供,`。应用接口。豫` 由应用提供;指定实现文件时,按文件后缀确定的方向检查对应 `乃` 函数及其源级类型表达式。 **包的定位。** 工具须在仓库根目录运行。接口文件里的导入和清单里的依赖都按包的**短名**在包索引里查找:索引用构建基础的包发现从当前目录建立(与豫构相同,忽略 `.git`、`.yybuild`、`_v0` 与符号链接),第一次需要时才建,之后复用。所以仓库里的任何包(标准库、底层库、其他接口包)都能被解析,位置不再写死;此前只认自身、`标准库` 和以 `豫言操作系统` 开头的包,因而找不到 `底层库`。导入的包必须是本包自身或声明的直接依赖;索引里没有该名字或有两个同名的包都会报错,所有者由生成清单时的身份核对确认。导入的模块文件按后缀 `。接口。豫`、`。应用接口。豫`、`。豫`(普通库的模块,如标准库、底层库里的类型别名)查找;接口文与应用接口文同名,或接口文与源码同名,都是错误。 `node 豫言操作系统/宿主/节点/宿主.cjs yy豫言操作系统接口检查.wasm --清单 包描述文件路径 输出文件路径` 在整包检查通过后生成格式版本 4 的 JSON 清单,列出完整包身份、已解析的直接及传递依赖闭包、公开构造与函数声明、函数方向及源级签名。还对包描述、两种后缀的接口文件、包内规范文档和根目录公共文档记录逻辑文件名及 SHA-256 内容摘要。此步调用构建机的 `shasum -a 256`,缺少该命令会失败;摘要和包身份均不包含物理路径。递归解析时拒绝依赖环和同一所有者/包名的版本冲突。模块与摘要文件名按 UTF-8 字节排序;模块内声明维持源码顺序,函数表先按宿主接口、再按应用接口列出函数,各组按文件名及源码顺序稳定排列。 `node 豫言操作系统/宿主/节点/宿主.cjs yy豫言操作系统接口检查.wasm --核对清单 包描述文件路径 清单文件路径` 重新检查整包,再把当前生成的清单与指定文件逐字节比较。适合在构建前发现包版本、依赖版本、函数方向或签名漂移;目前不检查实际 Wasm 导入/导出,也不代替发行装载校验。 整包模式会检查两种接口文件的函数全集,拒绝同名函数或同名逻辑模块。指定实现文件时,其同目录 `实现接口。豫` 须声明公共接口的所有者、名称、完整版本与提供角色,检查器在签名比较之前核对。每个应由该实现提供的函数还须有 `者` 定义;单独写一个同名 `乃` 类型声明不能通过。 目前已检查跨文件类型引用的来源与声明先后;仍须补齐类型构造的完整语义检查、导入循环检测,以及各宿主同范围的发行装载验收。Node 发行包已经在启动前核对程序摘要、接口清单及 Wasm 导入导出形状。签名比对针对豫言源级类型表达式;实际 Wasm 导入/导出连接由后续绑定器验收,不以源级通过代替装载成功。
# 豫言操作系统接口检查 Node 发行包已于启动前核程序摘要、接口清单及 Wasm 导入导出之形;诸宿主同域之装载验收犹待全备。 此工具以豫言读仓中接口包纯声明之文(仓根「豫言操作系统接口」与「豫言操作系统底层接口」下之包),借编译器词法与抽象语法之术,而止于合声明定义之前,故无体之「乃」可存。又读同目录包之描述,验主、名、全版及直接所依,拒同包重名、越依与函数之体。「。接口。豫」之术宿主具,「。应用接口。豫」之术客具;实现之主、名、版、向从「实现接口。豫」核之,再比源级术型。凡当实现之术,须有「者」之体,徒有「乃」不可充数。定位诸包,须于仓根行之:所导之包与清单所依之包,皆按短名查包索引,索引循构建基础之包发现(同豫构,略 `.git`、`.yybuild`、`_v0` 及符号链接)自当前目录建之,首用乃建而复用,故标准库、底层库、他接口包皆可解,不复写死其所;昔唯识自身、标准库与以「豫言操作系统」起首之包,故不得底层库。所导者须为本包或直接所依;索引无其名或有二同名,皆拒;所有者由清单生成时之身份核对定之。所导模块之文,循后缀「。接口。豫」「。应用接口。豫」「。豫」(普通库之模块,如标准库、底层库之类型别名)而求;接口文与应用接口文同名,或接口文与源码同名,皆拒。跨文型之名源与先后已核,可生第四版 JSON 清单,尽录公开声明、所析依赖闭包及规范文之 SHA-256 摘要;依赖成环或同名异版者拒之。算摘要须构建机有 `shasum -a 256`;名循逻辑文件,毋取物理径。以「--核对清单」可复生而逐字节较之,察规范与既存清单之异。型构造之全义与逐术投影核对,犹待成之。详见[汉语稿](说明.汉语.md)。