Skip to content

[meta] add aarch64-unknown-linux-musl release target#3025

Merged
sunshowers merged 5 commits into
nextest-rs:mainfrom
altendky:add-aarch64-linux-musl
Feb 3, 2026
Merged

[meta] add aarch64-unknown-linux-musl release target#3025
sunshowers merged 5 commits into
nextest-rs:mainfrom
altendky:add-aarch64-linux-musl

Conversation

@altendky

@altendky altendky commented Feb 2, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add aarch64-unknown-linux-musl to the release workflow, providing a statically-linked ARM64 Linux binary with no runtime library dependencies.
  • Add the linux-arm-musl URL alias for convenient downloads.
  • Update installation documentation with the new option.

Motivation

This complements the existing x86_64-unknown-linux-musl target (added in #399) to provide a more complete matrix of musl builds. Immediate use case: altendky/onshape-mcp#39

Guidance requested

This PR includes a draft changelog entry and documentation updates with TODO comments for version information. However, reviewing the project's changelog workflow, it appears changelogs may be prepared at release time rather than per-PR.

Questions:

  1. Should this PR include the changelog entry, or should it be removed and added separately at release time?
  2. If the changelog entry should be included, how should the version section placement and <!-- md:version X.Y.Z --> annotations be handled?

This provides a statically-linked ARM64 Linux binary with no runtime
library dependencies, useful for Alpine containers and minimal Linux
environments.

Changes:
- Add `aarch64-unknown-linux-musl` to the release workflow build matrix.
- Add rustflags configuration for the new target in `.cargo/config.toml`.
- Add the `linux-arm-musl` URL alias for convenient downloads.
- Update installation documentation with the new option.
@altendky altendky marked this pull request as draft February 2, 2026 02:20
@codecov

codecov Bot commented Feb 2, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 83.02%. Comparing base (9c6beed) to head (fe976bd).
⚠️ Report is 5 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3025      +/-   ##
==========================================
+ Coverage   82.98%   83.02%   +0.04%     
==========================================
  Files         155      155              
  Lines       42136    42251     +115     
==========================================
+ Hits        34965    35081     +116     
+ Misses       7171     7170       -1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Comment thread .cargo/config.toml Outdated
Comment on lines +13 to +17

[target.aarch64-unknown-linux-musl]
# See https://github.com/rust-lang/compiler-team/issues/422 for why we're specifying +crt-static. We
# always want musl builds to be static.
rustflags = ["-C", "target-feature=+crt-static", "--cfg", "tokio_unstable"]

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can this be combined with x86_64-unknown-linux-musl above? target.'cfg(target_env = "musl")' maybe?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Confirmed this works - updated in af5cc9d.

Comment thread site/src/changelog.md Outdated
Comment on lines +12 to +15
<!-- TODO: This entry needs to be placed in the correct version section before release -->
<!-- BEGIN UNRELEASED ENTRY -->

### Added

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd just add an ## Unreleased heading here.

@altendky altendky Feb 3, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated in fe976bd.

@sunshowers sunshowers left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

@sunshowers

Copy link
Copy Markdown
Member

If the changelog entry should be included, how should the version section placement and annotations be handled?

We've done this through adding the next version here (which would be 0.9.125). It's okay that that link wouldn't lead to anywhere.

@altendky

altendky commented Feb 3, 2026

Copy link
Copy Markdown
Contributor Author

thanks for the help, i'll try to get it all applied tomorrow. :]

Use target.'cfg(target_env = "musl")' instead of separate sections for
x86_64-unknown-linux-musl and aarch64-unknown-linux-musl. This applies the
+crt-static flag to all musl targets automatically.
@altendky

This comment was marked as duplicate.

Replace TODO comments and markers with a proper "## Unreleased" section
heading as suggested in PR review.

@sunshowers sunshowers left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@sunshowers sunshowers merged commit f7a66e7 into nextest-rs:main Feb 3, 2026
23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants