Releases: cargo-bins/cargo-binstall
v0.13.3
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:
Other changes (from yanked v0.13.2):
v0.13.2
This version is yanked due to #416
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:
Other changes:
v0.13.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
This is a redo of 0.13.0, which has its own changelog you should consult. As that release broke a few important usecases, it was unmade and this one replaces it.
- Fix missing info logs, which broke the UI. (#371)
pkg-fmt
(in manifest and CLI) is now case-insensitive. (#384)- New
--roots
option, same ascargo install
's. (#388, #389) - Binstall now falls back to other installation strategies if an earlier one doesn't contain all the required binaries (fixes some issues with incomplete packages). (#357, #370, #372, #382)
Other changes
- Releng fixes for release PR action. (#367, #368, #369)
- Our prebuilt release now disables trace level logs entirely. (#390)
zip
dependency has been forked to apply fixes, unblock a feature (streaming decode), and upgradezstd
. (#375)- Several changes and fixes to documentation. (#383, #385, #386, #392)
v0.13.0
Yanked, unreleased. Use 0.13.1 instead.
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 aggressively scans the remote for a download URL if not given exact details in the metadata:
- the filename is guessed from a wider range of version/name/target combinations (#296, #329)
- the version can be with or without preceding
v
(#328) - the file extension can be any of the standard extensions for the supported archive formats (#295, #310)
This means that many more packages will install out of the box without needing configuration.
-
Binstall now also tries to guess the download URL for other repositories than GitHub: GitLab, BitBucket, and SourceForge. (#296, #322, #360)
-
Downloads can now only be done over HTTPS, with TLS 1.2 or over. This also deprecates the
--secure
option, which enabled this; for compatibility it is still accepted but will do nothing. (#124, #343) -
The source has been broken up into several crates. There are the single-purpose libraries
detect-targets
,detect-wasi
,fs-lock
,normalize-path
(all licensed as Apache/MIT); and the "binstall library/toolkit",binstalk
(GPL). The main interface remains the tool itself,cargo-binstall
. (#294, #307, #331, #338, #341, #359, #361)
Other changes:
- Fix regression where we would prompt even if there was nothing to do. (#291, #293)
- Improve an error message when an expected file is not found in the downloaded package. (#301)
- Use Trust DNS for hostname resolution. (#318, #323)
- Use rustls on all platforms. This notably makes it easier to install on Windows, but also provides consistent TLS 1.3 support everywhere. (#318)
- Use cargo-bins/release-pr for the release process. (#330, #336, #345, #350, #364)
- Recommend taiki-e/install-action as the way to use Binstall in CI. (#342)
- Installing via
cargo install cargo-binstall
no longer tries to use the high performance zlib-ng, which was causing compile issues on Windows. Instead the pure Rust miniz-oxide implementation is used. Pre-built binaries still use zlib-ng, so do acargo binstall cargo-binstall
immediately after installing from source to get it. (#354) - We've forked a couple of crates to apply fixes to them:
jobserver
(asjobslot
),tar
(asbinstall-tar
). - The tar fork includes support for PAX, which fixes a longstanding and very annoying bug seen occasionally where a package would fail to install with a confusing error. We hope to upstream the fix, this is not meant to be a permanent fork. (#177, alexcrichton/tar-rs#295, cargo-bins/cargo-quickinstall#87, #301, #358)
- Various minor optimisations. (#321, #324, #325)
- The crates.io API calls now share the same HTTP client as the rest of Binstall; this notably enforces HTTPS and TLS version policies globally. (#349)
- Many dependency updates: clap, miette, serde, and others (#297, #298, #299, #300, #308)
v0.12.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:
- If a crate is already installed and its version is the same as would be installed, we now skip installing it, mirroring
cargo-install
's behaviour. A new--force
option lets you do it anyway. (#282) - Binstall writes to its own specific metafile format in
$CARGO_HOME/binstall/crates-v1.json
for global installs. This new format is better suited to binstall over the.crates2.json
data, and lets both Binstall itself and third party tools if they so wish have access to installation information. The classic.crates.toml
is still written to too. (#252) - We now live in the cargo-bins GitHub organisation. This will let us fork some unmaintained projects that we use in here, and perhaps bring other cargo tools under this umbrella. (#251)
Other changes:
- New:
-V
to print version. (#248, #259) - New:
--quiet
as an alias to--log-level=off
. (#281, #283) - Improved:
--manifest-path
can take both a crate folder path and aCargo.toml
's path. (#259) - Improved:
--log-level=off
(or--quiet
) also passes--quiet
tocargo-install
when installing from source. (#281, #283) - Fix: show help when no arguments are provided. (#244, #245)
- Fix:
$CARGO_HOME
and the.crates.toml
metafile will be created if they don't exist yet. (#267, #276) - Fix: specifying duplicate crates is now handled properly, with the latter specification being used. (#264)
- Doc: possible values of
--log-level
are listed out. (#281) - Doc: the readme has been streamlined for the use case, rather than the support case (adding binstall configuration to your crate), which has moved to its own dedicated page. (#284)
Plus many performance and CI/CD optimisations.
v0.11.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:
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!