Skip to content

Latest commit

 

History

History
428 lines (281 loc) · 13 KB

File metadata and controls

428 lines (281 loc) · 13 KB

Changelog

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

[0.23.1] - 2026-04-19

  • extend ProcessStatistics struct with some traits & helper functions
  • support new cargo error text in rust 1.95 for MissingDependencies error

[0.23.0] - 2026-04-07

  • upgrade dependencies: getrandom, rand
  • support setting the cores a container should use
  • make sandbox image & image-digest methods public
  • BREAKING: return memory.peak after calling sandboxed commands. See #115

[0.22.1] - 2026-01-15

  • make Crate::copy_source_to public.

[0.22.0] - 2026-01-04

  • BREAKING: replace lazy_static with LazyLock, add MSRV to what is in the code
  • upgrade dependencies: attohttpc, toml, remove_dir_all, getrandom, thiserror, git2, nix
  • update to edition 2024, fix clippy errors

[0.21.0] - 2025-12-02

  • BREAKING categorize more previously uncategorised cargo errors See #98

[0.20.0] - 2025-08-22

  • BREAKING ensure callers of BuildDirectory::run can determine if the source of the error is in Prepare::prepare. See #103

[0.19.4] - 2025-06-17

Fixed

  • "move manifest validation later in the preparation to harden against possible cargo changes

[0.19.3] - 2025-06-17

Added

  • Added Command::source_dir_mount_kind

Fixed

  • Fixed running tests inside of nixos

[0.19.2] - 2025-03-19

  • unfreeze rustup version, don't canoncalize binary names

[0.19.1] - 2025-03-05

[0.19.0] - 2024-12-26

Added

  • BREAKING New variant CommandError::SandboxContainerCreate for previous more generic CommandError::ExecutionFailed on sandbox creation.

Changed

  • use ubuntu-22.04 instead of ubuntu-latest for tests

[0.18.0] - 2024-10-13

  • BREAKING Extend CommandError::ExecutionFailed and PrepareError to optionally include stderr

[0.17.0] - 2024-06-26

Added

  • New method LogStorage::set_max_line_length to limit the logged line length when capturing builds logs

Changed

  • BREAKING migrated generic error return types from failure::Error to anyhow::Error.
  • BREAKING prepare::PrepareError is now based on thiserror::Error, and not failure::Fail any more.
  • BREAKING toolchain::ToolchainError is now based on thiserror::Error, and not failure::Fail any more.
  • Update attohttpc dependency to 0.28
  • Update base64 dependency to 0.22
  • Update env_logger dependency to 0.11
  • Update git2 dependency to 0.19
  • Update http dependency to 1.1
  • Update nix dependency to 0.29
  • Update remove_dir_all dependency to 0.8
  • Update toml dependency to 0.8.
  • Update tiny_http dependency to 0.12
  • Update windows-sys dependency to 0.52

0.16.0 - 2023-05-02

Added

  • New method Build::fetch_build_std_dependencies for using -Zbuild-std within the sandbox when networking is disabled. Previously, this would try to fetch the standard library sources, which would error when networking was blocked.

0.15.2 - 2022-11-08

Changed

  • CI toolchains can now install additional targets and components.

0.15.1 - 2022-09-04

Changed

  • Updated nix dependency to 0.25.
  • Replaced winapi dependency with windows-sys.

0.15.0 - 2022-05-22

Added

  • New method BuildBuilder::patch_with_path() for path-based patching (as compared to git-based).
  • New struct AlternativeRegistry to configure how an alternative registry can be accessed.

Changed

  • BREAKING: Crate::registry now requires an AlternativeRegistry rather than the registry URL as string.

0.14.0 - 2021-08-19

Added

  • New method Toolchain::is_needed_by_rustwide for checking if a toolchain is needed by rustwide itself (for installing tools).

0.13.1 - 2021-05-21

Changed

  • The --locked flag is not used anymore during cargo fetch.

0.13.0 - 2021-04-20

Added

  • New method Toolchain::rustup_binary to allow running arbitrary binaries managed by rustup. Before, only rustc and cargo could be run.

Changed

  • The default sandbox image is now fetched from GitHub Container Registry.
  • Rustwide now removes .cargo/config.toml, rust-toolchain, and rust-toolchain.toml before running a build.

0.12.0 - 2021-01-28

Added

  • New variant PrepareError::MissingDependencies, returned during the prepare step when a dependency does not exist.

Changed

  • Path dependencies are no longer removed from Cargo.toml during the prepare step.

0.11.1 - 2021-01-25

Changed

  • Updated tokio dependency to 1.0.

0.11.0 - 2020-10-30

Added

  • New method Crate::registry to use crates from alternative registries.

Changed

  • Allow workspaces by having validate_manifest use metadata --no-deps instead of deprecated read-manifest, therefor no longer failing on workspaces and TomlTweaker no longer removing the workspace table from Cargo.toml.
  • Command now warns when it is not used.
  • Errors while removing directories or files now mentions the path that caused the error to happen.

0.10.0 - 2020-08-08

Added

  • New variant CommandError::ExecutionFailed
  • New variant CommandError::KillAfterTimeoutFailed
  • New variant CommandError::SandboxImagePullFailed
  • New variant CommandError::SandboxImageMissing
  • New variant CommandError::WorkspaceNotMountedCorrectly
  • New variant CommandError::InvalidDockerInspectOutput
  • New variant CommandError::IO
  • New struct KillFailedError

