fix(release): exclude rayon on wasm32 so the WASM build links — restores release binaries (#142)#167
Open
avrabe wants to merge 1 commit into
Open
fix(release): exclude rayon on wasm32 so the WASM build links — restores release binaries (#142)#167avrabe wants to merge 1 commit into
avrabe wants to merge 1 commit into
Conversation
…#142) Root cause of the missing release binaries: every release v1.1.5–v1.1.10 shipped zero assets NOT because the upload step was lost, but because the `Build WASM (wasm32-wasip2)` job FAILS, and `Create Release` (needs: [build-native, build-wasm]) is skipped as a result — so the native binaries that built fine are never uploaded either. The WASM build fails at link: rust-lld: undefined symbol: __wasi_init_tp / pthread_create / pthread_detach error: could not compile `loom-cli` Source: loom-core depends on `rayon` (islands.rs, the opt-in #71 island-model parallel pass-ordering). rayon's thread pool needs pthread, which the single-threaded wasm32-wasip2 target can't provide; the threaded startup also drags in __wasi_init_tp. Fix: make rayon a `cfg(not(target_arch = "wasm32"))` dependency and give islands.rs a sequential fallback on wasm (`iter()` instead of `par_iter()`). The island tie-break is deterministic across interleavings (test_islands_deterministic_tiebreak / _baseline_matches_serial), so the sequential result is bit-identical to the parallel one — behavior frozen. Verified: loom-core compiles for wasm32-wasip2 (--no-default-features, rayon excluded, islands wasm path valid); native islands tests 6/6 green (par_iter path unchanged). The full release WASM link (z3 built via wasi-sdk in CI) + asset upload is confirmed by the next release run. Refs #142. (Secondary unified-artifact-standard work tracked in PR #143.)
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.
Root cause of the missing release binaries (#142)
Not a lost upload step — a failing WASM build. Every release v1.1.5–v1.1.10 shipped zero assets because:
Build WASM (wasm32-wasip2)fails at link, andCreate Releasehasneeds: [build-native, build-wasm], so it's skipped — the native binaries that built fine never get uploaded.The WASM link error:
Source: loom-core depends on
rayon(islands.rs — the opt-in #71 island-model parallel pass-ordering). rayon's thread pool needs pthread, absent on the single-threadedwasm32-wasip2target; the threaded startup also drags in__wasi_init_tp.Fix
rayon→[target.'cfg(not(target_arch = "wasm32"))'.dependencies].iter()vspar_iter()).test_islands_deterministic_tiebreak,test_islands_baseline_matches_serial), so sequential ≡ parallel — behavior frozen.Verified
wasm32-wasip2(rayon excluded, islands wasm path valid).par_iterpath is byte-identical to before).workflow_dispatchdry-run or the next release showsbuild-wasmgreen + assets uploaded.Scope
This is the primary #142 fix (binaries shipping at all). The secondary unified-artifact-standard rewrite is PR #143 (
chore/standardize-release-yml) — orthogonal to this loom-core change; both are needed.Refs #142.
🤖 Generated with Claude Code