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)andexport(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