All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased - ReleaseDate
0.8.4 - 2025-12-04
- PR#295 changes how GNU licenses are detected, previously in 0.8.3 they would be detected as their root eg.
GPL-3.0form, which are all deprecated. As all GNU licenses use the exact same text for the different variants, one of which is deprecated, they are now always detected as the-or-latervariant, eg.GPL-3.0-or-later. If this detection does not match the actual license requirement, eg.GPL-3.0-only, then it must be corrected by the user, as unfortunately the license detection cannot determine that due to the lack of distinction between the license texts.
0.8.3 - 2025-12-02
- PR#291 resolved #272 by exposing the core
generatefunction and associated types publicly. - PR#294 updated
spdxto 0.13, replacing the need foraskalonofor license detection.
0.8.2 - 2025-09-19
- PR#290 returns the behavior of allowing deprecated license identifiers in the
acceptedfield.
0.8.1 - 2025-09-18
- PR#289 fixed deserialization of
.cargo_vcs_info.jsonas thedirtyfield was only added in more recent versions. - PR#289 relaxed parsing of SPDX expressions for external crates as they can contain deprecated license identifiers the user has no control over.
0.8.0 - 2025-09-05
- PR#287 updated crates.
- PR#285 added workarounds for
rustixandlinux-raw-sys.
- PR#287 removed support for retrieving license information from clearly defined. It's too slow, unreliable, and tends to only add noise.
0.7.1 - 2025-03-20
0.7.0 - 2025-02-25
0.6.6 - 2024-11-19
- PR#268 resolved #267 by adding a
unicode-identworkaround to compensate for theLICENSE-UNICODEfile more closely matching theUnicode-3.0SPDX identifier rather than the expectedUnicode-DFS-2016one.
0.6.5 - 2024-11-18
- PR#261 resolved #246 by adding an
--offline(as well as--lockedand--frozen) option to thegeneratecommand. - PR#266 resolved #230 by adding a
--targetoption togenerate, allowing one to specify one or more targets to filter the dependency graph by, overriding thetargetsconfiguration option.
- PR#263 resolved #238 by adding the
native-certsfeature to use the native certificate store. This feature is not enabled by default as it is only required for corporate environments that man in the middle network traffic. - PR#265 resolved #198 by detecting if the parent process is powershell and exiting with an error if cargo-about's output is being redirected instead of using the
-ooption, as powershell is terrible and doesn't use utf-8 encoding by default. - PR#266 resolved #222 by adding some additional documentation on https://clearlydefined.io.
0.6.4 - 2024-08-12
- PR#254 reverted unintended
id->short_idfield rename.
0.6.3 yanked - 2024-08-12
- PR#251 updated crates and directly depend on
semver.
- PR#253 resolved #250 by changing the example template to emit unique anchors.
- PR#253 resolved #252 by ignoring
SIGPIPE.
0.6.2 - 2024-05-31
- PR#248 updated crates.
0.6.1 - 2024-01-23
0.6.0 - 2023-12-13
- PR#234 relaxed the version restriction on the
ringworkaround to account for the 0.17.* versions. - PR#236 fixed an issue where the
countfield for each license was the number of unique licenses, rather than the number of unique crates using that license, as intended. - PR#240 resolved #233 by publishing a binary for
aarch64-pc-windows-msvc. - PR#240 resolved #239 by correcting the name of the clarification field from
override_git_commit->override-git-commit.
0.5.7 - 2023-09-02
- PR#231 updated dependencies, which included fixing #225 by removing yanked crate versions, as well as getting rid of an advisory.
- PR#231 updated MSRV to 1.70.0 because a dependency required it, but it also allowed use of the
IsTerminaltrait, meaning we could get rid ofattyand the associated advisory.
0.5.6 - 2023-04-26
- PR#224 added the
--formatoption, allowing users to specifyjsonto output the raw JSON used by the (previously) required handlebars templates, closing #196.
0.5.5 - 2023-03-20
- PR#219 added the
clearly-defined-timeout-secsconfig option to specify a different timeout when attempting to gather license information from clearly defined. The default is 30 seconds. - PR#219 added the
max-depthconfig option to specify the maximum depth from a crate's root that are searched for licenses. Most license files will be located at or near the root, so this option allows reducing the time, CPU, and memory costs associated with in-depth file scanning while still retaining the benefits of local file scanning.
- PR#219 updated dependencies.
0.5.4 - 2023-02-01
- PR#216 add the
filter-noassertionconfiguration, allowing users to use local scanning for files that <clearlydefined.io> addsNOASSERTIONlicense ids to so that they are properly attributed or ignored.
0.5.3 - 2023-01-27
- PR#213 resolved #203 by adding the
--failoption to the generate subcommand. Thanks @mikayla-maki!
0.5.2 - 2022-11-25
- PR#205 updated to spdx 0.9 and therefore the SPDX license from version 3.14 -> 3.18. Thanks @o0Ignition0o!
0.5.1 - 2022-04-05
- PR#188 added the ability to ignore transitive dependencies via the
ignore-transitive-dependenciesconfig flag. Thanks @haraldreingruber! - PR#188 added a
cratesproperty to the handlebars context, see the about_list_by_crate_example for how it can be used. Thanks @haraldreingruber!
0.5.0 - 2022-03-04
- PR#187 closed #185 by making it so that all crates marked as
publish = falsewill be ignored, rather than the previous behavior of only ignore workspace members. Please file an issue if this behavior is not acceptable. Thanks @danielnelson!
0.4.8 - 2022-03-02
- PR#184 fixed #183 to correct an issue where licenses were misattributed to crates if 1 or more crates was marked as
publish = falseand private crates were ignored in the config. Thanks @danielnelson!
0.4.7 - 2022-02-09
- PR#182 fixed #181 by adding version, author, and about metadata to the CLI output, as
structoptby default added that, butclapv3 does not.
0.4.6 - 2022-02-07
0.4.5 - 2022-02-04
- PR#178 updated dependencies.
0.4.4 - 2021-12-23
- PR#177 updated the structure for the
.cargo_vcs_info.jsonfile since it now contains the path in the repo of the crate.
- PR#177 updated dependencies
0.4.3 - 2021-11-22
- PR#176 fixed #175 by updating
askalonowhich was causingcargo installfailures due tocargo install's default behavior of not using theCargo.lockfile. This got rid of thefailuredependency as well, which was pulling in a lot of additional crates that are now gone.
0.4.2 - 2021-11-21
0.4.1 - 2021-11-01
0.4.0 - 2021-10-28
- PR#168 added the ability to retrieve harvested license data from clearlydefined.io, which generally has superior machine harvested data to the old of approach of relying completely on askalono and local file scanning. This gathering is enabled by default, but can be turned off with the
no-clearly-definedoption in the config. - PR#168 added the concept of clarifications, which are essentially user specified overrides for the license for a crate, using 1 or more sources of truth to ensure there is no drift between the clarification and the crate license over time.
- PR#168 added built-in
workarounds, which are just opt-in clarifications that are built-in tocargo-aboutitself so that users ofcargo-aboutdon't have to repeat the same clarification process for various popular crates in the ecosystem. - PR#168 added the
clarifysubcommand, which can be used to help you clarify particular crates. - PR#168 added support for
acceptedlicenses on a per-crate basis in addition to the globalacceptedlicenses. - PR#169 added an mdbook at https://embarkstudios.github.io/cargo-about/ to give improved documentation over the previous README.md only approach.
- PR#169 removed the
additionalandignorecrate configuration in favor of clarifications and/or the better harvested content from clearlydefined.io.
0.3.0 - 2021-03-17
- PR#148 added the
-o, --output-fileargument to specify a file to write to. Thanks @MaulingMonkey! - PR#153 added the
--workspaceflag, closing #151. Thanks @MaulingMonkey!
- PR#157 returned to
mimallocfromrpmallocto address #137. The original issue withmimallocrelying on cmake was fixed. Thanks @badboy! - Crates which use the same license are also now sorted lexicographically.
- Updated dependencies, namely
krates.
0.2.3 - 2020-11-11
- Updated dependencies.
0.2.2 - 2020-05-07
- PR#84 switched from mimalloc to rpmalloc to avoid usage of cmake which broke musl builds.
0.2.1 - 2020-05-06 YANKED
- PR#83 changed the default allocator from the system allocator to mimalloc, which should give some performance improvements, particular when building for musl.
0.2.0 - 2020-01-24
cfg()dependendent crates can now be ignored by specifying only thetargets = []you actually build forbuildanddevdependencies can now be optionally ignored
- The
used_bylist of crates that use a particular license are now always sorted lexicographically
0.1.1 - 2019-12-12
- #20 Fewer files are now scanned for license information
- #21 Pipes in the file system are now ignored on unix systems
- #23 Fixes searching for the
about.tomlconfiguration file
0.1.0 - 2019-12-06
0.0.1 - 2019-11-07
- Initial add of the thing