Repository navigation
0.14.1: the non-local jump boundary stated, a probe kept, and the step that skips until the engine knows the key - #18
Merged
Merged
Conversation
…ps until the engine knows the key - C's non-local jumps are a link-time decision the way -pthread is: setjmp.h compiles either way, and whether a siglongjmp over live frames works depends on the lowering the whole link chose. The switch belongs to the artefact, so the consumer states it in the same abi table threads use: [target.'cfg(os = "emscripten")'.abi] longjmp = "wasm". Without the table, non-local jumps are not supported - probe/longjmp/ is a C program whose siglongjmp crosses two frames, each holding a volatile local the jump must not have restored, and a second jump returns over both to the origin - continuous integration attempts that probe's build: an engine without the member refuses the manifest naming it, the step reads the refusal and reports a skip; an engine that resolves the key builds it, runs it under node, and the step is the gate that turns with the engine's release
Nothing the twelve interfaces do. C's non-local jumps are stated as a link-time decision of the artefact (longjmp = "wasm" in the same abi table threads use), the probe program probe/longjmp/ carries the assertion, and continuous integration runs it once an engine resolves the key, reporting a skip until one does.
…e joins the conditional
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.
A C program that jumps non-locally -- sigsetjmp at one frame, siglongjmp from two frames below -- dies on the wasm row today: the runtime's JS trampoline reaches outside the linear memory and the process aborts. Straight-line control flow and goto-with-labels work; the jump is what does not. The ABI table already carries two members for exactly this class of decision -- threads and exceptions are link-time, graph-wide, and cannot be a package's private flag -- and this change states the third boundary beside them and keeps the program that will prove the fix.
abitable context -- non-local jumps on the wasm row are a link-time decision the table makes; until the engine knows the member, they are unsupported (measured on mcpp 2026.11.10.1: the members are threads and exceptions)probe/longjmp/: a self-contained C program (sigsetjmp origin, two nested frames, volatile locals preserved across the jump asserted) with its own manifest declaring the memberci.yml: the step tries the probe; when the engine answers that the abi table has no such member the step reports the skip and passes, any other build failure fails the run, and an engine that knows the member builds and runs the probe under node requiring exit 0 -- the flip from skip to assert is automatic, no change to this repository needed on that dayCI stays green today by construction: the skip path is the asserted behaviour of the current engine, not a suppressed failure.