The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.16.0 - 2023-05-02
- 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
- CI toolchains can now install additional targets and components.
0.15.1 - 2022-09-04
- Updated
nix
dependency to 0.25. - Replaced
winapi
dependency withwindows-sys
.
0.15.0 - 2022-05-22
- 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.
- BREAKING:
Crate::registry
now requires anAlternativeRegistry
rather than the registry URL as string.
0.14.0 - 2021-08-19
- 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
- The
--locked
flag is not used anymore duringcargo fetch
.
0.13.0 - 2021-04-20
- New method
Toolchain::rustup_binary
to allow running arbitrary binaries managed by rustup. Before, onlyrustc
andcargo
could be run.
- The default sandbox image is now fetched from GitHub Container Registry.
- Rustwide now removes
.cargo/config.toml
,rust-toolchain
, andrust-toolchain.toml
before running a build.
0.12.0 - 2021-01-28
- New variant
PrepareError::MissingDependencies
, returned during the prepare step when a dependency does not exist.
- Path dependencies are no longer removed from
Cargo.toml
during the prepare step.
0.11.1 - 2021-01-25
- Updated tokio dependency to 1.0.
0.11.0 - 2020-10-30
- New method
Crate::registry
to use crates from alternative registries.
- Allow workspaces by having
validate_manifest
usemetadata --no-deps
instead of deprecatedread-manifest
, therefor no longer failing on workspaces andTomlTweaker
no longer removing the workspace table fromCargo.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
- 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
- BREAKING: support for CI toolchains is now gated behind the
unstable-toolchain-ci
Cargo feature. - BREAKING: all functions and methods inside
cmd
now returnCommandError
. winapi
is no longer required on unix;nix
is no longer required on windows.- Relaxed lifetime restrictions of
Build::cmd
andBuild::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
- New method
Toolchain::remove_component
- 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
- New method
Workspace::purge_all_caches
.
- The exact image has used during builds will be logged.
- Subcommands executed in sandbox respect configs of parent command.
0.7.1 - 2020-05-20
- Updated dependencies.
0.7.0 - 2020-05-07
- New struct
cmd::ProcessLinesActions
to expose actions available while reading live output from a command.
- BREAKING:
Command::process_lines
now accepts aFnMut(&str, &mut ProcessLinesActions)
. - The file
.cargo/config
will be removed before starting the build.
0.6.1 - 2020-05-04
- Fix
Command::process_lines
not working in sandboxed enviroments.
0.6.0 - 2020-04-01
- New method
SandboxBuilder::limit_cpu
0.5.1 - 2020-01-31
- Fix
unstable
feature not working after the Rust 1.41.0 stable release.
0.5.0 - 2019-12-30
- New enum
toolchain::ToolchainError
- New method
Toolchain::remove_target
- New method
Toolchain::installed_targets
0.4.0 - 2019-12-23
- 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.
- 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.
- 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
- The default value for
WorkspaceBuilder::fetch_registry_index_during_builds
was mistakenly set tofalse
instead oftrue
by default.
0.3.1 - 2019-09-23
- Building Rustwide failed on Windows due to a missing feature flag on the getrandom crate.
0.3.0 - 2019-09-23
- New method
Toolchain::rustc
to execute a toolchain'srustc
. - 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 theunstable
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.
- 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 ofBuildBuilder
. You'll need to then callBuildBuilder::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 thecargo-install-upgrade
crate. This will speed up the workspace initialization.
- Calling
Workspace::purge_all_build_dirs
returned an error when no directories were present instead of doing nothing.
0.2.0 - 2019-09-06
- 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
whenCrate::fetch
is called on a private or missing git repository.
- 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 andC:\rustwide
on Windows.
- 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
- Initial version of Rustwide, extracted from Crater.