v0.2.4-pre-beta

## Major Development Areas ### Wave ABI * Define

LunaStev

Major Development Areas

Wave ABI

  • Define a Wave-specific calling convention
  • Completely separate the C ABI from the Wave ABI
  • Define scalar argument and return passing rules
  • Define pointer argument and return passing rules
  • Define aggregate argument and return passing rules
  • Separate object representation from ABI transport representation
  • Define target-specific register classification
  • Define stack argument passing rules
  • Define stack and aggregate alignment rules
  • Define padding handling rules
  • Define indirect argument passing rules
  • Define hidden return pointer rules
  • Define function symbol rules
  • Define name mangling rules
  • Define symbol visibility rules
  • Define export/import ABI contracts
  • Define cross-module interface contracts
  • Define ABI boundary handling rules for generic types
  • Define ABI lowering rules for Wave-specific types such as variants
  • Add an ABI versioning scheme
  • Add ABI compatibility determination mechanisms

Target-Specific ABIs

  • Define the x86_64 Wave ABI
  • Define the AArch64 Wave ABI
  • Define the RV64 RISC-V Wave ABI
  • Define the scope of the Wave ABI for WebAssembly
  • Separate target-specific register, stack, alignment, and aggregate transport rules

C ABI Separation

  • Keep the C ABI classifier independent from the Wave ABI
  • Separate extern(c) and export(c) paths from the Wave ABI
  • Separate the implementation structure so Wave ABI rules are not implicitly reused for the C ABI
  • Separate C ABI aggregate classification from Wave ABI aggregate classification
  • Preserve Clang-comparison-based C ABI regression fixtures

ABI Validation Infrastructure

  • Add dedicated Wave ABI contract fixtures
  • Separate C ABI fixtures from Wave ABI fixtures
  • Add argument and return lowering validation
  • Add aggregate transport validation
  • Add register and stack placement validation
  • Add symbol and name mangling validation
  • Add cross-module ABI regression tests
  • Add ABI version compatibility tests
  • Add ABI contract tests for the LLVM backend
  • Add an ABI contract fixture format reusable by Whale

Common Backend Contract

  • Organize the type information required by ABI lowering in the frontend
  • Establish a common contract so the LLVM backend and Whale follow the same Wave ABI definition
  • Separate backend-specific implementation details from language-level ABI rules
  • Organize ABI-related target metadata structures
  • Establish a foundation for comparing ABI results across backends

Documentation

  • Add a Wave ABI specification
  • Document the calling convention
  • Document target-specific argument and return rules
  • Document aggregate transport rules
  • Document name mangling and symbol rules
  • Document cross-module interfaces
  • Document ABI rules for generics and Wave-specific types
  • Document ABI versioning and compatibility policies
  • Document the differences between the Wave ABI and the C ABI