hakari 0.11.1

Manage workspace-hack packages that do feature unification inside workspaces.
Documentation
# Changelog

## [0.11.1] - 2022-12-04

### Fixed

- Fixed a panic in rare circumstances ([#38]).

[#38]: https://github.com/guppy-rs/guppy/issues/38

## [0.11.0] - 2022-11-07

### Changed

- Updated guppy to 0.15.0.

## [0.10.2] - 2022-09-30

### Changed

- Repository location update.
- MSRV updated to Rust 1.58.

Thanks to [Carol Nichols](https://github.com/carols10cents) for her contributions to this release!

## [0.10.1] - 2022-05-29

### Changed

- Dependency updates: in particular, guppy updated to 0.14.2.

## [0.10.0] - 2022-03-14

### Added

Support for [weak dependencies and namespaced features].

[weak dependencies and namespaced features]: https://rust-lang.github.io/rfcs/3143-cargo-weak-namespaced-features.html

### Changed

- Public dependency version bump: `guppy` updated to 0.14.0.
- MSRV updated to Rust 1.56.

## [0.9.0] - 2022-02-06

### 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]https://github.com/facebookincubator/cargo-guppy/issues/596). This is not a breaking change to the hakari output because it is a bugfix.

## [0.8.1] - 2021-12-08

- Reverted the changes in version 0.7.3 because of [#524]https://github.com/facebookincubator/cargo-guppy/issues/524.

## [0.8.0] - 2021-12-06

### Added

- Support for explaining why a crate is in the workspace-hack, used by `cargo hakari explain`.

### Changed

- `VerifyErrors` now prints out information in the same format as explain---as a result, some of its APIs have
  changed.

## [0.7.3] - 2021-11-28

- Internal dependency `guppy-workspace-hack` updated to [`workspace-hack`]https://crates.io/crates/workspace-hack.

## [0.7.2] - 2021-11-27

Internal updates for `cargo-hakari 0.9.8`.

## [0.7.1] - 2021-11-25

### Added

- Support for [publishing a dummy workspace-hack]https://docs.rs/cargo-hakari/latest/cargo_hakari/publishing. This is an
  alternate publishing method that integrates better with existing workflows.
- New config option `dep-format-version`, to control `workspace-hack = ...` lines in other `Cargo.toml`s.
  - Newly initialized workspaces have `dep-format-version = "2"`.
  - Version 2 is required for the alternate publishing method.

## [0.7.0] - 2021-11-23

### Fixed

- Updated example in `README.md` now that the `cargo-guppy` repository has a workspace-hack.

### Changed

- Updated to `guppy 0.12.0`.

## [0.6.2] - 2021-10-09

### Fixed

- Backed out the [algorithmic improvement]https://github.com/facebookincubator/cargo-guppy/pull/468 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.1] - 2021-10-06

### Added

- Support for alternate registries through the `[registries]` section in the config.
  - This is a temporary workaround until [Cargo issue #9052]https://github.com/rust-lang/cargo/issues/9052 is resolved.

### Fixed

- [Fixed some workspace-hack contents missing in an edge case.]https://github.com/facebookincubator/cargo-guppy/pull/476

### Optimized

- An [algorithmic improvement]https://github.com/facebookincubator/cargo-guppy/pull/468 makes computation up to 33% faster.

## [0.6.0] - 2021-10-03

### Added

- A new `UnifyTargetHost::Auto` strategy, which uses the `ReplicateTargetOnHost` strategy
  if there are internal build dependencies or proc macros in the workspace, or the `UnifyIfBoth` strategy
  if not.

### Changed

- For `UnifyTargetHost`:
  - `Auto` is the new default strategy.
  - `ReplicateTargetAsHost` has been renamed to `ReplicateTargetOnHost`.
  - `UnifyOnBoth` has been renamed to `UnifyIfBoth`.

### Fixed

- Fixed some formatting issues with `WorkspaceOps`.

## [0.5.0] - 2021-10-01

### 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_excludes` to remove packages from the result at the end of computation.
  - This is in constract to `traversal_excludes` (renamed from `omitted_packages`) which removes
    packages both during and after computation.
- A new `cli-support` feature contains several new structs used by `cargo-hakari`.
- In `HakariBuilderSummary`, `version = "v2"` etc has been renamed to `resolver = "2"` to align with
  cargo.
  - The old options will continue to work.
- In `HakariBuilderSummary`, `traversal-excludes` and `final-excludes` are now easier to describe while
  deserializing: they now take a `workspace-members` list of names, and a `third-party` list of specifiers such as
  `{ name = "serde", version = "1" }`.
  - The resolver will now also fail if any specifiers are unmatched.

### Changed

- `omitted_packages` renamed to `traversal_excludes`.
- Because of the changes to how excludes are represented, old-style `HakariBuilderSummary` instances
  may no longer parse correctly.
- Public dependency bump: `guppy` updated to 0.11.1.
- MSRV updated to Rust 1.53.

## [0.4.1] - 2021-09-13

### Changed

- Public dependency version bump: `guppy` updated to 0.10.1.
- MSRV updated to Rust 1.51.

## [0.4.0] - 2021-09-13

(This release was never published because it was based on `guppy 0.10.0`, which was yanked.)

## [0.3.0] - 2021-03-11

### Changed

- Public dependency version bump: `guppy` updated to 0.9.0.
- `HakariCargoToml` now uses `camino`'s UTF-8 paths.
  - `HakariCargoToml::new` now accepts `impl Into<Utf8PathBuf>` rather than `impl Into<PathBuf>`.
  - `HakariCargoToml::toml_path` returns `&Utf8Path` instead of `&Path`.

## [0.2.0] - 2021-02-23

### Changed

- `hakari` now uses [`camino`]https://crates.io/crates/camino `Utf8Path` and `Utf8PathBuf` wrappers. These wrappers
  provide type-level assertions that returned paths are valid UTF-8.
- Public dependency version bumps:
  - `proptest` updated to version 1 and the corresponding feature renamed to `proptest1`.

## [0.1.1] - 2021-02-04

### Added

* Experimental Windows support. There may still be bugs around path normalization: please [report them]https://github.com/guppy-rs/guppy/issues/new.

### Fixed

* Fixed Cargo.toml output for path dependencies.
* Return an error for non-Unicode paths instead of silently producing incorrect paths.

## [0.1.0] - 2021-02-03

Initial release.

[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