wavefnd / wavefnd/Wave

Add GNU/Linux musl target contracts for core 64-bit architectures

Open
#411 0 comments 0 reactions 0 assignees View on GitHub
cross-platform enhancement help wanted os support
Dominant language
Rust
Stars
53
Forks
16
Avg merge
4h 22m
Merged PRs (30d)
46

Description

## Goal

Add first-class musl targets without treating a GNU sysroot as compatible:

- `x86_64-unknown-linux-musl`
- `aarch64-unknown-linux-musl`
- `riscv64-unknown-linux-musl`

## Scope

- Register exact target specs with `env = "musl"`.
- Define dynamic and static link contracts, startup objects, library search, interpreter paths, and explicit sysroot precedence.
- Keep GNU and musl CRT/runtime discovery separate.
- Reuse architecture codegen and ABI classifiers only where the ABI is demonstrably identical.
- Add dry-run/linker-argument, ELF metadata, and at least one QEMU/native runtime smoke per architecture where CI tooling is available.
- Document external musl toolchain requirements.

## Completion criteria

- [ ] All three triples appear in target-list and target-spec output.
- [ ] A GNU sysroot is rejected as incomplete for a musl target.
- [ ] Freestanding and GNU targets are unchanged.
- [ ] Static hello-world linking is validated before dynamic linking is claimed.
- [ ] CI evidence matches the documented support tier.

Contributor guide

Open the contributing guide

Research direction

Start by locating the existing target-list and target-spec output, then compare the GNU and freestanding target specifications and current CI tooling. Define completion against the three musl triples, including sysroot rejection, static linking before dynamic linking, linker arguments, ELF metadata, and available QEMU or native runtime smoke evidence.

Written by the indexing model from the issue text.

Assessment

Tech stack
linux, rust
Domain
build-system, compilers, operating-systems
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.