Changed

  • BREAKING: support for CI toolchains is now gated behind the unstable-toolchain-ci Cargo feature.
  • BREAKING: all functions and methods inside cmd now return CommandError.
  • winapi is no longer required on unix; nix is no longer required on windows.
  • Relaxed lifetime restrictions of Build::cmd and Build::cargo.
  • The requirement of using an image similar to crates-build-env has been lifted, and it's now possible to use any Docker image for the sandbox.

0.9.0 - 2020-07-01

Added

  • New method Toolchain::remove_component

Fixed

  • When passed a global command with the same name as a file in the current directory, Rustwide will now execute the global command instead of the file.

0.8.0 - 2020-06-05

Added

  • New method Workspace::purge_all_caches.

Changed

  • The exact image has used during builds will be logged.

Fixed

  • Subcommands executed in sandbox respect configs of parent command.

0.7.1 - 2020-05-20

Changed

  • Updated dependencies.

0.7.0 - 2020-05-07

Added

  • New struct cmd::ProcessLinesActions to expose actions available while reading live output from a command.

Changed

  • BREAKING: Command::process_lines now accepts a FnMut(&str, &mut ProcessLinesActions).
  • The file .cargo/config will be removed before starting the build.

0.6.1 - 2020-05-04

Fixed

  • Fix Command::process_lines not working in sandboxed enviroments.

0.6.0 - 2020-04-01

Added

  • New method SandboxBuilder::limit_cpu

0.5.1 - 2020-01-31

Fixed

  • Fix unstable feature not working after the Rust 1.41.0 stable release.

0.5.0 - 2019-12-30

Added

  • New enum toolchain::ToolchainError
  • New method Toolchain::remove_target
  • New method Toolchain::installed_targets

0.4.0 - 2019-12-23

Added

  • New struct toolchain::CiToolchain containing a CI toolchain's metadata.
  • New struct toolchain::DistToolchain containing a dist toolchain's metadata.
  • New method WorkspaceBuilder::rustup_profile to configure the rustup profile used during builds.
  • New method Toolchain::as_ci to get a CI toolchain's metadata.
  • New method Toolchain::as_dist to get a dist toolchain's metadata.
  • New method Toolchain::ci to create CI toolchains.
  • New method Toolchain::dist to create dist toolchains.

Changed

  • BREAKING: The default rustup profile is now minimal.
  • BREAKING: The Toolchain enum is now an opaque struct.
  • The directory target/ inside local crates won't be copied into the build anymore.
  • Symbolic links will be followed instead of copied as links.

Fixed

  • Copying broken symbolic links will now include the path of the link in the error message.
  • Fix removing present standalone tests during TOML tweaks.

0.3.2 - 2019-10-08

Fixed

  • The default value for WorkspaceBuilder::fetch_registry_index_during_builds was mistakenly set to false instead of true by default.

0.3.1 - 2019-09-23

Fixed

  • Building Rustwide failed on Windows due to a missing feature flag on the getrandom crate.

0.3.0 - 2019-09-23

Added

  • New method Toolchain::rustc to execute a toolchain's rustc.
  • New method WorkspaceBuilder::fetch_registry_index_during_builds to enable or disable fetching the registry's index during each build. The method is only available when the unstable rustwide feature is enabled.
  • New method Crate::purge_from_cache to remove the cached copy of a crate.
  • New method BuildBuilder::patch_with_git to replace crates.
  • New method BuildBuilder::run to run a build.
  • New method Command::log_command to disable logging the command name and args before executing it.
  • New method WorkspaceBuilder::running_inside_docker to adapt Rustwide itself to run inside a Docker container.

Changed

  • BREAKING: The registry index will now be fetched during each build instead of being cached during the workspace's initialization. It's possible to use the WorkspaceBuilder::fetch_registry_index_during_builds method to revert to the old behavior.
  • BREAKING: The BuildDirectory::build method now returns an instance of BuildBuilder. You'll need to then call BuildBuilder::run to restore the old behavior.
  • When the unstable feature flag is enabled rustwide will use Cargo's -Zinstall-upgrade to update its tools instead of the cargo-install-upgrade crate. This will speed up the workspace initialization.

Fixed

  • Calling Workspace::purge_all_build_dirs returned an error when no directories were present instead of doing nothing.

0.2.0 - 2019-09-06

Added

  • New method Toolchain::uninstall to remove a previously installed toolchain.
  • New method Workspace::installed_toolchains to get a list of all the toolchains in the workspace.
  • New error PrepareError::PrivateGitRepository when Crate::fetch is called on a private or missing git repository.

Changed

  • BREAKING: The cmd::Binary enum is not exaustive anymore.
  • BREAKING: The cmd::MountKind enum is not exaustive anymore.
  • BREAKING: The cmd::Toolchain enum is not exaustive anymore.
  • The base path of mounts inside the sandbox is now /opt/rustwide on Linux and C:\rustwide on Windows.

Fixed

  • Cloning git repositories on windows hanged due to the credential manager.
  • Cleanups were failing on Windows due to permission errors.
  • Cached git repositories weren't updated after the initial clone.

0.1.0 - 2019-08-22

Added

  • Initial version of Rustwide, extracted from Crater.