Add GNU/Linux musl target contracts for core 64-bit architectures
- 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
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