v0.2.3-pre-beta
## Major Development Areas ### WebAssembly Targe
LunaStev
Major Development Areas
WebAssembly Target
- Add a WebAssembly target
- Add WebAssembly target specifications
- Add WebAssembly-specific ABI contracts
- Add WebAssembly-specific data layouts
- Add pointer width and address space handling
- Support WebAssembly object and module generation
- Add target option and feature validation
Type System and Codegen
- Support integer and floating-point code generation
- Support pointer code generation
- Support struct code generation
- Support array code generation
- Support enum code generation
- Support variant code generation
- Support generic code generation
- Support lowering of function parameters and return values
- Add aggregate layout handling for WebAssembly
- Support global and local variable code generation
Control Flow
- Support
ifcode generation - Support
whilecode generation - Support
forcode generation - Support
matchcode generation - Support
breakandcontinue - Support function returns
- Add lowering compatible with WebAssembly structured control flow
Linear Memory
- Support WebAssembly linear memory
- Map Wave pointers to linear memory
- Support load/store code generation
- Handle memory alignment
- Place static and global data
- Add heap allocation paths
- Handle memory growth
- Support pointer arithmetic
Function Import and Export
- Support WebAssembly function exports
- Support WebAssembly function imports
- Support exposing Wave functions to the host
- Support calling host functions from Wave
- Add import module/name handling
- Add WebAssembly entry point handling
WASI
- Support a WASI target
- Support WASI program entry points
- Support standard input/output through WASI
- Support basic file operations
- Support process arguments
- Support environment variables
- Support clock and time-related functionality
- Support execution under WASI runtimes
Browser and JavaScript Interoperability
- Support WebAssembly output for browsers
- Support JavaScript host function imports
- Support exporting Wave functions to JavaScript
- Support shared linear memory access
- Support string and buffer passing
- Support instantiating Wave WebAssembly modules from JavaScript
- Add browser smoke tests
Standard Library
- Add WebAssembly-specific standard library platform branches
- Add a WASI std backend
- Add std boundaries for browser/hosted WebAssembly
- Separate platform-dependent functionality such as files, processes, time, and memory
- Add target diagnostics for native functionality unavailable on WebAssembly
WebAssembly Output
- Support
.wasmgeneration - Add WebAssembly binary validation
- Add import/export table validation
- Add memory and global section validation
- Add function signature validation
- Add WebAssembly module metadata handling
Execution Tests
- Add WASI runtime smoke tests
- Add browser WebAssembly smoke tests
- Add JavaScript host interoperability tests
- Add import/export regression tests
- Add linear memory regression tests
- Add regression tests for structs, arrays, enums, variants, and generics
CI
- Add WebAssembly cross-codegen CI
- Add
.wasmvalidation CI - Add WASI execution CI
- Add JavaScript host interoperability CI
- Add browser execution validation
- Include WebAssembly regressions in release validation
Documentation
- Add WebAssembly target support documentation
- Document how to use WASI
- Document browser and JavaScript interoperability
- Document import/export usage
- Document linear memory and pointer behavior
- Document WebAssembly standard library support scope
- Document unsupported WebAssembly features and limitations