Repository navigation
release: 2026.10.26.2 -- a WebAssembly link writes its .wasm again; GCC module maps; trim_paths per package (#844) - #842
Open
Sunrisepeak wants to merge 32 commits into
Open
Sunrisepeak wants to merge 32 commits into
Sunrisepeak wants to merge 32 commits into
Conversation
…2026.10.26.2) 2026.10.26.1 linked every POSIX output to $out.tmp and renamed it. Emscripten names the files it writes beside the output after the output, so a link to app.js.tmp wrote no app.wasm: the edge's implicit output was missing and mcpp pack of a wasm32-emscripten program found no stem family (mcpp-plugins' dist-web). A WebAssembly link is in place, as a PE link is. Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…e format, mcpplibs.os, and part 1's closure Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…_paths is per package (#844) A GCC module map now names the BMI directory as its repository ($root) and every path below it, so a BMI built with GCC's own mapper and one built with a map record their imports at the same paths: an indirect import, and `import std.compat`, are found in a unit with a map. A dependency BMI an earlier mcpp cached spells its imports the earlier way, so the cache key of a package that provides a module under GCC carries the spelling (the upgrade lane's `modules` variant). The dyndep step reads $root. The `trim_paths` prefix map left the flags every unit shares: a unit carries the fixed roots and its own package's closure, so switching workspace members no longer recompiles their common dependencies (e2e 872 F). Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
Sunrisepeak
force-pushed
the
release/2026.10.26.2
branch
from
October 26, 2026 09:44
9016c0b to
90719e0
Compare
…cord is active Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…dep step does A staged BMI's edge waits for the modules its map names, and the backend read the map line by line: `$root gcm.cache' became a module named `$root' and every path lost its repository, so the edge waited for `local-dev.gen-dep/gen.dep.table.gcm' beside the build directory (e2e 849). It reads the map with parse_module_map now. Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…conditional; a closed reader ends mcpp in order The platform constants and architecture, the executable's name, PATH lookup, directory links, no-replace renames, volume identities and terminals come from mcpplibs.os. What it does not carry -- the launchers and their signal guard, flock-compatible file locks, durable sync -- is one implementation unit per system, selected by modules/platform/mcpp.toml. openkal ignores SIGPIPE for its own writes, and the ignore survived exec into every program mcpp started; std::print to a closed stdout threw. mcpp installs a SIGPIPE handler first thing: it ends mcpp as an interrupt does, then by the signal (141), and exec resets it for children. e2e 941. Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…d, run by okrun, packed as the image (M2) or a program that carries it (M3) The triple names no operating system (<arch>-unknown-none-elf); the convention's flags and an ld.lld link produce an ET_DYN entered at ok_main; okld note and okld check, programs of the graph, finish each image before it takes its name. okrun is the target's runner. The target side's kernel-abi is fixed to openkal; every layer above it is the graph's, and the payload's libc++ is withheld. e2e 942; unit Triple.OpenkalIsAnImageForNoOperatingSystem. Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…eads it back as its anchor Only the root's git dependencies were written, so a branch two edges away moved to its tip on every build and an --offline build stopped at it (mcpp's own CI: platform -> mcpplibs.os -> openkal). e2e 943. Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…age another loads (.okso) is built An image exports what its source marks and nothing else, so the link drops what nothing reaches and the requirements note names only what the program uses; the unwind index is there for dl_iterate_phdr. kind = "shared" on <arch>-openkal produces lib<name>.okso. Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…of the unwinder and of the C library Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
… so mcpp update moves a branch forward; M3 programs name themselves mcpp update cleared mcpp.lock and the next build replayed the old graph, building the old commit and writing it back (2026.10.19.1 onwards). The record carries a digest of mcpp.lock and declines otherwise. e2e 943 C. The generated M3 program runs its image with okrun_options::carried. Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
… commits a stack as its guard page is touched) Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…lved commit; an image build with no okld is refused as image-tool-absent, and the matrix declares the openkal cells Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
… the workspace's source, and an unresolved one is refused by name Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…ndex carries (e2e 944) Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…d, okrun for an ok image); e2e 942 G Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…only what was published Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…-tools (workspace inheritance, the target's conditional tables); a workspace root's effective manifest merges its own [workspace.dependencies]; e2e 942 pins the image's environment Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…the image's tools were Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…kspace = true inherits in every table Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
… join_list); e2e 942 takes openkal-tools 0.1.0 Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…x wherever it is in the graph; e2e 945 Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…c e2e bootstrap builds against the index as published Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…tanding image states the symbol it is entered at (#845) kind = "entry"; main = { from = "<dependency>/<entry>" } on programs, rows and [test]; start on programs, entries, rows and [test]; mcpp:link-start (build-program protocol 16). The entry compiles in its package's context and links only into the programs that select it; required_features gate it and windows_entry follows it. start is accepted on freestanding targets only, renders -e and a --defsym check, and disagreeing statements are refused. A file a target names as main on any row is no longer an ordinary source. The compiled build-program interface is kept by version and text digest. Design 2026-10-26 §24, SPEC-004 §14, docs 04/08/30/40/50, e2e 946 and 947. Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
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.
2026.10.26.1 published every POSIX link through
$out.tmpand a rename (D22). Emscripten names the files it writes beside the output after the output, so a link toapp.js.tmpwrote noapp.wasm: the edge's implicit output was missing andmcpp pack --format web --target wasm32-emscripten(mcpp-plugins'dist-web, found by mcpp-plugins#51's CI) failed withno action claimed --format 'web'. A WebAssembly link is now in place, as a PE link is.Verified locally with emsdk 6.0.9: mcpp-plugins' web-consumer
check-web-plan.shpasses (fails on 2026.10.26.1, passes on 2026.10.24.1); e2e 650 part 2 (app.js + app.wasm, run, pack) and 938 pass. mcpp-plugins CI against this branch: run 40268128959.Co-authored-by: speak-agent 248744407+speak-agent@users.noreply.github.com