Repository navigation
Ecosystem gap supplement: launchers, naming, build dependencies, pack providers and runners - #940
Open
Sunrisepeak wants to merge 11 commits into
Open
Sunrisepeak wants to merge 11 commits into
Sunrisepeak wants to merge 11 commits into
Conversation
The record of the cross-platform port gaps, the runner model and the plan this pull request implements, with the findings made while implementing it (section 13).
… name (N29) A build dependency is a module of a build program, which the module rename does not separate. The rename was tried and failed on the requester's sources with a message about staging; the refusal now names both requesters, the merge's reason and the override line.
… format provider states - N20: the POSIX launcher names the system by the system table's uname column; a package that carries its runner runs only its own and exits 126 naming what it holds (POSIX and Windows). - N11: --all-programs of an ok image gives every program its own pair of launchers. - N30: mcpp::pack_program (protocol 19) states the program a pack-format provider assembles from; a provider that submits nothing has the warnings it stated in the refusal.
…r Windows programs - N9: the statement's program and library names are followed on a built-in row as on a platform's; the temporary link name keeps the file's extension, so DJGPP writes one file. - N16: [resources] is compiled for a PE row whose execution system is Windows, not for UEFI.
Sunrisepeak
force-pushed
the
eco/2026.11.16-gap-supplement
branch
from
November 15, 2026 11:28
7245760 to
2174213
Compare
…3, N26, N33) - [[platform.executes]] states which architectures a machine executes besides its own; a same-arch runner is built for the artifact's architecture there, and both package launchers fall back to it. linux-x86_64 executes i686. - A planned row the platform lists with its toolchain is built as a carrier. - A row's exceptions model applies where the project states none; wasm32-emscripten states wasm, and its long jump follows. - A row's companions (.wasm beside app.js) are removed before each link and staged when written; -sSINGLE_FILE=1 links and packs without a module. - [resources] compile where the system table states resources = true, which replaces the literal system name in the resource gate. - link-output moves aside only when the edge asks (--aside).
- A runner states enabled = false when its first use fetches a machine image or an emulator, or leaves state outside the build tree and the store. run refuses it with status 2 and test leaves the tests built and not run, naming [runner-not-enabled], what it installs and how to enable it, before anything is installed. - A table without cmd in config.toml or the project adjusts the runner below it; cmd, requires and enabled are one statement; the environment's MCPP_TARGET_<TRIPLE>_RUNNER_ENABLED enables it once; --runner <name> enables the runner it names. - A named runner takes the default runner's table and merge rule; longlived is a key of the table; a provider's runner states host and enabled. - The MinGW providers state Wine on linux-x86_64, same-arch, not enabled.
… a runner names (R2, N21, N27)
- mcpp::runner_spec states a runner as the table of data (protocol 19):
.arg(), .require(), .hosts(), host, longlived, exclusive, enabled; one
runner-spec payload, refused when not a runner or when the name is also
stated by the token calls. {pkg:<name>} names a program outside a
package's bin/, its package in requires.
- docs/30 and docs/41 state one lookup rule: name the program; requires,
then the graph's payloads, then PATH, never the current directory.
- On Windows a name with a directory and no suffix takes the system's
suffixes; a script the system starts through its command interpreter
(the system table's command-scripts, .bat and .cmd) is refused an
argument holding the interpreter's syntax.
- docs/04 states the order of the flag lists (measured); docs/24 states
the terminal under node (measured: a terminal read fails with EIO).
- The directive unit tests name protocol 19; the agents index is
regenerated; design records N38 for review.
…d together, a missing source named by its path is refused (#932, #936, #938) - mcpp test --guide reads the test frameworks from the resolved graph (resolve_graph: the phases of prepare_build up to the graph) and plans, scans and builds nothing; several members are resolved by configuration group and their frameworks united (collect_test_frameworks, shared with the plan). - mcpp test over several members plans a group's programs together, as mcpp build --workspace does; a member is planned alone only to attribute a failure. A shared module was compiled three times a run before. - A sources entry without a pattern that names no file is a scan error naming the table that states it. - Design record 13.4 (analysis) and 13.5 (N39, for review); docs 04, 08; e2e 1094, 1095, 1096.
- The android-ndk provider is two entries, one per architecture; the x86_64 one states a runner: dirun with the API 34 system image package's profile, the emulator and adb from their packages, same-arch, exclusive, not enabled by default. The aarch64 row states none: the emulator package serves no aarch64 machine. - A provider's runner states exclusive (generator, schema, statement). - e2e 653 (case and script): with no table the row's exception model (N26) catches; exceptions = false aborts at the throw and refuses a dependency that requires exceptions. - Unit: the Android row's runner data. Docs 41, SPEC-016 1.3, design.
Sunrisepeak
marked this pull request as ready for review
November 15, 2026 14:08
…before the build; design notes for op, N17 and N40 - single_file_unmade: the one reading of a named system before the build and of --systems all (a row this mcpp builds no program for, or a carrier where the platform's runner does not exist). A planned row the platform serves is built since N23, so a named --systems macos for an x86_64 image passed the pre-build check and was refused after the build (e2e 956 on macOS). - e2e sets 986: the pair without a carrier is said with its row. - Version 2026.11.16.1; CHANGELOG section. - Design record: op scope (runners that boot a machine enabled on request, hosted rows' runners as full providers), N17 located (openkal-dos#3), N40 for review.
…ee and warned of in a fetched package The scanner states the entries (unnamed_sources) and the prepare step decides their weight by whose tree the package is, the line state.editablePackage draws for a dependency's lints: a published package's tarball cannot be changed by its consumer, and refusing it would refuse a release that built before. e2e 1097 asserts the fetched side.
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.
This pull request implements the mcpp part of the ecosystem gap supplement (design record
.agents/docs/2026-11-15-ecosystem-gap-supplement-design.md, section 5). Each commit is one checkpoint and carries its own tests, specification clauses, English and Chinese documentation, and CHANGELOG entries. Review goes checkpoint by checkpoint, and the commits are kept when the branch is merged.PATH. N11: one launcher per program. N30:mcpp::pack_program(protocol 19), and a provider's stated reasons appear in the refusal[resources]applies only to Windows programsenabled, plus wine runner datarunner_spec,{pkg:},longlivedin data.bat/.cmd) and documentationx86_64-linux-androidruns in the Android Emulator on request (dirun and the API 34 image package's profile;exclusivefor a provider runner). e2e 653 follows N26mcpp test --guidereads the resolved graph and plans nothing. #936: a group's programs are planned together, so a shared module is compiled once. #938: a missing source named by its path is refused, naming its table (design record 13.4; N39 for review)The PR is a draft until every checkpoint is in and the full CI passes.
Closes #932, closes #936, closes #938.