GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — 2026.11.8.1: mtest's test protocol in mcpp test, tests without main, one std module builder per entry, lock targets per plan, identity-key manifests by Sunrisepeak · Pull Request #906 · mcpp-community/mcpp

Conversation

@Sunrisepeak

@Sunrisepeak Sunrisepeak commented Nov 7, 2026

Copy link
Copy Markdown
Member

Draft. This PR collects mcpp 2026.11.8.1; the items still open are listed at the end.

In this PR

  • mcpp.lock: an entry's targets change with the commands that ran, not with the resolution #903. The lock's targets change only with the configurations a command plans. A partial workspace build no longer treats the request as the plan scope.
  • Manifests: mcpp's own dependencies in the recommended form (identity keys, one table, exact versions) #904. mcpp's own manifests use one [dependencies] table of identity keys with exact versions. A quoted dotted dependency key is now the deprecated reading quoted-dotted-dependency-key (since 2026.11.8.1, removed from 2027.2): the build warns and names the unquoted key, and mcpp why compat lists the use. examples/02-with-deps uses the recommended form.
  • S4. The source check rejects conditional directives and macro definitions outside the system lock files, as it already rejected #include.
  • A workspace's target/ is 25 GB for one configuration (bin/ is 14× obj/: test binaries, member archives and staged .so copy the closure; nothing collects generated or nested build-program trees), and mcpp test --workspace recompiles most of the graph once per member #874.
    • prune and gc (--older-than) collect std module entries;
    • the low-space warning's threshold is max(2 GiB, 1.25 × what the configuration's last build wrote);
    • [build] target_budget keeps target/ within a size.
  • Self-ignoring state. <project>/.mcpp/ gets a .gitignore of *.
  • S1.
    • Both *-openkal rows are verified. Test 1033 builds both rows and runs the image of the host's architecture with the platform's layers. tests/e2e/host-requirements.tsv requires it to pass on Linux, macOS and Windows (enforced by check_e2e_coverage.py). Before this, mcpp's own CI ran images on Linux only.
    • docs/24 and docs/35 describe the two roles (release form, build target).

Tests

New e2e tests: 1027–1033. Each passes with this branch's binary, and 1027–1030 and 1032 fail with 2026.11.7.2.

Still to come in this PR

  • S7: the protocol runner, mcpp.core context injection and the build-graph query.
  • mcpp new's mtest template (after mtest 0.1.0).
  • A workspace's target/ is 25 GB for one configuration (bin/ is 14× obj/: test binaries, member archives and staged .so copy the closure; nothing collects generated or nested build-program trees), and mcpp test --workspace recompiles most of the graph once per member #874 re-measurement on the reporter's workspace.
  • CHANGELOG, version and the three design documents.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Sunrisepeak and others added 30 commits November 8, 2026 02:18
