- Add aarch64-unknown-linux-musl target to rust-toolchain.toml for cross-compilation - Document ARM64 build instructions, prerequisites, and architecture-specific considerations - No architecture-specific code paths exist; all dependencies are architecture-agnostic Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2.1 KiB
ARM64 Support
Status
ARM64 (aarch64) support is available for cross-compilation. Production ARM64 deployments are planned for v1.x when K8s ARM node support is required.
Building for ARM64
Prerequisites
Install the musl cross-compilation toolchain for ARM64:
# On Ubuntu/Debian
sudo apt-get install musl-tools musl-dev gcc-aarch64-linux-gnu
# Add musl target
rustup target add aarch64-unknown-linux-musl
Cross-Compilation
Build static musl binaries for ARM64:
cargo build --release --target aarch64-unknown-linux-musl -p miroir-proxy -p miroir-ctl
The project's rust-toolchain.toml includes both x86_64-unknown-linux-musl and aarch64-unknown-linux-musl targets.
Architecture-Specific Considerations
Dependencies
All dependencies are architecture-agnostic Rust crates. No C dependencies or architecture-specific code paths exist in the current implementation.
Performance
- Hashing:
twox-hash(XXHash) is used for consistent hashing. Performance is comparable across x86_64 and ARM64. - Serialization:
serdeandbincodehave no architecture-specific behavior. - Networking: Tokio runtime and axum HTTP server are architecture-agnostic.
Memory Alignment
The codebase uses standard Rust types with default alignment. No manual memory management or SIMD optimizations are present that would require ARM64-specific handling.
Testing
ARM64 builds should be validated on ARM64 infrastructure before production deployment. Recommended testing:
- Unit tests: Run
cargo test --target aarch64-unknown-linux-musl - Integration tests: Deploy to ARM64 K8s nodes with Meilisearch backend
- Performance benchmarks: Validate throughput and latency against x86_64 baseline
CI Pipeline
Future ARM64 CI integration should:
- Add
aarch64-unknown-linux-musltarget to GitHub Actions matrix - Use cross-compilation or ARM64 runners for builds
- Validate binary execution via QEMU or native ARM64 runners
Related
- OP#6: ARM64 Support (parent task)
- Phase 8 (CI): CI pipeline enhancements