This is the first public release of QuickRust. It was developed inside MachineFabric for our own Rust builds, and it is now available to everyone.
What it is
- QuickRust is Cargo, faster: it runs every Cargo command, and manages the Rust toolchains, a build cache shared by all your projects, and the build output, within bounds you set.
qrust setupmakes it yourcargo. Projects, manifests, lock files and scripts stay as they are.- A workspace built in several configurations that must not share output (another service
address compiled in, another release channel, a GPU feature) names each a build variant,
QRUST_BUILD_VARIANTorbuild.variant, and each gets a build directory of its own: no configuration overwrites another’s binaries, and what they have in common is compiled once. - A build for another target installs that target’s standard library into the toolchain the
first time it is needed. A Linux GNU target named with the glibc to link against, as
cargo zigbuildtakes it (x86_64-unknown-linux-gnu.2.28), uses the standard library ofx86_64-unknown-linux-gnu. - A program that uses what a build left behind for longer than the build (a test harness, a
packager) holds the build directory while it runs:
qrust path --hold-for <pid>. QuickRust’s cache does not collect a held directory, and the hold ends with the process.
Installing
brew install machinefabric/tap/quickrust,apt install quickrust,dnf install quickrust, or an archive for macOS (Apple Silicon and Intel), Linux (x86_64 and arm64, static) and Windows (x86_64). Each puts theqrustprogram on the machine;qrust setupdoes the rest.- An archive is
qrust-<version>-<platform>.tar.gz(.zipfor Windows) and unpacks to one directory,quickrust/, holdingqrust,qrust-rustc-wrapper, the licences and the README.
Updating
qrust self updateinstalls the latest release of the channel this QuickRust was published on, and only a release its registry signed: the release manifest’s signature must chain to the root keys QuickRust was built with, the archive must be the one the manifest describes, and the program in it must report the version it was published as. Anything else stops the update with the reason and replaces nothing. It never installs an older release.qrust doctorshows the release line: the channel and registry updates come from.- A QuickRust built from source has no release line, and
qrust self updatesays so. self.update-url(QRUST_UPDATE_URL) names a mirror of the registry. A mirror is trusted as the registry is: by the signature, not by where it is.