@Sunrisepeak @speak-agent
fix: a configuration group's lock keeps the other groups' entries (#903)
6fcebaf
Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
fix: a project's state directory ignores itself in a repository
428070c
Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
fix: cache prune and gc --older-than collect an unused std module (#874)
afd9bff
Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
feat: the low-space warning knows what the configuration's last build…
9921564
… took (#874)

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
feat: [build] target_budget keeps target/ within a size after every b…
eb00081
…uild (#874)

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
build: mcpp's dependencies by identity, one table, one spelling of an…
8ef1409
… exact release (#904)

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
ci: a conditional directive or macro definition outside the system lo…
57614ef
…ck files fails the source check

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
manifest: a quoted dotted dependency key is a deprecated reading that…
ed7aa6a
… names the unquoted key (#904)

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
docs: target_budget, the low-space threshold, std collection and the …
ee615d6
…self-ignoring project state directory (#874)

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
targets: both openkal rows are verified, an image run on Linux, macOS…
4e14618
… and Windows by mcpp's own CI; an image is a release form, a native row a build target

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
ci: the modules wiring check reads mcpp's dependencies by identity ke…
1ccfe66
…y; graph.cpp within its length

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
test: 1028 checks for git itself; 'git' is no e2e capability
3007e1f
Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
fix: a workspace member's test finds the member's programs under --wo…
e26c3cd
…rkspace, as under -p

A workspace's test plan holds a member's test programs only, so its own programs were never built
and its tests found no MCPP_BIN_<NAME>. Each member's programs are built by the member's plan and
named to that member's tests. Found by mtest's conformance suite.

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
The built-in platform is openkal-platform 0.24.4
0a28de9
openkal-image 0.5.3 enters an image in its convention's floating-point
state (openkal SPEC 12.2); on Windows a thread began with the x87 at
double precision, under which openkal-musl's strtod read 0.4 otherwise.

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
feat: mcpp test runs the runner's side of the test protocol
e8f5738
A test program that implements the mtest test protocol, version 1 -- its
entry states test-protocol = 1, or its file carries the marker -- is told
the protocol's variables and reports its cases: a run's record names the
protocol and each case's result and failures, a case a crash left open
failed, and the human report names the failed cases. --case PATTERN runs
the matching cases, --cases lists them, --seed states the seed. A program
that implements no protocol is one case and receives none of the
variables. --no-run records each built test with its program and sources.
(e2e 1035)

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
feat: a mcpp::context states the engine's values to the build-program…
77364dc
… interface in-process

Every accessor reads through value_of: the innermost context's values,
then the environment. A test of a build program's or a plugin's logic
states the values in its own process. (e2e 1036)

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
docs: cases and the test protocol, the record's protocol fields, test…
1ac7f6c
…-protocol and mcpp::context

docs/08 states the runner's side of the test protocol; docs/50 the
record's protocol, cases, missing, listed, program and sources, the
launch's protocol and the feature test-protocol; docs/04 the entry key;
docs/30 mcpp::context. English and Chinese.

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
2026.11.8.1: version and CHANGELOG
d0bc930
Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
feat: mcpp new tests with mtest and scaffolds a library; an entry off…
1a7d971
…ers to begin a test with no main

The skeletons' test is a file of mtest's cases with no main and the
dev-dependency mcpplibs.mtest; --template lib writes a module, a partition
it exports and its implementation, named after the package. An entry with
test-main = true begins a test file that defines no main; the file's
imports choose among offers, a dev-dependency's source that defines main
(gtest_main.cc) begins a test as before, and two beginnings are refused.
(e2e 1037)

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
feat: mcpp test --guide names each test framework with its guide; a f…
797398a
…ailed run points to it

An entry states its guide to writing tests with test-guide (the protocol's
P2.5). --guide lists the package's frameworks with their guides and
repositories and the commands for cases, or the contract and mtest when
there is none; a failed run's report names it and a record carries guide.
(e2e 1037)

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
build: mcpplibs.os 0.4.0; the launchers mcpp pack generates name thei…
1f812d5
…r dependencies by identity in one table

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
ci: the e2e timing tables measured again from the shards' reports; a …
c115a53
…Linux shard's suite step within 30 minutes

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
ci: eight Linux e2e shards, about twelve minutes each by the measured…
d04bc47
… table

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
test: a child that exits by itself is given a shell's start on a slow…
af48763
… runner before the stop

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
manifest: a quoted key that is the only spelling of a package beside …
2269691
…its parent or child is not deprecated

mcpplibs.mtest and mcpplibs.mtest.gtest in one table cannot both be
unquoted: one name would be a value and a table. (#904; e2e 1032)

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
fix: a test with a beginning links no main beneath its dev-dependency…
34ff95b
…; a dependency's entry that imports std builds std

gtest_main.cc of compat.gtest beneath the GoogleTest adapter was linked
beside the adapter's main; a framework's entry that imports std failed
when nothing else imported it. (e2e 1037)

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
fix: a test links a dev-dependency that is a shared library by its li…
75891bd
…brary

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
docs: the ecosystem's top-level design and the #885 supplement, with …
669dc20
…the record of this round

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
fix: a member's test begins by the member's own dev-dependencies, gat…
74ffa61
…hered once per member

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
build: mcpp dyndep leaves an unchanged output untouched, so a unit wh…
fcd48c8
…ose module edges are unchanged is not compiled again (#874)

Co-authored-by: speak-agent <[email protected]>
Sunrisepeak and others added 27 commits November 8, 2026 11:17
@Sunrisepeak @speak-agent
fix: a marked program that writes no program event is one case; a fai…
26024c8
…led test names a module nothing provides; a stale product is out of a program's way

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
feat: [test] programs = "directory"; mcpp test --since and --changed …
5d4cecf
…run the tests a change affects

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
test: the e2e suite as mtest programs: run_all.sh runs it by mtest wh…
30abbc0
…en E2E_MTEST names one; tests that change the machine's state hold it

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
docs: W8 is this round's, its mtest part as implemented
8073523
Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
fix: trim_paths applies to the code under test; a test program's own …
317c870
…files keep their paths, and build and test are one configuration

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
ci: the e2e shards run by mtest two at a time, divided by main's hist…
2adce9c
…ory, a pull request's by its change; unit tests of a pull request by its change; the nightly e2e coverage map

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
docs: the e2e suite by mtest
07dc961
Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
docs: the W8 probe's measurements; test: 955 keeps self env's answer …
51301de
…when it has no runner

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
docs: the unit-test measurement of the W8 probe
549b269
Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
scaffold: the skeleton's tests use mtest 0.2.0, the release one const…
3d6723e
…ant states

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
docs: W9, a case's kind as its suite's type, attributes by scope, and…
24172c0
… the layout of tests

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
docs: W9 as implemented: an object is a case, and the code states how…
d8410c6
… it runs

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
test: the skeleton's tests in mtest 0.3.0's form; --case reaches the …
059d97b
…cases a listed case declares

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
docs: W9's hosts, editors and mcppls as implemented
154fac0
Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
fix: a source whose main no command compiles is no beginning of a pro…
c576628
…gram; the quoted-key warning names the key

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
ci: the e2e suite runs under mtest 0.3.0
a3588ca
Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
docs: the mtest examples name 0.3.0
d977c4a
Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
docs: W10, mtest's paradigm and the test tree of mcppls
262d801
Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
docs: W10's unit tests are a program per file
8445a9f
Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
test: a program mcpp test starts gets only the protocol variables it …
d88391c
…states; 234 holds the machine

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
mtest 0.4.0: the e2e engine, the scaffold's and the guide's release
e3c02f0
Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
fix: a framework that is a dependency and a dev-dependency offers its…
2cbf131
… beginning once

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
docs: W10 as implemented: the harness, the topics, the measurements a…
9a8dba2
…nd their jobs

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
test: 231 and 234 take mcpp at a Windows path as it is
7e83178
Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
test: a Windows run's report names its tests without the CR Python's …
48003ab
…text output ends a line with

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
fix: two builds that find a std module missing compile it once
94cdd0f
Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
docs: U6 decided
0edbb8f
Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak
Sunrisepeak marked this pull request as ready for review November 8, 2026 19:04
@Sunrisepeak Sunrisepeak changed the title 2026.11.8.1 (draft): lock targets per plan, identity-key manifests, target budget, verified openkal rows 2026.11.8.1: mtest's test protocol in mcpp test, tests without main, one std module builder per entry, lock targets per plan, identity-key manifests Nov 8, 2026
@Sunrisepeak
Sunrisepeak merged commit 2211fb5 into main Nov 8, 2026
232 of 234 checks passed

Uh oh!

There was an error while loading. Please reload this page.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

1 participant

@Sunrisepeak
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.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.