wavefnd / wavefnd/Wave

Define a backend-neutral Wave ABI fixture format

Open
#368 0 comments 0 reactions 0 assignees View on GitHub
enhancement help wanted needs testing
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.