Binstall is a tool to fetch and install Rust-based executables as binaries. It aims to be a drop-in replacement for cargo install
in most cases. Install it today with cargo install cargo-binstall
, from the binaries below, or if you already have it, upgrade with cargo binstall cargo-binstall
.
In this release:
- Installing multiple crates in one go is now possible with
crate@version
syntax, similar to thecargo add
command. When that syntax is used, some overriding options like--version
and--manifest-path
that only make sense in single-crate context are disabled. (#210, #216, #217, #220) - We now prompt only a single time. We resolve all information needed to proceed, then ask for confirmation, and then install. Previously there could be up to three confirmation prompts. (#209)
--version 1.2.3
now means--version "=1.2.3"
. Previously it meant--version "^1.2.3"
. This was confusing and could result in ambiguity in some cases. The new behaviour aligns more closely withcargo install
. This is also the case in the newcrate@version
syntax. (#210)- Alternative extensions are tried when
{ archive-format }
is used, so e.g. writing.tar.gz
manually in the template URL is no longer required. (#38, #236)
Other changes:
- Mimalloc can be chosen to replace the default allocator at build time with the feature
mimalloc
. This is disabled by default. (#206) - Smaller binaries with
opt-level = "z"
. (#218) - Enable static linking of xz2. (#219)
- Disable unused features of zstd. (#219)
- We now co-operate with
make
-style process concurrency handling. (#216) - Many performance optimisations throughout the above and #221, #222.
- Temporary files are now created within the installation path, this helps detect out of space and permission errors earlier. (#225)
$CARGO_HOME/.crates.toml
is no longer modified if--install-path
is given, as that's considered a non-global install. We also take a lock on the file like Cargo does. (#227, #228)$CARGO_HOME/.crates2.json
is no longer written to, as its data content is not adapted to Binstall's. (#235)- The armv7 and aarch64 Linux GNU targets are pre-built for releases again. (#231)
- @NobodyXu is now officially our third maintainer! 🎉