Releases: cargo-bins/cargo-binstall
v0.11.0
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! 🎉
v0.10.0
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:
- Binstall now writes to standard meta files
$CARGO_HOME/.crates.toml
and$CARGO_HOME/.crates2.json
. This improves interoperability with other cargo tools. (#205 by @passcod) - We now write binaries and symlinks atomically, to prevent corruption. (#195 by @NobodyXu)
- In most cases, a single HTTP connection will be opened per remote host and re-used, instead of making a new one for each use. (#198 by @NobodyXu)
Other changes:
v0.9.2
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:
- New: support for Tar+Bzip2 (#181) by @qryxip
- New:
--secure
and--min-tls-version
options to disable insecure transports (#189) by @NobodyXu and @passcod - Improved: streaming downloads and unpacking such that no more data than necessary is held in memory, preventing OOM situations. (#168, #179) by @NobodyXu
- Improved: target detection on Windows and Mac (#191, #193) by @NobodyXu
Other changes:
v0.9.1
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:
- Binaries are now fetched according to the platform, detected at runtime, instead of matching the target triple of Binstall itself. (#155, #160)
- Binstall may try fetching the best of multiple targets for binaries, depending on platform. (#160, #162)
For example, when using an ARM64 Linux musl build of Binstall on a glibc-based system:
- Binstall <=0.8 would attempt to download musl binaries, and fail (fallback to source) if none were available
- Binstall >=0.9 will attempt to download gnu/glibc binaries, then fallback to musl binaries, and then fail (fallback to source).
On Apple M1, M1-native builds will be preferred, with a fallback onto Intel builds (usable via Rosetta); and so on.
Other changes:
- The
--target
override option is now an alias to--targets
, which takes a comma-separated list of target triples to try fetching in order. - The
-h
and--help
outputs have been improved, via an upgrade to Clap 3.-h
now shows a terse help page, and--help
has longer description and explanations of each option. - The code has been updated to Rust 2021, and the minimum version rustc bumped to 1.61. (#154)
- Several performance improvements were applied (#162, #163, #165)
Many thanks to @NobodyXu who has contributed/collaborated on most of this release and the last!
v0.8.0
- Richer errors, differentiating exit codes, and more (#151)
- Answering "no" to a confirmation prompt will exit with code 32;
- An HTTP error is code 69;
- A crate not found error is 76, and will direct you to lib.rs to search for a similarly-named crate if you so want;
- and many more errors have gained more verbose descriptions, error codes, exit codes, and help text.
- Optimised (for size)
cargo-binstall
binaries (#149, #150) - TAR + Zstd support (#148)
- CLI overrides for
bin-dir
,pkg-fmt
,pkg-url
(#147) - We no longer fetch or use the local crates index, instead relying only on the crates.io API. (#128, #126)
- Fixes spurious ssh/git failure (#63)
- Removes dependency on OpenSSL, avoiding linking errors during the ongoing OpenSSL v3 transition. (#141)
- Faster startup.
- Fix: if the latest version of a crate is yanked, we no longer use it (#122)
- Warning: when using the
--version
option, warn and re-prompt if the resolved version may not be the expected one (#116, #122, #125) - Warning: when fetching from a non-HTTPS remote (#152).
- Insecure downloads may become unsupported in the future!
- If you have a non-HTTPS download URL in your manifest, please switch to an HTTPS one, or consider opening an issue if you have objections.
- New builds: (#143, #145)
- Apple M1
- Linux x86-64 (musl)
- Linux ARM64 (musl)
- Linux ARMv7 (musl)
- 🗑️ Linux ARMv7 (gnu) support dropped
- We now recommend using static musl builds over gnu libc ones
v0.7.0
- Fix: linking behaviour on windows (#106, #111, PR #117)
- Fix: catch more errors so fallback works better (#109, PR #118)
- Improvement: warn when
--version
usage may result in unexpected version being installed (#113, PR #116) - New: fallback to installing from source (with
cargo install
) when no binary is available (suggestion by @fasterthanlime and others, #108, PR #114)
v0.6.2
From 0.6.0:
- New option:
--dry-run
- QuickInstall third-party repository support — if a project has builds in quickinstall but no direct binstall support, they will be selected
- Documentation fix: removed erroneous mentions of
bin-path
- Templating change:
{ format }
is now{ package-format }
inpkg-url
and{ binary-ext }
inbin-dir
.{ format }
will keep working for backward compatibility but you are encouraged to switch to the new syntax. Additionally,{ binary-ext }
is now available inpkg-url
.
From 0.6.1:
Possible to upgrade from 0.5.x and below with
cargo binstall cargo-binstall
And one last bugfix for this release: quickinstall would fail in some circumstances due to missing files.
v0.6.1
Everything in 0.6.0:
- New option:
--dry-run
- QuickInstall third-party repository support — if a project has builds in quickinstall but no direct binstall support, they will be selected
- Documentation fix: removed erroneous mentions of
bin-path
- Templating change:
{ format }
is now{ package-format }
inpkg-url
and{ binary-ext }
inbin-dir
.{ format }
will keep working for backward compatibility but you are encouraged to switch to the new syntax. Additionally,{ binary-ext }
is now available inpkg-url
.
But this release is upgradable with cargo binstall cargo-binstall
!
v0.6.0
- New option:
--dry-run
- QuickInstall third-party repository support — if a project has builds in quickinstall but no direct binstall support, they will be selected
- Documentation fix: removed erroneous mentions of
bin-path
- Templating change:
{ format }
is now{ package-format }
inpkg-url
and{ binary-ext }
inbin-dir
.{ format }
will keep working for backward compatibility but you are encouraged to switch to the new syntax. Additionally,{ binary-ext }
is now available inpkg-url
.
v0.5.0
(cargo-release) cargo-binstall version 0.5.0