The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- extend
ProcessStatisticsstruct with some traits & helper functions - support new cargo error text in rust 1.95 for
MissingDependencieserror
- 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
- make
Crate::copy_source_topublic.
- 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
- BREAKING categorize more previously uncategorised cargo errors See #98
- BREAKING ensure callers of BuildDirectory::run can determine if the source of the error is in Prepare::prepare. See #103
- "move manifest validation later in the preparation to harden against possible cargo changes
- Added
Command::source_dir_mount_kind
- Fixed running tests inside of nixos
- unfreeze rustup version, don't canoncalize binary names
- temporarily freeze used rustup version to 1.27.1, disable rustup self-update see rust-lang/rustup#4224 and #94
- BREAKING New variant
CommandError::SandboxContainerCreatefor previous more genericCommandError::ExecutionFailedon sandbox creation.
- use ubuntu-22.04 instead of ubuntu-latest for tests
- BREAKING Extend
CommandError::ExecutionFailedandPrepareErrorto optionally include stderr
- New method
LogStorage::set_max_line_lengthto limit the logged line length when capturing builds logs
- BREAKING migrated generic error return types from
failure::Errortoanyhow::Error. - BREAKING
prepare::PrepareErroris now based onthiserror::Error, and notfailure::Failany more. - BREAKING
toolchain::ToolchainErroris now based onthiserror::Error, and notfailure::Failany more. - Update
attohttpcdependency to 0.28 - Update
base64dependency to 0.22 - Update
env_loggerdependency to 0.11 - Update
git2dependency to 0.19 - Update
httpdependency to 1.1 - Update
nixdependency to 0.29 - Update
remove_dir_alldependency to 0.8 - Update
tomldependency to 0.8. - Update
tiny_httpdependency to 0.12 - Update
windows-sysdependency to 0.52
0.16.0 - 2023-05-02
- New method
Build::fetch_build_std_dependenciesfor using-Zbuild-stdwithin 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
nixdependency to 0.25. - Replaced
winapidependency 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
AlternativeRegistryto configure how an alternative registry can be accessed.
- BREAKING:
Crate::registrynow requires anAlternativeRegistryrather than the registry URL as string.
0.14.0 - 2021-08-19
- New method
Toolchain::is_needed_by_rustwidefor checking if a toolchain is needed by rustwide itself (for installing tools).
0.13.1 - 2021-05-21
- The
--lockedflag is not used anymore duringcargo fetch.
0.13.0 - 2021-04-20
- New method
Toolchain::rustup_binaryto allow running arbitrary binaries managed by rustup. Before, onlyrustcandcargocould be run.
- The default sandbox image is now fetched from GitHub Container Registry.
- Rustwide now removes
.cargo/config.toml,rust-toolchain, andrust-toolchain.tomlbefore 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.tomlduring the prepare step.
0.11.1 - 2021-01-25
- Updated tokio dependency to 1.0.
0.11.0 - 2020-10-30
- New method
Crate::registryto use crates from alternative registries.
- Allow workspaces by having
validate_manifestusemetadata --no-depsinstead of deprecatedread-manifest, therefor no longer failing on workspaces andTomlTweakerno longer removing the workspace table fromCargo.toml. Commandnow 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-ciCargo feature. - BREAKING: all functions and methods inside
cmdnow returnCommandError. winapiis no longer required on unix;nixis no longer required on windows.- Relaxed lifetime restrictions of
Build::cmdandBuild::cargo. - The requirement of using an image similar to
crates-build-envhas 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::ProcessLinesActionsto expose actions available while reading live output from a command.
- BREAKING:
Command::process_linesnow accepts aFnMut(&str, &mut ProcessLinesActions). - The file
.cargo/configwill be removed before starting the build.
0.6.1 - 2020-05-04
- Fix
Command::process_linesnot working in sandboxed enviroments.
0.6.0 - 2020-04-01
- New method
SandboxBuilder::limit_cpu
0.5.1 - 2020-01-31
- Fix
unstablefeature 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::CiToolchaincontaining a CI toolchain's metadata. - New struct
toolchain::DistToolchaincontaining a dist toolchain's metadata. - New method
WorkspaceBuilder::rustup_profileto configure the rustup profile used during builds. - New method
Toolchain::as_cito get a CI toolchain's metadata. - New method
Toolchain::as_distto get a dist toolchain's metadata. - New method
Toolchain::cito create CI toolchains. - New method
Toolchain::distto create dist toolchains.
- BREAKING: The default rustup profile is now
minimal. - BREAKING: The
Toolchainenum 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_buildswas mistakenly set tofalseinstead oftrueby 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::rustcto execute a toolchain'srustc. - New method
WorkspaceBuilder::fetch_registry_index_during_buildsto enable or disable fetching the registry's index during each build. The method is only available when theunstablerustwide feature is enabled. - New method
Crate::purge_from_cacheto remove the cached copy of a crate. - New method
BuildBuilder::patch_with_gitto replace crates. - New method
BuildBuilder::runto run a build. - New method
Command::log_commandto disable logging the command name and args before executing it. - New method
WorkspaceBuilder::running_inside_dockerto 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_buildsmethod to revert to the old behavior. - BREAKING: The
BuildDirectory::buildmethod now returns an instance ofBuildBuilder. You'll need to then callBuildBuilder::runto restore the old behavior. - When the
unstablefeature flag is enabled rustwide will use Cargo's-Zinstall-upgradeto update its tools instead of thecargo-install-upgradecrate. This will speed up the workspace initialization.
- Calling
Workspace::purge_all_build_dirsreturned an error when no directories were present instead of doing nothing.
0.2.0 - 2019-09-06
- New method
Toolchain::uninstallto remove a previously installed toolchain. - New method
Workspace::installed_toolchainsto get a list of all the toolchains in the workspace. - New error
PrepareError::PrivateGitRepositorywhenCrate::fetchis called on a private or missing git repository.
- BREAKING: The
cmd::Binaryenum is not exaustive anymore. - BREAKING: The
cmd::MountKindenum is not exaustive anymore. - BREAKING: The
cmd::Toolchainenum is not exaustive anymore. - The base path of mounts inside the sandbox is now
/opt/rustwideon Linux andC:\rustwideon 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.