Skip to content

Releases: cargo-bins/cargo-binstall

v0.11.0

24 Jul 04:35
450e29d
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:

  • Installing multiple crates in one go is now possible with crate@version syntax, similar to the cargo 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 with cargo install. This is also the case in the new crate@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

05 Jul 10:54
v0.10.0
3348d3d
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:

  • 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:

  • Windows target detection is improved, with support for gnullvm targets. (#199 by @NobodyXu)
  • Binstall builds are now optimised for size; performance is still great. (#200 by @NobodyXu)

v0.9.2

28 Jun 14:09
v0.9.2
caf6f39
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:

  • 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:

  • Various performance improvements courtesy of @NobodyXu:
    • QuickInstall reporting in the background (#166)
    • Fetching metadata from crates.io (#180, #188)
    • Detecting the install target (#192)
    • Performing filesystem I/O (#194)
    • Performing stdout/stderr I/O (#171)
  • CI: unit tests (#169) by @NobodyXu

v0.9.1

08 Jun 05:23
v0.9.1
43d5a6b
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:

  • 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

31 May 13:32
v0.8.0
6457ab9
Compare
Choose a tag to compare
  • 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)
  • 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

28 Apr 22:29
Compare
Choose a tag to compare
  • 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

16 Feb 09:51
Compare
Choose a tag to compare

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 } in pkg-url and { binary-ext } in bin-dir. { format } will keep working for backward compatibility but you are encouraged to switch to the new syntax. Additionally, { binary-ext } is now available in pkg-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

16 Feb 09:16
Compare
Choose a tag to compare

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 } in pkg-url and { binary-ext } in bin-dir. { format } will keep working for backward compatibility but you are encouraged to switch to the new syntax. Additionally, { binary-ext } is now available in pkg-url.

But this release is upgradable with cargo binstall cargo-binstall!

v0.6.0

16 Feb 08:56
Compare
Choose a tag to compare
  • 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 } in pkg-url and { binary-ext } in bin-dir. { format } will keep working for backward compatibility but you are encouraged to switch to the new syntax. Additionally, { binary-ext } is now available in pkg-url.

v0.5.0

18 Nov 20:43
Compare
Choose a tag to compare
(cargo-release) cargo-binstall version 0.5.0