Define a wasm64 WASI ABI and runtime contract
- Dominant language
- Rust
- Stars
- 53
- Forks
- 16
- Avg merge
- 4h 22m
- Merged PRs (30d)
- 46
Description
## Problem
PR #457 adds a working `wasm64-unknown-unknown` Memory64 target but intentionally leaves `wasi/wasm64` disabled. Wave must not reuse the wasm32 WASI Preview 1 pointer ABI without a defined 64-bit host/runtime contract.
## Scope
- Select and document the WASI ABI/version used for 64-bit pointers.
- Define entry, imports, strings, iovec, filesystem, clock, environment, and process-exit layouts.
- Add a compatible host runner and linker contract.
- Reuse the wasm64 allocator without pointer narrowing.
- Activate `wasi/wasm64` only after object and runtime fixtures pass.
## Completion criteria
- The target has an exact triple and published ABI contract.
- Standard-library smoke tests execute through a maintained runtime.
- Pointer-bearing imports are validated against an independent host fixture.
- `supported` and `ci` are enabled only when the lane is reliable.
Related: #451, #457
Contributor guide
Research direction
Start with PR #457 and related issue #451, then inspect the existing wasm64-unknown-unknown target and disabled wasi/wasm64 lane. Map the listed ABI, runtime, allocator, host, linker, and fixture requirements; done means the exact triple is documented, independent fixtures and standard-library smoke tests pass, and supported/CI are enabled only when reliable.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust, wasm
- Domain
- compilers, operating-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100