Skip to content

Assert the positions __config_site declares, and repin the C library - #8

Merged
Sunrisepeak merged 1 commit into
mainfrom
feat/capability-completeness
Aug 27, 2026
Merged

Assert the positions __config_site declares, and repin the C library#8
Sunrisepeak merged 1 commit into
mainfrom
feat/capability-completeness

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

__config_site is this package's claim about the environment beneath, and a
claim that drifts from what the port provides fails neither the build nor the
link: it produces a program that takes a path the environment cannot support and
reports nothing. _LIBCPP_HAS_TERMINAL is the position where that already
happened once.

Read against each other, the two configurations agree: the hosted one declares
FILESYSTEM, RANDOM_DEVICE and TERMINAL and builds the sources behind each;
the bare-metal one declares none of the three and excludes them.

Nothing in examples/cxx exercised any of them. It does now.

observation why it is written that way
std::filesystem — a directory created, a file written, enumerated, copied, its size reported, the whole removed the C++ face of openkal.fs
permissions and create_symlink refused, not ignored kal_node_info carries a boolean writable rather than a mode word, and SURFACE.txt has no operation that creates a link. ⚠️ A probe checking only the supported operations would pass just as well for a port that silently accepted these two — which is what openkal-linux#13 described as "expected 0600, got 0777"
std::random_device — three draws that differ "a number was produced" is satisfied by a source stuck at a constant
hidden, weak, weak_alias as the program's own identifiers the C++ half of openkal-musl#13. In C++ hidden was given C linkage rather than emptied, so it failed differently from the C case and would not have been caught by it. The report came from a C++23 workspace

Measured here: 17 observations held, none failed.

Repin

openkal-musl moves to 0.5.0, which is where the routes those refusals are
the other side of now live.

And the manifest's comments are English

The outline-atomics and function-multi-versioning notes were written in Chinese;
every other comment in this ecosystem is not. They are translated, unchanged in
content.


This is one change across seven repositories, and every branch carries the
same name.
Each repository's continuous integration substitutes its siblings'
working trees taken from the branch of the name under test, so the graph only
holds together when they agree.

repository what it carries
openkal-musl the socket, datagram, readiness and image-copying routes, and four probes
openkal-macos the five interfaces 0.8 added
openkal-windows four of the five; openkal.space declined in terms
openkal-linux the conformance run selects the optional interfaces, which nothing did
openkal-llvm-runtime __config_site's claims asserted by a program, and the C library repinned
openkal the portable example's pins, and §9 of the plan
sbase ninety-seven utilities above the new C library

The specification does not change. No interface was added, none was altered,
and SURFACE.txt is untouched — every capability below is composed from atoms
openkal 0.8 already had.

`__config_site` is this package's claim about the environment beneath,
and a claim that drifts from what the port provides fails neither the
build nor the link: it produces a program that takes a path the
environment cannot support and reports nothing. `_LIBCPP_HAS_TERMINAL'
is the position where that already happened once.

The hosted configuration declares FILESYSTEM, RANDOM_DEVICE and TERMINAL
and builds the sources behind each, and the bare-metal one declares none
of the three and excludes them --- so the exclusions and the switches
agree. Nothing in examples/cxx exercised any of them.

It does now, and every observation is written so that it can fail:

  std::filesystem   a directory created, a file written, enumerated,
                    copied, its size reported, the whole removed
  permissions and   ⭐⭐ REFUSED, NOT IGNORED. `kal_node_info' carries a
  create_symlink    boolean `writable' rather than a mode word, and
                    SURFACE.txt has no operation that creates a link.
                    A probe checking only the supported operations would
                    pass just as well for a port that silently accepted
                    these two --- which is what openkal-linux#13
                    described as "expected 0600, got 0777".
  std::random_device three draws that DIFFER. "A number was produced" is
                    satisfied by a source stuck at a constant.
  hidden, weak,     the C++ half of openkal-musl#13. In C++ `hidden' was
  weak_alias        given C LINKAGE rather than emptied, so it failed
                    differently from the C case and would not have been
                    caught by it. The report came from a C++23 workspace.

Measured here: 17 observations held, none failed.

openkal-musl moves to 0.5.0, which is where the routes those refusals
are the other side of now live.

Also translates the outline-atomics and function-multi-versioning notes
in the manifest into English, which is what every other comment in this
ecosystem is written in.
@Sunrisepeak
Sunrisepeak merged commit 3ab4d8f into main Aug 27, 2026
11 of 13 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