Repository navigation
2026.11.12.1: system facts as data, one arrangement per provider entry, a base package's single reading, runners as provider statements - #924
Open
Sunrisepeak wants to merge 21 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
Member
Author
任务交接清单(2026-11-12)✅ 已完成已合入的上游
本 PR(#924)已落地的修复(head cf1492f 之后又推了行数门禁修复)
本地验证基线
并行交付
🔄 进行中
⏳ 未完成(按序)
关键坐标
|
…ads-on-host predicate
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.
What this release is
mcpp 2026.11.12.1. The branch began as "five rows the platform's own data serves" and was audited against the design it cited (2026-11-12): the cross row linked a C program only, a rewrite of the GCC link branch removed the C-library group of every gcc build over the host's payload, the request
aarch64-linuxchanged its answer on x86_64 hosts, and several branches on system names had entered the engine beside the tables meant to replace them. The branch is reworked on the design record.agents/docs/2026-11-12-ecosystem-architecture-optimization-design.md(section 15 records each item and the check that holds it).Changes
flags.cppmrenders the link model and does not infer again. A base package has one reading: a sysroot whose root carries a manifest is rendered as a sysroot; a base of another machine takes none of the payload's host run-time directories. The base's compiler run-time directory reaches the C linktests/unit/test_link_line_golden.cpp; e2e 1080 (fails on the previous head of this branch)aarch64-linux-gnukeepsglibc(native, 100) and gainsglibc-sysroot(linux-x86_64, base package, 40). A new entry does not change the answer of a request answered before it (SPEC-016 §4.6)tests/fixtures/target-rows.snapshot:aarch64-linuxanswers as in 2026.11.10.2 on every host; e2e 295, 1076loaderand carries no RUNPATH of this machinerunner = { cmd, hosts, requires }), the lowest tier of the runner statement;{sysroot}and{pkg:<name>};requiresinstalled on the first run or test. An artifact of another system is not started without a runner: "built, not run" before any spawn, one predicate for every row. The child-spawn and signal classification of the previous head is withdrawn[[platform.system]] name, uname; providersystem-headers,tier; platformrunner.built-as; rows stateloaderandexecution.host_can_servereads the providers'hosts; the single-file layout readsuname;--systems alltakes the system table and writes the pairs no program is built fortests/matrix/expected.tsv(one cell changes on linux-x86_64, measured locally)Triple::system_is_host()/loads_on_host(); loader names are read from rows; one resolution of a package reference[target.<sel>.abi] longjmp; refused when it andexceptionsstate two models; part of the configuration key only where declared.github/tools/check_system_names.py: the engine's sources name no more systems than the baseline; the counts fell against mainci:benchBehaviour changes
mcpp runandmcpp testno longer start an artifact of another system when nothing states a runner (exit 2, "built, not run", the runner declaration). A host that runs such programs through a registered interpreter passes--no-runneror declares the runner.Compatibility
Identity strings, output directories and
cfgresults are unchanged. The requestaarch64-linuxis answered as in 2026.11.10.2 on every host. The new manifest keys are additive; an earlier mcpp names a key it does not read and ignores it.abi.longjmpwas not released before.Dependencies of this pull request
xim:aarch64-linux-gnu-sysroot2.44.3 revision 3 (aarch64-linux-gnu-sysroot 2.44.3 revision 3; a recipe's own verify tests run for the recipes a change edits openxlings/xim-pkgindex#1146, merged): revision 2 could not link C++ or static programs.mcpplibs.openkal-platform0.27.0 (0.27.0: the runner states the identity it is built as on FreeBSD mcpplibs/openkal-platform#29): statesrunner.built-asfor FreeBSD.Not in this release
The design's later stages: the move of the e2e and bench suites to mtest C++ cases with the selection-driven CI, the canary matrix, the 32-bit class, DOS and UEFI. Section 15.3 of the design record lists them.