Skip to content

2026.10.30.1: target sets and legs; the packaging model revised; run coverage; descriptor keys by the target's row; the build's contract; an ambiguous dependency name is no package's; the Web link's level and exception model - #862

Merged
Sunrisepeak merged 20 commits into
mainfrom
release/2026.10.30.1
Oct 30, 2026

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

Implements design 2026-10-29 (.agents/docs/2026-10-29-ecosystem-target-sets-packaging-and-editors-design.md). Draft: the target-set and packaging commits are still landing.

Fixes #851, #852, #857 (through openkal-linux 0.18.3), #860.

Co-authored-by: speak-agent 248744407+speak-agent@users.noreply.github.com

Sunrisepeak and others added 10 commits October 30, 2026 00:31
… run coverage, no silent fallback, external builds, one mcppls package, the editors

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…d descriptor_keys in a platform; an ambiguous dependency name is no package's; the Web link has the profile's level and the exception model; the build's contract

- A target reads the descriptor blocks its row names, in order, and never the
  build machine's (#851): emscripten, linux; ios, macosx; openkal, linux; none.
  A platform states its own with [platform] descriptor_keys.
- [platform] runner.hosts; carrier as a table or an array of entries with
  hosts and a build model; the entry serving an <os>-<arch> is chosen.
- A name two dependencies answer to is published for neither; the program
  reads MCPP_DEP_AMBIGUOUS_<NAME>, and dep_dir() of it ends naming both (#852).
- emcc's link carries the profile's optimisation level (#851); [target.<sel>.abi]
  exceptions takes "wasm" or "js", true keeping the JavaScript model.
- ${mcpp.contract}: the configuration's compilers, words and link, written
  beside its compile database for a foreign build to compile for the target.
- Version 2026.10.30.1.

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…r is a program

- A package states where it runs, once, when it is packed: runs_on.self (with
  what it carries) and runs_on.with.<runner> (given the machine's runner, from
  the platform's runner.hosts). --merge unites it; an older package's is
  derived from its systems and images.
- mcpp emit xpkg writes each system's block from runs_on: a self-contained
  universal package names the pairs whose runner it carries, so an Intel Mac
  is no longer offered a package with no runner for it (#860).
- bin/<name>.exe replaces bin/<name>.cmd: the engine's launcher program, built
  for x86_64 Windows over the platform's hosted arrangement, finds the package
  from its own path and becomes the runner; the POSIX script hands a Windows
  shell (Git Bash, MSYS, Cygwin) to it. xvm registers <name>.exe.
- dep_dir's refusal of an ambiguous name is printed on standard output: a
  FILE binding in the build-program module collided with a program's <cstdio>.

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…nd the POSIX script's hand-off to it

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…f a system, the legs of one command are planned serially and built at once, run takes the first reachable leg, test runs every reachable leg and fails when none ran, tests are archived once and run elsewhere

- target sets (`openkal`, `linux-musl`, `none-eabihf`) are recognised by their
  first segment and expanded in the CLI against the target table; members must
  select one platform; a member the platform does not serve is left out, stated
- mcpp::build::legs: plan (serial, mcpp.lock written by one planner), build and
  run_by_directory (concurrent across build directories, static job share,
  one Finished); the Android, universal, library and platform-test leg loops
  use it
- build/run/test/self env take several --target; [pack] targets is parsed;
  [build] target refuses a set
- mcpp test --no-run --archive <file> / --archive <file>
- machine output: one leg unchanged; several legs add data.legs, the legs'
  status, triple on artifact/diagnostic events, legs in .last-result.json
- unit tests (target sets, legs, manifest); e2e 963, 964

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…em of each architecture

Under openkal-platform 0.17.3 a vendored universal package's runs_on came out
empty and emit xpkg refused it (e2e 957).

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…f a platform with a runner are one tree whatever the number of legs, other programs a package per leg; runs_on in the summary and the envelope; --systems <os>, <os>-<arch>, all; --pkg-format lists of one tree's containers; single files cover legs x systems; --merge writes the launchers again; the universal spellings migrated

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…as every system, an empty runs_on is the platform's statement

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…nside the one mcppls package

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…ocs/50, and the release's notes for target sets and the pack model

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
Sunrisepeak and others added 9 commits October 30, 2026 05:28
Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…onger refused

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
… and tool window icons are the logo, not text

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…r the hosted arrangement a \-named path has no parent, and the package held no architecture (e2e 988)

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…hat names it

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…but not read (openkal-linux 0.18.3, #857)

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…e destination of its own copy (e2e 985 D)

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…981 runs over the emsdk the scan job installs, e2e 988 in the wine job; e2e 730 reports the shared home's state when the rung is not taken

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…pieces, and a program that cannot start is reported with the system's account

- tar_algorithm(name), the inverse of tar_extension, is the one rule by which
  unpack, --merge and the test archive read a name; `mcpp test --archive` refuses
  a name that states no tar archive before the build (exit 2). The archive was
  written gzip whatever its name and read by its name (e2e 964 E).
- zlib counts in 32 bits: input and output pass in 1 GiB pieces, positions kept
  outside zlib, so a .tar.gz over 4 GiB is one member (unit PackCompress).
- errno_of classifies invalid, no memory, directory, not supported and too large;
  RunResult::spawn_detail carries os's context and native value into the reports
  of `mcpp test` and `mcpp test --archive`, which said only "error 5".

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…ted only where the system has one (e2e 989)

runtime_library_path_key() is empty on macOS, whose programs keep their rpaths;
`mcpp test --archive` stated it regardless, and openkal-macos refuses an
environment entry of an empty name, so every test program of an aarch64-macos
leg was "invalid argument" -- reported as "error 5" before the spawn detail.
e2e 989 archives the host leg's tests and runs them from a checkout on every
system, with no llvm; 964's openkal legs run on Linux only.

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
@Sunrisepeak
Sunrisepeak marked this pull request as ready for review October 30, 2026 03:49
@Sunrisepeak
Sunrisepeak merged commit 13e2da0 into main Oct 30, 2026
154 of 155 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.

wasm32-emscripten: per-OS descriptor sections fall back to the host's, release links without -O, only JS exceptions

1 participant