hakari
Manage workspace-hack packages that do feature unification inside workspaces.
0.17.9
5.0M downloads/mo
#4520 most downloaded on crates.io
guppy-rs/guppy
What this package is like to depend on
Last release 7 months ago
27 Dec 2025
Release timing varies
gaps range from 2 weeks to 10 months
Nearly every release is documented
notes for 38 of 38 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
38 releases · first in 2021
1 release in the last 12 months
see the full history below
Release timeline
38 releases · Feb 2021 to Dec 2025Releases
latest 38-
0.17.927 Dec 2025Release notes
Open source →Changed
- Builtin targets updated to Rust 1.92.
- MSRV updated to Rust 1.86.
-
0.17.821 Feb 2025 -
0.17.705 Jan 2025Release notes
Open source →Added
Added support for custom sparse registries (
sparse+https://...). Thanks to jonhoo for your first contribution! -
0.17.623 Dec 2024Release notes
Open source →Added
Added support for the upcoming Cargo resolver version 3. Resolver version 3 enables MSRV-aware version resolution in Cargo.
The portion of dependency resolution that hakari works with (package and feature resolution) happens after dependency versions have been resolved and
Cargo.lockis refreshed. This means that from hakari's perspective, resolver version 3 is the same as version 2.Changed
- Builtin targets updated to Rust 1.83.
- MSRV updated to Rust 1.82.
-
0.17.506 Oct 2024Release notes
Open source →Fixed
cargo hakari initnow setsedition = "2021"in the created workspace-hack'sCargo.toml. This silences a Cargo warning about a missing edition. -
0.17.411 Sep 2024 -
0.17.329 Jul 2024Release notes
Open source →Fixed
- Fixed a crash in some workspaces (#292).
Changed
- Updated MSRV to Rust 1.75.
- Builtin targets updated to Rust 1.80.
-
0.17.205 Feb 2024Release notes
Open source →Added
- The default
hakari.tomltemplate for new projects now suggests Apple Silicon (aarch64-apple-darwin) as well.
Fixed
- Consider dev-dependencies of proc-macro crates -- previously, we weren't doing so.
This may change some checked-in workspace-hacks, but it is a bugfix and not a breaking change. Testing against several real-world workspace-hacks, only one of them changed.
- The default
-
0.17.104 Oct 2023 -
0.17.004 Oct 2023Release notes
Open source →Added
New config option
workspace-hack-line-style, with three possible values:-
"full":
my-workspace-hack = { version = "0.1", path = ... }. This is the default and a good way to get started. -
"version-only":
my-workspace-hack = { version = "0.1" }. Specifying versions this way is useful if you've published a stub crate to crates.io (see the publishing section). You can use this in combination with apatchdirective in the rootCargo.toml:[patch.crates-io.my-workspace-hack] path = "workspace-hack" -
"workspace-dotted":
my-workspace-hack.workspace = true. To use this, define a workspace dependency in the rootCargo.toml:[workspace.dependencies] my-workspace-hack = { version = "0.1", path = "workspace-hack" } # or, along with a patch directive: my-workspace-hack = { version = "0.1" }
Changed
- MSRV updated to Rust 1.70.
-
-
0.16.029 Jul 2023 -
0.15.026 Jun 2023 -
0.14.019 Jun 2023 -
0.13.215 Apr 2023Release notes
Open source → -
0.13.119 Jan 2023Release notes
Open source →Fixed
The default template for
hakari.tomlnow specifiesdep-format-version = "4". -
0.13.019 Jan 2023Release notes
Open source →Added
Introduced a new
dep-format-version, version 4, with a change to always sort outputs alphabetically. This matches the order produced by cargo-sort (#65). -
0.12.008 Jan 2023Release notes
Open source →Added
Introduced a new
dep-format-version, version 3, with these changes:- Always elide build metadata from version strings (e.g. with the semver string
5.4.0+g7f361a3, don't show the bit after the + sign). Thanks Nikhil Benesch for your first contribution! - Remove private features from the workspace-hack's Cargo.toml. This should simplify the output greatly.
Changed
- MSRV updated to Rust 1.62.
- target-spec updated to Rust 1.66.
- Always elide build metadata from version strings (e.g. with the semver string
-
0.11.105 Dec 2022 -
0.11.007 Nov 2022 -
0.10.230 Sep 2022Release notes
Open source →Changed
- Repository location update.
- MSRV updated to Rust 1.58.
Thanks to Carol Nichols for her contributions to this release!
-
0.10.129 May 2022 -
0.10.015 Mar 2022Release notes
Open source →Added
Support for weak dependencies and namespaced features.
Changed
- Public dependency version bump:
guppyupdated to 0.14.0. - MSRV updated to Rust 1.56.
- Public dependency version bump:
-
0.9.026 Feb 2022Release notes
Open source →Added
doc_cfg-based feature labels to rustdoc.
Changed
- Public dependency bump: guppy updated to 0.13.0.
Fixed
- A small fix to Cargo build simulations (#596). This is not a breaking change to the hakari output because it is a bugfix.
-
0.8.108 Dec 2021 -
0.8.007 Dec 2021Release notes
Open source →Added
- Support for explaining why a crate is in the workspace-hack, used by
cargo hakari explain.
Changed
VerifyErrorsnow prints out information in the same format as explain---as a result, some of its APIs have changed.
- Support for explaining why a crate is in the workspace-hack, used by
-
0.7.329 Nov 2021 -
0.7.227 Nov 2021 -
0.7.126 Nov 2021Release notes
Open source →Added
- Support for publishing a dummy workspace-hack. This is an alternate publishing method that integrates better with existing workflows.
- New config option
dep-format-version, to controlworkspace-hack = ...lines in otherCargo.tomls.- Newly initialized workspaces have
dep-format-version = "2". - Version 2 is required for the alternate publishing method.
- Newly initialized workspaces have
-
0.7.023 Nov 2021Release notes
Open source →Fixed
- Updated example in
README.mdnow that thecargo-guppyrepository has a workspace-hack.
Changed
- Updated to
guppy 0.12.0.
- Updated example in
-
0.6.209 Oct 2021Release notes
Open source →Fixed
- Backed out the algorithmic improvement from earlier because it didn't handle some edge cases.
- Also simulate builds with dev-dependencies disabled.
- Remove empty sections from the output.
-
0.6.107 Oct 2021Release notes
Open source →Added
- Support for alternate registries through the
[registries]section in the config.- This is a temporary workaround until Cargo issue #9052 is resolved.
Fixed
Optimized
- An algorithmic improvement makes computation up to 33% faster.
- Support for alternate registries through the
-
0.6.003 Oct 2021Release notes
Open source →Added
- A new
UnifyTargetHost::Autostrategy, which uses theReplicateTargetOnHoststrategy if there are internal build dependencies or proc macros in the workspace, or theUnifyIfBothstrategy if not.
Changed
- For
UnifyTargetHost:Autois the new default strategy.ReplicateTargetAsHosthas been renamed toReplicateTargetOnHost.UnifyOnBothhas been renamed toUnifyIfBoth.
Fixed
- Fixed some formatting issues with
WorkspaceOps.
- A new
-
0.5.001 Oct 2021Release notes
Open source →Added
- hakari now outputs packages corresponding to the intersection of all platforms, then outputs any other platform-specific packages left. This simplifies the output greatly and is also more correct.
- A new option
final_excludesto remove packages from the result at the end of computation.- This is in constract to
traversal_excludes(renamed fromomitted_packages) which removes packages both during and after computation.
- This is in constract to
- A new
cli-supportfeature contains several new structs used bycargo-hakari. - In
HakariBuilderSummary,version = "v2"etc has been renamed toresolver = "2"to align with cargo.- The old options will continue to work.
- In
HakariBuilderSummary,traversal-excludesandfinal-excludesare now easier to describe while deserializing: they now take aworkspace-memberslist of names, and athird-partylist of specifiers such as{ name = "serde", version = "1" }.- The resolver will now also fail if any specifiers are unmatched.
Changed
omitted_packagesrenamed totraversal_excludes.- Because of the changes to how excludes are represented, old-style
HakariBuilderSummaryinstances may no longer parse correctly. - Public dependency bump:
guppyupdated to 0.11.1. - MSRV updated to Rust 1.53.
-
0.4.114 Sep 2021Release notes
Open source →Changed
- Public dependency version bump:
guppyupdated to 0.10.1. - MSRV updated to Rust 1.51.
- Public dependency version bump:
-
0.3.011 Mar 2021Release notes
Open source →Changed
- Public dependency version bump:
guppyupdated to 0.9.0. HakariCargoTomlnow usescamino's UTF-8 paths.HakariCargoToml::newnow acceptsimpl Into<Utf8PathBuf>rather thanimpl Into<PathBuf>.HakariCargoToml::toml_pathreturns&Utf8Pathinstead of&Path.
- Public dependency version bump:
-
0.2.024 Feb 2021Release notes
Open source →Changed
hakarinow usescaminoUtf8PathandUtf8PathBufwrappers. These wrappers provide type-level assertions that returned paths are valid UTF-8.- Public dependency version bumps:
proptestupdated to version 1 and the corresponding feature renamed toproptest1.
-
0.1.105 Feb 2021Release notes
Open source →Added
- Experimental Windows support. There may still be bugs around path normalization: please report them.
Fixed
- Fixed Cargo.toml output for path dependencies.
- Return an error for non-Unicode paths instead of silently producing incorrect paths.
-
0.1.004 Feb 2021Release notes
Open source →Initial release.
<!-- next-url --> [0.17.9]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.17.9 [0.17.8]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.17.8 [0.17.7]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.17.7 [0.17.6]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.17.6 [0.17.5]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.17.5 [0.17.4]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.17.4 [0.17.3]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.17.3 [0.17.2]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.17.2 [0.17.1]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.17.1 [0.17.0]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.17.0 [0.16.0]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.16.0 [0.15.0]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.15.0 [0.14.0]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.14.0 [0.13.2]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.13.2 [0.13.1]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.13.1 [0.13.0]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.13.0 [0.12.0]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.12.0 [0.11.1]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.11.1 [0.11.0]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.11.0 [0.10.2]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.10.2 [0.10.1]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.10.1 [0.10.0]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.10.0 [0.9.0]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.9.0 [0.8.1]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.8.1 [0.8.0]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.8.0 [0.7.3]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.7.3 [0.7.2]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.7.2 [0.7.1]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.7.1 [0.7.0]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.7.0 [0.6.2]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.6.2 [0.6.1]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.6.1 [0.6.0]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.6.0 [0.5.0]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.5.0 [0.4.1]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.4.1 [0.4.0]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.4.0 [0.3.0]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.3.0 [0.2.0]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.2.0 [0.1.1]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.1.1 [0.1.0]: https://github.com/guppy-rs/guppy/releases/tag/hakari-0.1.0