cargo-dist

Version 0.30.0-prerelease.3

v0.30.0-prerelease.3 Aug 28 2025 at 00:34 UTC

This release contains several improvements to ZIP archives, the installers and additional build workflow customization options.

ZIP archive improvements

Previous versions of dist produced uncompressed ZIP archives which meant that they were much larger than necessary. ZIP archives are now compressed.

In previous versions, ZIP archives were only suitable for Windows binaries because they didn't preserve executable permissions. ZIP archives now correctly preserve extended Unix permissions.

The npm installer previously used the unzip commandline utility to unpack ZIP archives on Windows. This isn't available in all installations, so some users would experience errors at install time. We've improved this by switching to the builtin PowerShell Expand-Archive cmdlet.

Additional installer configuration environment variables

dist's installers are configurable using a variety of different environment variables, but in previous versions only some of these would be branded with your app's name. We now provide branded versions of all of the other environment variables as well. The previous unbranded environment variables will continue to work. The new variables are:

  • ${APP_NAME}_DOWNLOAD_URL
  • ${APP_NAME}_PRINT_QUIET
  • ${APP_NAME}_PRINT_VERBOSE

This feature previously appeared in version 0.28.7 of Astral's fork.

Shell installer refuses to use Snap-installed curl

The shell installers will now refuse to fetch archives using a copy of curl installed via the Snap package manager for Ubuntu. Snap-installed copies of curl have limitations on their ability to write downloaded files to disk which makes them unsuitable for dist's installers. If a Snap-installed curl is detected, the installer will try to fall back to using another download tool; if no other tool is present, a message will be shown to the user and the installation will abort.

This feature previously appeared in version 0.28.5 of Astral's fork.

PowerShell installer now supports proxies

The PowerShell installer now respects the HTTPS_PROXY and ANY_PROXY environment variables and uses them to configure a proxy when fetching artifacts. These were already supported by the shell installer.

macOS code signing now supports the --options flag

When using the experimental macOS codesigning feature, users can now specify a value to be passed to the --options flag using the CODESIGN_OPTIONS environment variable.

Linux arm64 GitHub Actions builds now use native arm64 runners by default

In previous versions of dist, we used cross-compilation to build arm64 Linux binaries from an x86_64 host. GitHub now provides free native arm64 runners, so we've switched to using these by default. Users can still use cross-compilation if they prefer by specifying the x86_64 runners using the custom runners feature in the dist config.

GitHub Actions artifact attestations can now be customized

It's now possible to customize exactly which artifacts are attested, and which phase of the build process to perform the attestations in. Currently, customizing which artifacts to attest requires the attestation to happen during the host phase; this restriction may be lifted in the future.

To specify which artifacts to attest, you can use a list of globs; any artifacts matching any of those globs will receive an attestation. For example:

github-attestations-phase = "host"
github-attestations-filters = ["*.json", "*.sh", "*.ps1", "*.zip", "*.tar.gz"]