Define a backend-neutral Wave ABI fixture format
- Dominant language
- Rust
- Stars
- 53
- Forks
- 16
- Avg merge
- 4h 22m
- Merged PRs (30d)
- 46
Description
Tracked by #350.
## Problem
The LLVM backend currently has target-specific C ABI fixtures, while the future Whale toolchain needs to validate the same native Wave ABI independently. Source files and ad-hoc assertions are not enough to express expected transport classes and layouts across backends.
## Scope
Design a machine-readable fixture format that can describe:
- Target and Wave ABI version.
- Source-level parameter and return types.
- Object size/alignment/layout.
- Register or stack transport classes.
- Indirect arguments and hidden return pointers.
- Expected symbol/name-mangling result.
- Expected pass/fail compatibility outcome.
Provide a small validator library or tool and initial scalar/pointer/aggregate fixtures. Keep C ABI comparison fixtures in a separate namespace.
## Completion criteria
- [ ] The schema is documented and versioned.
- [ ] Unknown fields or schema versions fail clearly.
- [ ] LLVM tests can consume the initial fixtures.
- [ ] Whale can consume the format without importing LLVM-specific concepts.
- [ ] At least two target families are representable.
Contributor guide
Research direction
Start by reviewing the existing LLVM backend C ABI comparison fixtures and the LLVM tests that should consume the new format. Define and document the versioned schema, validator behavior, fixture namespaces, and initial scalar, pointer, and aggregate cases. Done means unknown fields and versions fail clearly, two target families are representable, and both LLVM and Whale can consume the fixtures without LLVM-specific concepts.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- compilers, testing
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100