Skip to content

2026.10.31.1: features in every envelope, program in self env; #868; #866/#867 follow-ups; canary build steps; --pkg-format polyglot; ldflags files as link inputs - #869

Merged
Sunrisepeak merged 11 commits into
mainfrom
release/2026.10.31.1
Oct 30, 2026
Merged

Sunrisepeak merged 11 commits into
mainfrom
release/2026.10.31.1

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

Design: .agents/docs/2026-10-30-ecosystem-part2-ide-and-language-service-design.md (rev 7). Committed in checkpoints (§14, §25.2 task M):

  1. features in --protocol-version and in every envelope's mcpp field; program in self env; docs/50 states how a tool runs mcpp for a project (§4.0, §4.3).
  2. mcpp.lock: a dependency's key depends on which members a command selects #868: a workspace's lock entry is keyed the same way whatever members a command plans (e2e 990).
  3. The follow-ups of fix: a partial caret or tilde requirement treats unwritten segments as wildcards #866 and fix: the TOML reader accepts every escape TOML 1.0 defines #867 (§17).
  4. Canary build diagnostics (§11).
  5. The polyglot carrier model, --pkg-format polyglot (§19.6.2, SPEC-014).
  6. Prebuilt archives named by link arguments are link inputs (§25.3 C1).

Closes #868. Refs #849.

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

Sunrisepeak and others added 8 commits October 30, 2026 16:49
…ect's mcpp, mcppls's contract, entries, test cases, the manifest's rules as LSP, CLion native, distribution; one file for every system (#849): the APE and polyglot probes, the polyglot carrier model

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…rogram` in self env, and how a tool runs mcpp for a project (docs/50)

A client gates on a feature (`target-sets`, `pkg-format-list`) rather than a
version number; every envelope's `mcpp` field carries the list beside the
version, so one `self env` gives both and a job's envelope says when either
changed. `self env` names the file that is running, so a tool that ran `mcpp`
through a shim in a project's directory reads which mcpp the project uses.
Design 2026-10-30 part 2 §4.0, §4.3.

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…mand plans (#868)

Two members spelling one dependency two ways (`tinyhttps.workspace = true` and
`[dependencies.mcpplibs] tinyhttps.workspace = true`) made `-p` of each write
its own key and hash. The key is now the workspace's spelling: its
`[dependencies]`, `[workspace.dependencies]`, then every member in the order
`members` lists them, selected or not (docs/07, e2e 990).

Closes #868

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…t; the TOML writer escapes every control character

#866: a bare requirement is a caret, so "0" and "0.0" take the wildcard
bounds as well (<1.0.0, <0.1.0); a unit test pins bare against caret, docs/05
states it in both languages.

#867: with \b, \f and \uXXXX read, a value may hold any control character;
escape_string escapes U+0000-U+001F and U+007F (short forms where TOML has one,
\uXXXX elsewhere, never the reader's \0), so serialize writes TOML. A round
trip test covers every control character.

Design 2026-10-30 part 2 §17.

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
A canary's time is mostly its project's build (xlings: 1750 s of 47 min); each
canary now ends with the 20 longest steps read from every .ninja_log beneath
it, and `release_canaries.py steps <dir>` prints them for any tree. Design
2026-10-30 part 2 §11.

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
A replaced prebuilt archive named in [build] ldflags did not relink the
program: the word reached the linker but no link edge depended on it, and the
clangd ok-image probe deleted its image to take a new library. A word that names
an existing file by absolute path is now an implicit input of every non-archive
link that carries it (docs/04, e2e 991). Design 2026-10-30 part 2 §25.3 C1.

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
#849)

An ok image's single files of every leg and system (--systems all unless
stated) are assembled into one <name>-<version>.exe. The Windows program leads:
its DOS header is a shell assignment (MZqFpD='...') followed by a two-line
script, the PE header moves down by a multiple of the file alignment and the
offsets it holds move with it; the other systems' programs follow unchanged, and
the POSIX script last. Windows starts the file as the PE it is (Authenticode
signs it); Linux and macOS start it through sh, which copies the system's
program to the single-file cache by SPEC-014 §5.2's rules, checks its sha256 and
executes it. Without Windows the file is a #!/bin/sh script.

The carriers are signed before assembly (the Windows one excepted) and the file
after. polyglot is not in a --pkg-format list, a native target is refused, and
mcpp emit xpkg names the file it refuses. mcpp run --pkg-format single-file and
polyglot run the file directly (polyglot through sh on POSIX); they were refused
as unknown formats; tar, zip and dir are refused as containers.

Design 2026-10-30 part 2 §19.6; e2e 992, unit test_pack_polyglot.

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
… the wine job, where its file runs as a Windows program

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
@Sunrisepeak Sunrisepeak changed the title 2026.10.31.1: features in every envelope, program in self env, how a tool runs mcpp; #868; #866/#867 follow-ups; canary diagnostics; the polyglot carrier; prebuilt archives as link inputs 2026.10.31.1: features in every envelope, program in self env; #868; #866/#867 follow-ups; canary build steps; --pkg-format polyglot; ldflags files as link inputs Oct 30, 2026
Sunrisepeak and others added 3 commits October 30, 2026 18:42
…written

The version module still named 2026.10.30.1 (help, version and the subsystem
contract test compare it with mcpp.toml). Loading every member through
load_member_manifest for its spelling of a dependency also ran the inheritance a
planned member receives, whose position-reading notes then reached the root's
own build (e2e 911 R5); the manifests are now read as written, the way
workspace_members reads them.

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…with the command that removes it

A package a browser downloaded carries com.apple.quarantine on every file, and
macOS refuses to start an unsigned runner so marked; the launcher says so before
it starts the runner (SPEC-014 §4.3; mcpp design 2026-10-30 part 2 §10 D6).

Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…how a tool runs mcpp is a noun phrase

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 11:35
@Sunrisepeak
Sunrisepeak merged commit 304487b into main Oct 30, 2026
78 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.

mcpp.lock: a dependency's key depends on which members a command selects

1 participant