Selection order:
wasmgc-classic bridge; on instantiation failure fall through.wasmgc-classic baseline.Tier table per #680's browser-compat audit, with every row landing on the one bridge this package ships:
| Tier | Hosts | Bridge |
|---|---|---|
| A | Chromium 131+, Firefox 130+, Node 22.6+ | wasmgc-classic |
| B | Safari 18.2+ (GC yes, builtins uncertain) | wasmgc-classic |
| C | Cloudflare Workers, Vercel Edge, Deno Deploy | wasmgc-classic |
| D | Node 18 LTS, anything pre-GC | wasmgc-classic |
Tier A does NOT select wasmgc-builtins (#408). It used to, in
both the order above and the table, and that made this the last text
in the tree pointing a reader at the dead path.
wasmgc-builtins is RETIRED and the retirement is measured rather
than provisional: causl/causl-core-rs#210 measured its
wasm:js-string imports as i32-typed where the W3C builtins are
externref-typed, so WebAssembly.compile(bytes, { builtins: ['js-string'] }) refuses the artefact on EVERY host and no rebuild
changes it. causl/causl-core-rs#355 deleted the vendored tree and the
build row; the loader's assertBridgeIsShipped now fails the id
closed at selection time with that measurement and the alternative
attached. causl/causl-core-rs#358 is the retype that would bring the
tier back, and until it lands there is one artefact, so there is
nothing for a probe to choose between.
STUB BEHAVIOUR (current PR). Until #692 lands the real bridge,
this function always returns a makeDefaultBridgePlaceholder
regardless of host capabilities. The probes still run (they
exercise the harness on the real hosts that the CI matrix covers),
but their results are recorded only on the returned bridge's
BridgeFeatures for telemetry; the bridge identity stays
wasmgc-classic. When the real bridge lands, the
loadGcBridge() / loadGcClassicBridge() hooks below switch to
dynamic-import-based loaders and the function's return type does
not change.
Feature-detection failures never crash: the harness always returns some bridge — the universal fallback if every probe rejects.
Pick the highest-tier bridge available on the current host.