Skip to content

Follow openkal 0.8, and record why the five new interfaces are absent - #8

Merged
Sunrisepeak merged 4 commits into
mainfrom
feat/openkal-0.8
Aug 27, 2026
Merged

Follow openkal 0.8, and record why the five new interfaces are absent#8
Sunrisepeak merged 4 commits into
mainfrom
feat/openkal-0.8

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

Paired with mcpplibs/openkal#13.

This machine provides none of the five interfaces version 0.8 adds, and each absence has a reason rather than being an omission:

Interface Why it is absent here
net, datagram no network
space no memory management unit to copy an address space with
timeout no second execution context to bound a wait against; an operation here either completes or does not, and a bound would report an expiry that could never occur
terminal the console has no mode this firmware exposes

Clause 6.1 makes an interface an implementation does not provide absent at the link, so a program requiring one is refused when it is built rather than when it runs. The README states this beside the reasons already recorded for fs, process and task, so that a reader asking why finds the answer where the other answers are.

`xim:glibc` 的 `latest` 从 `2.44` 移到了 `2.44.2`。载荷目录按请求**解析成**的版本
命名,而 RuntimeBinding 带的是**声明的**版本 —— 而一个已发布的 mcpp vendor 进自己
沙箱的那份 xlings 仍然声明 `2.44`。于是干净机器装出 `2.44.2`,工具链 fixup 要
`2.44`,构建在编译任何东西之前就停住:

    error: selected RuntimeBinding glibc@2.44 requires payload
           '.../xpkgs/xim-x-glibc/2.44', but it is not installed

⚠️ 在每一台**新**机器上出现,在任何已存在的机器上都不出现 —— 所以开发机看不见。
索引的 `pkgs/g/glibc.lua` 把这次失败逐字记着,并给出规则:
「The index is DATA and the client is a PROGRAM: the consumer ships first。」

## ⚠️ 我先试过 bump xlings,撤回了

把 `XLINGS_VERSION` 提到 2026.8.27.1 会让**沙箱里那份** xlings 被换掉
(mcpp 的 `acquire_xlings_binary` 在 pin 前移时更新它),绑定于是**前移**到
`glibc@2.44.2`,而已经装好的是 `2.44` —— 请求比已装的**更新**。那是更糟的一侧:
接受一个更旧的载荷去回答更新的请求,等于静默用上索引明说
「IT IS NOT THE ONE TO INSTALL」的那份(带 mcpp#484 的 preload 缺陷)。

⇒ 保持 xlings 不动,把缺的那个载荷直接装上。

⭐ 待 mcpp 2026.8.27.1(mcpp-community/mcpp#515)发布后移除:它接受
「版本精化了请求」的已装载荷,从它引导就不需要这一步。
This machine provides none of them, and each absence has a reason rather than
being an omission: no network for net and datagram, no memory management unit to
copy an address space with for space, no second execution context to bound a wait
against for timeout, and a console whose settings the firmware does not expose for
terminal.

Clause 6.1 makes an interface an implementation does not provide absent at the
link, so a program requiring one is refused when it is built rather than when it
runs. The README states this beside the reasons already recorded for fs, process
and task, so that a reader asking why finds the answer where the other answers
are.
mcpp refuses a graph in which one package reaches a dependency by version and
another by git:

    dependency 'mcpplibs.openkal' is requested as both a version dep (by 'hello')
    and a git dep (by 'mcpplibs.openkal-<this>@path'). Pick one.

That is the right refusal --- two forms can name two different trees --- and it
means an example inside a repository must follow that repository's own
declaration while a change spanning repositories is in flight. The example named
a released version while the package beside it followed a branch.
openkal 0.8.0 is published and resolvable from the index, so the manifest names
it by version rather than by branch --- including the example's, where a branch
would hand a reader a reference that moves.

The engine pin moves to mcpp 2026.8.27.1 and the repository variable
MCPP_SOURCE_REF is cleared, so what this repository tests is the engine a user
installs.
@Sunrisepeak
Sunrisepeak merged commit eafe41f into main Aug 27, 2026
5 of 6 checks passed
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.

2 participants