Releases: cargo-bins/cargo-binstall
v0.17.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:
- Add support of universal binary as fallback on MacOS (#552)
- Build universal MacOS binary on release for cargo-binstall (#551)
- Fix disabling cargo-install fallback (#541)
- Fix crate normalize-path which is used in cargo-binstall (#508)
- Add
-y
as alias for--no-confirm
(#536 #540) - Clarify on how to upgrade
cargo-binstall
and softwares installed by it (#514 #524) - Support default filename with underscores, which is the default format used by github action rust-build/rust-build (#495)
- Implement
--strategies
and--disable-strategies
for opting out of using third-party quick-install or/andcargo-install
(#136 #510 #545) - Use tracing-subscriber for logging and supports
--json-output
output (#520 #522 #525 #527 #528) - Enable dns-over-quic for trust-dns-resolver (enabled in the pre-built artifacts) (#538)
Internal changes
- Refactor: Extract new crate binstalk-types plus other misc refactor and optimization (#535)
- Refactor: Extract new crate binstalk-manifests (#511 #513 #523)
- Refactor: Extract new crate binstalk-downloader (#518)
- Optimizations (#530 #535, #541, #543, #544, #553)
Dependencies
- Enable feature thin of dep zstd for any target built natively (#480)
- Bump bytes from 1.2.1 to v1.3.0 (#554)
- Bump serde_json from 1.0.86 to 1.0.89 (#496 #547 #554)
- Bump compact_str from 0.6.0 to 0.6.1 (#554)
- Bump tokio from 1.21.2 to 1.22.0 (#548)
- Bump digest from 0.10.5 to 0.10.6 (#539)
- Bump reqwest from 0.11.12 to 0.11.13 and trust-dns-resolver from 0.21.2 to 0.22.0 (#538)
- Bump clap from 4.0.16 to 4.0.26 (#493 #498 #516 #529 #532 #534, #537)
- Bump mimalloc from 0.1.30 to 0.1.32 (#519, #533)
- Bump embed-resource from 1.7.3 to 1.7.4 (#517)
- Bump miette from 5.3.0 to 5.4.1 (#506)
- Bump once_cell from 1.15.0 to 1.16.0 (#505)
- Bump serde from 1.0.145 to 1.0.147 (#501)
- Bump toml_edit from 0.14.4 to 0.15.0 (#500)
- Bump futures-util from 0.3.24 to 0.3.25 (#497)
- Bump async-trait from 0.1.57 to 0.1.58 (#494)
- Update transitive dependencies (#549)
- Switch back from fork binstall-zip to zip since upstream has published a long-overdue new release (#512)
v0.16.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:
- Impl retry for http status code 503 and 429 in response (#472, #473)
- Fix install_from_source: Set cmd
cargo-install
to bekill_on_drop
so thatcargo-binstall
would terminate any runningcargo-install
when it receives signal for cancellation (e.g.SIGINT
) (#479) - Make tarball/bin extraction process cancellable: It can now be cancelled by signal (e.g.
SIGINT
) (#481) - Fixed
cargo-binstall -V
: It now prints cargo-binstall version as expected (#485, #488)
Other changes:
v0.15.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
.
Substitutes v0.15.0 due to CI failure.
In this release:
- Disable
tcp_nodelay
and add rate limiting for HTTP requests. This makes installation more reliable, especially when installing many crates at once. (#457, #458) - Allow
--pkg-fmt
,--bin-dir
,--pkg-url
overrides when installing multiple crates. (#444, #454) - Use
CARGO
env variable if present. Cargo sets this for subcommands: it is useful when the cargo binary in use may not be in a standard location or in PATH. (#452, #453) - Don't try to fetch a package if the crate provides no binaries. This fixes a regression which appeared in 0.14.0. (#446)
Other changes:
v0.14.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:
- Make binaries with
required-features
optional so that crates likesccache
can be installed viacargo-binstall
(#357, #438) - Improve auto discover so that crates like
miniserve
which seets pkg-fmt to bin can be auto discovered and installed out-of-the-box and fixed install crates with pkg-fmt set to "bin" (#406, #423, #433) --no-symlinks
now installs binary without version (#432)- Enable feat gzip, brotli and deflate decompression support for http/https to speedup download of crates with pkg-fmt set to "bin" on slow connections (#434)
- Optimize applying
PkgOverride
s intoPkgMeta
(#429) - Optimize
bins::BinFile
(#422) - Check
source_file_path
to ensure it is valid to provide better error messages and prevent renderedbin-dir
from accessing outside of the temporary directory containing the extracted binaries (#421) - Impl multiple default
bin-dirs
to make more binary crates works out-of-the-box (#417, #439, #441)
Other changes:
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
.