A sysroot manager for Rust that builds and customizes the standard library for cross-compilation and embedded targets.
Xargo is a sysroot manager for Rust that builds and manages sysroots, enabling cross-compilation for targets without binary releases of the standard crates and allowing customization of the `std` crate. It simplifies development for embedded systems and custom platforms by automating the compilation of core Rust libraries like `core`, `alloc`, and `std` from source.
Rust developers working on embedded systems, custom platforms, or targets lacking official binary releases of the standard library, such as `thumbv*m-none-eabi*` or custom Linux variants. It is also for developers needing fine-grained control over the standard library's build configuration.
Developers choose Xargo for its ability to automate and cache sysroot builds for cross-compilation, support for customizing `std` with features like `-C panic=abort` or jemalloc, and compatibility with custom target specifications. It provides more control than standard Cargo for non-standard targets and sysroot customization.
The sysroot manager that lets you build and customize std
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Enables deep customization of the standard library, such as building std with -C panic=abort or jemalloc allocator, as demonstrated in the Xargo.toml examples.
Automatically builds and caches core crates for targets without binary releases, like thumbv6m-none-eabi, significantly speeding up subsequent builds after initial compilation.
Works with custom target specification files for non-official platforms, such as PowerPC Linux with uclibc, allowing development on esoteric systems.
Supports staged builds in Xargo.toml to manage implicit dependencies between crates, like compiling test after std, ensuring correct sysroot assembly.
Cannot build sysroots with stable or beta Rust due to std's dependence on unstable features, limiting toolchain compatibility and increasing instability risks.
Demands manual setup of Xargo.toml for dependencies, stages, and patches, which is error-prone and requires deep understanding of Rust's internals.
The project is in maintenance mode with no active development, potentially leading to compatibility issues with newer Rust versions and limited support.