Skip to content

feat(wasix): refresh Wasmer engines and browser SDK - #247

Open
f0rr0 wants to merge 3 commits into
f0rr0/patch-correctness-refreshfrom
f0rr0/wasmer-dependency-refresh-20261003
Open

f0rr0 wants to merge 3 commits into
f0rr0/patch-correctness-refreshfrom
f0rr0/wasmer-dependency-refresh-20261003

Conversation

@f0rr0

@f0rr0 f0rr0 commented Oct 4, 2026 •

Copy link
Copy Markdown
Owner

Stacked on refreshed #218 and current main. The native caller-directory and old-host clock setter compatibility fixes are in #218, not duplicated here.

Summary

  • Upgrade the embedded Rust/Node-API engine to Wasmer 7.5 / WASIX 0.705 and refresh the related parser and Node-API dependencies. Leave the separate Postmaster engine pin unchanged.
  • Standardize maintained/generated Cargo packages and baseline builders on Rust 1.96.0, with one explicitly pinned browser-only nightly for shared-memory Wasm.
  • Upgrade the browser host to Wasmer SDK 0.19 and its matching 7.4 / 0.704 engine family while continuing to run our PostgreSQL guests. Move the existing adapter into repository-owned source and replace 29 vendor patches with six ordered patches.
  • Preserve fast browser clocks through the supported runtime hook, falling back to canonical WASIX clocks for all readers of a database after an actual clock-setting call. Merely importing a setter no longer rejects PostGIS. No new environment flags or public options.

Validation

Rust 1.96 source/unit/contract and relevant packaging checks pass locally. Earlier Linux Wasmer 7.5 execution probes pass, including Node/Bun/Deno, memory/directory storage, large responses, streaming and error recovery; those retained binaries were built during the earlier Rust 1.99 experiment, not final baseline/release qualification.

After refreshing the stack, both doctest variants, eight public API tests, 176 Rust unit tests, five browser clock tests and SDK build/package checks pass. The retained new browser host has the exact current source-input fingerprint and was reused, not rebuilt unnecessarily.

Fresh production browser builds apply all six patches in order. Clock tests, 357 TypeScript SDK tests, typecheck and package/host ABI checks pass. Chromium smoke passes custom roles, SQL recovery, large buffered responses, IndexedDB reopen, OPFS/crash recovery and Worker PostGIS. Browser host Wasm is about 67% smaller; clock-heavy workloads are 2.63–3.66× faster than canonical-clock controls. These are local diagnostics, not all-platform release qualification.

Remaining gates

  • CI confirms Wasmer 7.5 rejects its LLVM compiler on Windows. The existing MSVC VM also lacks working guest exception recovery; Linux cross-production is not a fix. A supported Windows backend migration is tracked in fix(windows): qualify Wasmer V8 after upstream drops Sys compiler support #208 and is required before this engine update can ship across all targets. No platform or recovery checks are skipped.
  • Browser comparisons still show approximately 10% slower direct indexed reads and 15% slower callback-transaction inserts than the retained old host. This is not a blanket performance-win claim.
  • Large Window-context side modules retain Chromium's existing synchronous compilation limit; PostGIS continues to require the Worker entrypoint. Optional extension carriers used in local probes were retained, not freshly release-qualified.

@vercel

vercel Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
oliphaunt-docs Building Building Preview Oct 5, 2026 7:22am UTC

@f0rr0 f0rr0 changed the title build(wasix): refresh Wasmer engines and browser SDK feat(wasix): refresh Wasmer engines and browser SDK Oct 4, 2026
@f0rr0
f0rr0 force-pushed the f0rr0/wasmer-dependency-refresh-20261003 branch from e3fcd1e to 2f942e7 Compare October 4, 2026 18:46
@f0rr0
f0rr0 marked this pull request as ready for review October 4, 2026 18:48
@f0rr0
f0rr0 force-pushed the f0rr0/wasmer-dependency-refresh-20261003 branch from 2f942e7 to b7c707a Compare October 4, 2026 20:23
@f0rr0

f0rr0 commented Oct 4, 2026 •

Copy link
Copy Markdown
Owner Author

Rebased onto main 207fcfa5 through refreshed #218. Current head: f7389afeccc9642a5d513112f60ab6847fcad53d.

Fresh CI is running for that exact head.

Run 37243819455 predates #253. That merged change addresses the Swift/React Native carrier mismatches and Linux/macOS Node-API runtime-version mismatch. The Postmaster portable job separately failed while downloading libfuzzer-sys because curl reported an HTTP/2 framing error; it did not reach a failing runtime assertion.

Local release metadata/version-pin checks, the full Node-API owner test task on Rust 1.96/Wasmer 7.5, Rust formatting, five browser clock tests and five AOT manifest tests pass. The refreshed shared base's workflow, WASIX packaging, Swift packaging and React Native source checks also pass.

The Windows compiler failure remains real: Wasmer 7.5 explicitly rejects LLVM on Windows and requires V8. The separate Windows integration work is not included here. #208 still blocks all-platform qualification; no Windows gates or tests were skipped. Fresh CI must qualify this head.

f0rr0 added 3 commits October 5, 2026 07:17
Refresh the coherent Wasmer/WASIX family, parser, Node-API bindings, and Rust build toolchain. Adapt upstream package metadata and regenerate affected dependency-license contracts.

Linux core execution is verified. Keep the browser and Postmaster pins unchanged pending adapter and patch ports; the existing Windows LLVM AOT producer is not supported by upstream 7.5.
Use Rust 1.96.0 for the workspace and both baseline container builders, with a common 1.96 minimum in maintained and generated Cargo packages. Let private workspace tools inherit the shared minimum.

This branch was successfully deployed

1 active deployment
Preview — f7389afe Deployed Oct 5, 2026 by vercel[bot]
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