Skip to content

0.15.0 --- the interfaces this implementation provides are stated, and the statement is the artefact's own answer - #29

Merged
Sunrisepeak merged 2 commits into
mainfrom
the-interfaces-this-implementation-provides
Sep 20, 2026
Merged

Sunrisepeak merged 2 commits into
mainfrom
the-interfaces-this-implementation-provides

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

openkal 的规范不命名接口集合:clause 3.3 撤回了它命名过的唯一一个(hosted),理由是"一个描述环境类别的名字会被没有人想到过的那个环境证伪",而它在自己的生态里一个发布周期内就被证伪了。替代做法是由包逐条列举;构建工具在依赖解析时把这份列举与消费方自己清单里的 requires-interfaces 比对——那是 clause 6.2 列出的三个时刻里的第一个,也是"这个程序可不可以在这个实现上构建"最早能被回答的时刻。

改动

[kernel-abi] provides-interfaces 列出本实现提供的十五个接口。

它是生成的,由 check-surface.sh --toml 产出,CI 重新生成并与产物 diff。这不是同一个事实的第二份推导——它就是 clause 9 的 surface 比对早一步停下,所以这份列表和那个检查不可能给出不同的答案。

一个从它所描述的东西派生出来的声明,不可能与它不符;一个新增了接口的实现,也不可能忘了说。

向后兼容

早于这个键的引擎把 [kernel-abi] 读成未知顶层表并忽略它(本机实测 mcpp 2026.9.17.1 静默接受),所以这份清单在它此前能加载的每个地方照常加载;解析期检查的缺席,正是那个版本本来就有的行为。

判据

CI 新增一步:重新生成并 diff。本机实测 diff 为空。

Sunrisepeak and others added 2 commits September 20, 2026 18:53
…d the statement is the artefact's own answer

openkal's specification names no set of interfaces: clause 3.3 withdrew the
one it had named (`hosted`) because a name describing a class of environment
is falsified by an environment nobody had in mind, and that one was falsified
inside its own ecosystem within a release. Enumeration by the package replaced
it, and a build tool reads the array at dependency resolution against the
`requires-interfaces` a consumer states --- the first of the three times
clause 6.2 tabulates, and the earliest at which "may this program be built
against this implementation" can be answered.

`[kernel-abi] provides-interfaces` lists the fifteen this implementation
provides. It is GENERATED, by `check-surface.sh --toml`, and CI regenerates
and diffs it against the objects. That is not a second derivation of the same
fact: it is clause 9's surface comparison stopped one step earlier, so the
list and the check can never answer differently. A declaration derived from
the thing it describes cannot disagree with it, and an implementation that
gains an interface cannot forget to say so.

Backward compatible: an engine that predates the key reads `[kernel-abi]` as
an unknown top-level table and ignores it, so this manifest loads unchanged
everywhere it loaded before, and the absence of the resolution-time check is
the behaviour that release already had.

Co-authored-by: Claude Code <noreply@anthropic.com>
openkal-linux's CI checks the specification out at a branch matching this one
where it exists, which is how a cross-repository change is measured before
either half merges. The specification's --toml mode lives on that branch.
@Sunrisepeak
Sunrisepeak merged commit 9ef9720 into main Sep 20, 2026
2 checks passed
@Sunrisepeak
Sunrisepeak deleted the the-interfaces-this-implementation-provides branch September 20, 2026 11:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant