Skip to content

2026.10.10.1: the workspace prefix carries the meaning, one writer per action output, module roles from declarations, Termux - #792

Merged
Sunrisepeak merged 32 commits into
mainfrom
release/2026.10.10.1
Oct 10, 2026
Merged

Sunrisepeak merged 32 commits into
mainfrom
release/2026.10.10.1

Conversation

@Sunrisepeak

@Sunrisepeak Sunrisepeak commented Oct 9, 2026 •

Copy link
Copy Markdown
Member

Release 2026.10.10.1. Design: .agents/docs/2026-10-10-one-source-one-meaning-design.md (revision 6).

Workspace: the prefix carries the meaning (#785, #786)

  • [workspace.toolchain], [workspace.indices], [workspace.profile.<name>], [workspace.target.<selector>] (with .build, .abi, .runtime, .xlings.workspace) and [workspace.xlings] mirror the tables of the same name and are read by the same reader (parse_document over the document under workspace.). A table without the prefix describes its own package.
  • Merge rule by key (W3): declared scalars stay the member's, lists put the workspace first, named tables merge key by key, conditional rows are inherited ahead of the member's. Package-only keys and unknown [workspace] tables are refused.
  • The root's own tables still reach members by position, unchanged, in mcpp.pm.compat.workspace_position, with a manifest/workspace-position warning naming the canonical spelling (removed in 1.0.0). W7 warns about package tables on a root without [package] (--strict: error). A note asks for the mcpp floor when the layer is used.
  • Members are grouped by their configuration as it evaluates for the target; the virtual root carries a member's conditional dialect_cxxflags/.abi rows (R1b: DIAL=0 → DIAL=2).
  • mcpp.manifest.key_registry: the class of each key; the parser's [build] and conditional-build known keys, the shared conditional keys and W7's package tables are derived from it.
  • mcpp publish writes the layer into the member's own tables (W6).

Action outputs have one writer (#778)

  • Prepare writes no placeholder; a generated unit enters the plan from its action's declaration. A generated module interface without .provides() is degraded.
  • mcpp::out_dir() is per configuration and package (target/.build-mcpp/out/<configuration>/<package>), recorded as outDir in resolution.json.

Module role from the declaration (#790)

Toolchains, Windows, Android

Late fixes from CI

  • A workspace member's build program keeps its out dir beside its cache, so emit build-database reuses the build's run (e2e 839 B4).
  • mcpp index list reads the same effective indices as resolution (e2e 44).
  • A failed install names the first address's failure ahead of the compat retries.
  • Tests read a tool binding from build.ninja as a command line (env LD_LIBRARY_PATH=... prefix, D29); the graphics checks read outDir (.github/tools/out_dir.sh).
  • The Linux and macOS e2e jobs install the mcpplibs.cmdline payloads e2e 32/33/40 link, which a warm cache used to hold.

Tests

  • e2e 893–901, each failing on 2026.10.8.1: workspace layer, compat reading, conditional rows, one writer, per-configuration out_dir, module units in .cpp (llvm and gcc), --toolchain note, publish write-back, the tools' library path.
  • Unit: test_key_registry (registry vs kWorkspaceBuildKeys and the grouping key, layer parsing and refusals, W7, W3 merges, grouping), MsvcProbe description.
  • e2e 12, 44, 210 moved to [workspace.indices]; 120 and 773 keep the position reading as its coverage; 111 reads the new output place.

Ecosystem

Closes #785, closes #786, closes #778, closes #790.

…r, the position reading in a compat module, W7, grouping by evaluated rows
…into the member (W6); grouping skips rows that do not hold
…the language (#790); cl.exe implementation partitions get /internalPartition
… per configuration (#778); resolution.json records outDir
…ditional rows, one writer per output, per-configuration out_dir, module roles, the toolchain override note, publish write-back, the tools' library path
…nfiguration output; e2e 111 reads the new place
… by its absolute form on Windows too

A relative path that leaves the current directory is tested by its first
component, not by the native string's prefix.
…ase reuses a member's run

A workspace member's build program keeps its cache in the member's own
target/.build-mcpp, also under a plan's work directory. Its out dir now has
the same base, so MCPP_OUT_DIR, and the re-run key, match between a build and
emit build-database (e2e 839 B4). e2e 652b, 810, 867, 868, 870 read the
per-configuration out dir; resolution.json's outDir is not part of a program's
graph document.
… on a workspace root

`mcpp index list` lists what resolution searches: a member's own [indices],
[workspace.indices], and a root's own table by position. effective_indices
recognises a workspace root by its own [workspace] table (e2e 44).
…lution.json records

.github/tools/out_dir.sh prints the root package's outDir of the newest
build; the Linux, macOS and Windows graphics steps read the spirv headers
there instead of naming target/.build-mcpp/out.
…nly the compat retry's

A bare or default-namespace dependency is retried as compat:<name> and
compat.<name>; those fail as "not found" whatever the cause was. The
diagnostic now carries the first address's error ahead of the last one.
…s assets

_inherit_toolchain.sh linked the user's subos into the test home but not the
version ledger that registers the assets its workspace projects. xlings
checks those before it changes the sysroot, so every install that touched it
was refused ("Scrt1.o@glibc-2.44.3: installed asset registration missing"):
e2e 32, 33 and 40 on a runner whose ~/.mcpp held no mcpplibs.cmdline.
For a compiler without its own library search path the binding starts with
`env LD_LIBRARY_PATH=...` (D29); the resource round-trip (mingw-cross) and
e2e 188 ran the binding as one program name.
… the suite's toolchains

The tests link mcpplibs.cmdline from ~/.mcpp; installed in their own home
instead, the install is refused because the inherited subos projects assets
that home's ledger does not register. A warm sandbox held them by accident;
the Linux and macOS e2e jobs now install them, as they do the toolchains.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment