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 if code generation
  • Support while code generation
  • Support for code generation
  • Support match code generation
  • Support break and continue
  • 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 .wasm generation
  • 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 .wasm validation 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