Skip to content

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 8 commits into
mainfrom
release/2026.10.26.2
Open

Sunrisepeak wants to merge 8 commits into
mainfrom
release/2026.10.26.2

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

2026.10.26.1 published every POSIX link through $out.tmp and a rename (D22). 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 --format web --target wasm32-emscripten (mcpp-plugins' dist-web, found by mcpp-plugins#51's CI) failed with no 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.sh passes (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

Sunrisepeak and others added 3 commits October 26, 2026 13:15
…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 Sunrisepeak changed the title release: 2026.10.26.2 -- a WebAssembly link writes its .wasm again release: 2026.10.26.2 -- a WebAssembly link writes its .wasm again; GCC module maps; trim_paths per package (#844) Oct 26, 2026
Sunrisepeak and others added 2 commits October 26, 2026 19:11
…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>
Sunrisepeak and others added 3 commits October 26, 2026 20:10
…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>

This branch has not been deployed

No deployments
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.

1 participant