Skip to content

Releases: cargo-bins/cargo-binstall

v0.17.0

22 Nov 14:29
7544fde
Compare
Choose a tag to compare

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/and cargo-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

18 Oct 06:55
b9f486d
Compare
Choose a tag to compare

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 be kill_on_drop so that cargo-binstall would terminate any running cargo-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:

  • docs: update unsupported crates guide (#467, #468)
  • Bump serde_json from 1.0.85 to 1.0.86 (#475)
  • Bump clap from 4.0.10 to 4.0.16 (#474, #476, #477, #482, #483, #489)
  • Bump home from 0.5.3 to 0.5.4 (#478)
  • Bump mimalloc from 0.1.29 to 0.1.30 (#484)
  • Bump cargo_toml from 0.12.4 to 0.13.0 (#486)

v0.15.1

08 Oct 08:07
5e04a22
Compare
Choose a tag to compare

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

28 Sep 06:54
af3316a
Compare
Choose a tag to compare

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 like sccache can be installed via cargo-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 PkgOverrides into PkgMeta (#429)
  • Optimize bins::BinFile (#422)
  • Check source_file_path to ensure it is valid to provide better error messages and prevent rendered bin-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:

  • Bump thiserror from 1.0.35 to 1.0.37 (#426, #437)
  • Bump tokio from 1.21.1 to 1.21.2 (#436)
  • Bump digest from 0.10.3 to 0.10.5 (#431)
  • Bump env_logger from 0.9.0 to 0.9.1 (#428)
  • Bump semver from 1.0.13 to 1.0.14 (#427)
  • Bump cargo_toml from 0.12.1 to 0.12.2 (#425)
  • Bump url from 2.3.0 to 2.3.1 (#424

v0.13.3

25 Sep 03:31
c27c3b8
Compare
Choose a tag to compare

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

24 Sep 02:32
c86cba3
Compare
Choose a tag to compare
v0.13.2 Pre-release
Pre-release

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:

  • Bump dep cargo_toml to v0.12.0 for bug fix (#413, #387, #412)

Other changes:

v0.13.1

17 Sep 11:50
e8dfbe3
Compare
Choose a tag to compare

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 as cargo 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 upgrade zstd. (#375)
  • Several changes and fixes to documentation. (#383, #385, #386, #392)

v0.13.0

10 Sep 11:29
037e621
Compare
Choose a tag to compare

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 a cargo 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 (as jobslot), tar (as binstall-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

08 Aug 11:40
4500e4a
Compare
Choose a tag to compare

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 a Cargo.toml's path. (#259)
  • Improved: --log-level=off (or --quiet) also passes --quiet to cargo-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

24 Jul 08:48
faf4c5e
Compare
Choose a tag to compare

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:

  • Release-related bug fixes in the CI/CD processes, which caused broken builds for 0.11.0 (#241, #242)