Repository navigation
2026.11.11.1: five rows the platform's own data serves - #924
Open
Sunrisepeak wants to merge 15 commits into
Open
Sunrisepeak wants to merge 15 commits into
Sunrisepeak wants to merge 15 commits into
Conversation
The cross rows read their payloads, not a host list: aarch64-linux-gnu takes its C library from the sysroot payload its row declares, and when such a base package serves the target the host contributes nothing to the link -- the base's own -B/-L words, its loader named sysroot- relative, its compiler_runtime_dir resource directory on the C link exactly as on the C++ one, and --sysroot naming the package root the payload's own manifest states it is. host_can_serve reads the declaration instead of refusing every arch-crossing glibc target; the runtime-closure rules state the premise they always had (the loader is the payload's; a process on this machine is not the one that would load it). Measured end to end: a plain C program builds as a dynamic aarch64 ELF and runs under qemu-aarch64 -L <payload> with its exit code intact (e2e 1076). A row whose system the graph supplies compiles its resources with the Windows headers the rows declare (e2e 1075); a program of another system that dies at once names the runner and returns its status unchanged (1077); pack --systems all answers with the platform's own data, FreeBSD's runner among them (1078, 986); longjmp joins threads and exceptions as the third abi member, the Emscripten long-jump model (1079). Stability-neutral: every default behavior is unchanged; each capability appears only where it previously failed. No host is named in the engine.
The corrective r2 repack lands in the package index under the same version key (openxlings/xpkgindex-update#9), so no pin or doc names -r2 and the arm/macos/windows legs resolved a package that does not exist. runner_lookup's SIGBUS cases lose their #ifdef guards: POSIX defines the signal everywhere mcpp builds, and the include gate keeps module code conditional-free.
The engine includes no headers (the include-region rule); the C library's macros arrive as constants through mcpplibs.mwrap.libc, so the death classification takes the three signals the wrap carries. SIGBUS is not among them -- its typical cause here, a stack the kernel never grew, arrives as SIGSEGV on the systems that report it.
- polyglot holds FreeBSD's program beside Linux's (G5 made --systems all name it; the assembler's whitelist was the half that lagged) and refuses a system it has no uname pattern for, not FreeBSD - 299 accepts a row whose payload package this home cannot install: the row resolved, the package is the index's to give, and the refusal's subject names the row -- the claim is completion, as it always was - the MinGW headers are read only where the toolchain's own include sources found nothing, standing payloads before fetched ones: an MSVC or GNU-ABI project no longer fetches a payload its link will not read (measured on the upgrade lane: mingw-w64-sysroot, 21.3 MB, first run) - pack_modes states 'all' host-aware: the machine asking is one of the facts, and the suite runs on four hosts - 1076 is excused in the coverage table: no hosted shard installs the sysroot payload, and the test skips rather than guesses
…cketed row The resource scan resolved the MinGW-w64 sysroot payload unconditionally (gdb, a fresh home, why --target x86_64-windows-gnu): the compiler step had been gated since the last push, the scan step had not, so every PE prepare fetched 21.3 MB its link would not read -- measured on the upgrade lane's first run. Both sites now share one sentence: llvm-rc, a row whose Windows headers are not the machine's own (a located MSVC SDK states that they are), the toolchain's own include sources found nothing, standing payloads before fetched ones. 299's row extraction now also reads the bracketed subject of the base refusal ([target.aarch64-linux-gnu].sysroot = ...), the form the payload refusal takes; the single-quoted form it alone read before stays first.
…t systems consume A synthesis of what the merged round established and what the families after it use: rows, payloads, runners as data; the ABI layering beneath one C library ported once; corrective revisions; the disk-image asset class and its harness; the semantic plane stated as the program's own. No behaviour changes -- this names what is already gated green.
…ne architecture as its reference The version the PR will release under is dated for its merge day, and every comment that cites its introducing release follows it. The architecture record names what the round established and what the families after it consume: rows, payloads and runners as data; one C library above one kernel-ABI specification, ported once; layer vocabulary the rows, payloads and requirement side already share; corrective revisions; the disk-image asset class and the harness that boots it; the semantic plane stated as the program's own. It adds no behaviour -- it names what the gates already hold green.
The exception belonged to the window where no hosted shard could install xim:aarch64-linux-gnu-sysroot; the index PR is merged, every shard that declares the payload's capabilities runs the test for real, and a test that runs does not belong in the table.
…tes through the flags it renders The key is a contract between releases: an engine of one release finds a project's graph current through it, and 1068's inner build -- the subos's own engine -- is that reader by design. A field for the new member made every plan another release wrote look foreign, and the self-host shard measured it twice (1068, 1069). The member needs no field: it reaches the compile line through dialect_cxxflags, which the key already lists, and 1079 round-trips it unchanged. Threads and exceptions keep their fields -- they are switches that render no flag of their own.
…: the clang-tidy 400-line gate under src/build/prepare (the predicates the block already named)
…ership gate reads substrings
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
2026.11.11.1 — five rows the platform's own data serves
The cross rows read their payloads, not a host list
aarch64-linux-gnutakes its C library from the sysroot payload its row declares (xim:aarch64-linux-gnu-sysroot, glibc 2.44 with the kernel headers, libgcc and libc++ inside; the package root is the sysroot), so the row is built wherever that payload is published — an x86_64 Linux host included — andhost_can_servereads the declaration instead of refusing every arch-crossing glibc target. When such a base package serves the target, the host contributes nothing to the link: the payload's own-B/-Lwords, its loader named sysroot-relative, itscompiler_runtime_dirresource directory on the C link exactly as on the C++ one,--sysrootnaming the package root the payload's own manifest states it is — and the host's runtime directories,-latomicand runtime-closure rules all step aside the way they already did for graph-supplied C libraries (measured on the way: the host payload's x86_64libatomic.aresolved ahead of the target's and the linker called it incompatible with aarch64linux). A plain C program cross-builds as a dynamic ELF and, underqemu-aarch64 -L <payload>, runs with its exit code intact (e2e 1076; the recipe —aarch64-linux-gnu-sysroot2.44.3 revision 2 — lands in the package index beside this release).The Windows resource compile finds the Windows headers a row declares
A row whose system the graph supplies —
x86_64-windows-muslover openkal — has no paired payload, and its llvm binary carries no Windows headers, sowinres.hreached neither include source the toolchain states. The MinGW-w64 sysroot payload a platform row declares for that architecture's GNU-ABI identity has them; the resource compile now resolves that payload'sincludethrough the row's own channel and probes relative to what it resolves to — never PATH (e2e 1075). The default rows keep exactly the include sources they had.A program of another system that dies at once names the runner
The kernel maps a static ELF of its own architecture without reading the system the ELF names — FreeBSD's OSABI byte is not a question Linux asks — so a FreeBSD artifact on a Linux host starts, states its first kernel interface call in FreeBSD's vocabulary, and dies by signal, with
128 + signalthe only fact distinguishing that death from a crash in a working program. Such a launch now runs as a child (the engine, having become the program on POSIX, can observe nothing about itself), the death is named with the[target.<triple>]runner declaration, and the status is returned unchanged: 139 stays 139 (e2e 1077). Native and cross-arch launches keep the launch they always had; a native signal death is the program's own and is never interpreted.pack --systems allanswers with the platform's dataThis machine's system, every system a platform defines a row of for the architecture, and every system the platform's runner states a host of (
runner.hosts) — FreeBSD's among them. A FreeBSD runner is built as<arch>-freebsd-muslover the platform's hosted arrangement, the same static identity a FreeBSD request takes (e2e 1078). Without--systemsthe pack is unchanged: the packing machine's runner alone.longjmpjoinsthreadsandexceptionsin[target.<selector>.abi]How
sigsetjmp/siglongjmpcross the WebAssembly boundary on an Emscripten row:"wasm"renders-sSUPPORT_LONGJMP=wasmon every C and C++ translation unit and the link;"js"states the toolchain's default model. Declared on any other row the member is refused naming that fact (e2e 1079). With the default JavaScript model a non-local exit over two call levels reads past the module's stack and dies at run time while the build succeeds — the flag is what makes the pair work. A deep exit also wants-sSTACK_SIZE; that is a project knob, not an ABI fact, and the engine does not render it.Stability-neutral: every default behavior is unchanged; each capability appears only where it previously failed. No host is named in the engine — the hosts a row serves are data in the platform table.