NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #2421 most downloaded on crates.io
Evaluate Cargo.toml target specifications
Last release 1 months ago
25 Aug 2026
Release timing varies
gaps range from 2 weeks to 5 months
Nearly every release is documented
notes for 46 of 47 stable releases
1 version withdrawn
withdrawn after publishing
7 years old
48 releases · first in 2020
One column per quarter.
Updated cfg-expr to version 0.20.9, updating builtin targets to Rust 1.98.
cfg-expr to version 0.20.9, updating builtin targets to Rust 1.98.summaries feature, PlatformSummary deserialization now rejectsCustomTripleCreateError::Unavailable is now deprecated, and replaced with CustomJsonUnavailable / CustomCfgUnavailable .
rustc --print=cfg output, under a new custom-cfg feature. (The existing custom feature now implicitly includes custom-cfg.)CustomTripleCreateError::Unavailable is now deprecated, and replaced with CustomJsonUnavailable/CustomCfgUnavailable.Updated cfg-expr to version 0.20.6, updating builtin targets to Rust 1.93.
cfg-expr to version 0.20.6, updating builtin targets to Rust 1.93.In custom targets, support arbitrary strings such as "immediate-abort" for panic-strategy .
"immediate-abort" for panic-strategy.Updated cfg-expr to version 0.20.5, updating builtin targets to Rust 1.92.
cfg-expr to version 0.20.5, updating builtin targets to Rust 1.92.For custom targets, updated the deserializer to handle `target-pointer-width` becoming an integer in the newest Rust nightlies.
target-pointer-width becoming an integer in the newest Rust nightlies.Updated cfg-expr to version 0.20.3, updating builtin targets to Rust 1.90.
cfg-expr to version 0.20.3, updating builtin targets to Rust 1.90.Replaced obsolete doc_auto_cfg with doc_cfg, to fix Rust nightly builds with the doc_cfg flag enabled.
Replaced obsolete doc_auto_cfg with doc_cfg, to fix Rust nightly builds with the doc_cfg flag enabled.
Updated cfg-expr to version 0.20.2, updating builtin targets to Rust 1.89.
cfg-expr to version 0.20.2, updating builtin targets to Rust 1.89.Internal dependency cfg-expr updated to 0.20.2, updating builtin targets to Rust 1.88.
cfg-expr updated to 0.20.2, updating builtin targets to Rust 1.88.Internal dependency cfg-expr updated to 0.18.0, updating builtin targets to Rust 1.85.
Internal dependency cfg-expr updated to 0.18.0, updating builtin targets to Rust 1.85.
Removed unused direct dependency on unicode-ident. Thanks hanna-kruppe for your contribution!
The old method is still available but has been marked deprecated.
Triple::from_rustc_version_verbose and Platform::from_rustc_version_verbose to parse rustc -vV output and obtain a triple.Platform::current to Platform::build_target to indicate that it is determined at build time, not at runtime. The old method is still available but has been marked deprecated.Improved error message for CustomTripleCreateError::Unavailable.
CustomTripleCreateError::Unavailable.Error::CustomTripleCreate is now deprecated. This error was never actually created, and will be removed in the future.
CustomTripleCreateError now has input, input_string, line_and_column,
and label methods. These methods aid in implementing
target-spec-miette, and also allow
dependencies to be oblivious to whether the custom feature is enabled.target-family and target-endian
fields correctly. Previously, these fields were ignored and always treated
as empty.Error::CustomTripleCreate is now deprecated. This error was never actually
created, and will be removed in the future.CustomTripleCreateError::Deserialize is now deprecated. target-spec now creates
a different DeserializeJson variant when deserialization fails. This variant
also contains the original input being deserialized.cfg-expr updated to 0.17.2, updating builtin targets to Rust 1.83.Internal dependency cfg-expr updated to 0.17.0, updating builtin targets to Rust 1.81.
cfg-expr updated to 0.17.0, updating builtin targets to Rust 1.81.Update minimum version of target-lexicon dependency to 0.12.16, to ensure that minimal-version builds work.
target-lexicon dependency to 0.12.16, to ensure that minimal-version builds work.Internal dependency cfg-expr updated to 0.16.0, updating builtin targets to Rust 1.80.
cfg-expr updated to 0.16.0, updating builtin targets to Rust 1.80.Internal dependency cfg-expr updated to 0.15.6, updating builtin targets to Rust 1.75.
cfg-expr updated to 0.15.6, updating builtin targets to Rust 1.75.Internal dependency cfg-expr updated to 0.15.4, updating builtin targets to Rust 1.71.
cfg-expr updated to 0.15.4, updating builtin targets to Rust 1.71.TargetSpec now stores plain strings rather than parsed triples. This matches what Cargo does.
TargetSpec now stores plain strings rather than parsed triples. This matches what Cargo does.TargetExpression has been renamed renamed to TargetSpecExpression.Error::UnknownTargetTriple has been renamed to Error::InvalidTargetSpecString, and returns a new PlainStringParseError type.TargetSpec, TargetSpecExpression and TargetSpecPlainString now implement std::fmt::Display.Triple's Eq, PartialEq, Ord, PartialOrd and Hash now take into account custom platforms.
Triple's Eq, PartialEq, Ord, PartialOrd and Hash now take into account custom platforms.Removed deprecated Error::UnknownPredicate variant.
Added support for custom triples and platforms via JSON specifications:
custom feature.Platform and Triple:
is_standard: returns true if this is a standard platform (builtin or heuristic).is_custom: returns true if this is a custom platform.is_builtin: returns true if this is a builtin platform.is_heuristic: returns true if this platform was determined heuristically.new_strict methods to Platform and Triple, to disable heuristic target parsing.target_os = "none" is now correctly handled.cfg-expr updated to 0.15.3, updating builtin targets to Rust 1.70.PlatformSummary is now non-exhaustive.PlatformSummary::new now creates a new PlatformSummary from a triple string. (The old PlatformSummary::new has been renamed to PlatformSummary::from_platform).Error::UnknownPredicate variant.Error no longer implements Eq or PartialEq due to one of its variants now containing serde_json::Error.Internal dependency cfg-expr updated to 0.15.0, updating builtin targets to Rust 1.68.
cfg-expr updated to 0.15.0, updating builtin targets to Rust 1.68.Added note to readme about MSRV for target-spec 1.3.x.
Added note to readme about MSRV for target-spec 1.3.x.
Internal dependency cfg-expr updated to 0.13.0, updating builtin targets to Rust 1.66.
cfg-expr updated to 0.13.0, updating builtin targets to Rust 1.66.Internal dependency cfg-expr updated to 0.12.0, enabling parsing of target_abi.
Internal dependency cfg-expr updated to 0.12.0, enabling parsing of target_abi.
ExpressionParseError now carries information about the reason a target expression couldn't be parsed. This has been done to support pretty-printing vi
ExpressionParseError now carries information about the reason a target expression couldn't be
parsed. This has been done to support pretty-printing via the new
target-spec-miette crate.Thanks to Carol Nichols for her contributions to this release!
Thanks to Carol Nichols for her contributions to this release!
As a result, Error::UnknownPredicate is no longer in use and has been deprecated.
Error::UnknownPredicate is no longer in use and has been deprecated.### Changed - Internal dependency updates. - MSRV updated to Rust 1.56.
Add doc_cfg to the docs.rs build.
doc_cfg to the docs.rs build.No breaking changes in this release compared to version 0.9.
No breaking changes in this release compared to version 0.9.
cfg-expr updated to 0.10.0.Nothing published for this version
…ordering of nested metadata tables. This is a breaking change for code that names the following types:
Updated toml to 1.1.4. The on-disk format written by
Summary::write_to_string is unchanged: summaries are now written by the new
toml_compat module, which reproduces the output of toml 0.5's pretty
serializer, including its ordering of nested metadata tables. This is a
breaking change for code that names the following types:
Summary::metadata is now toml 1.x's Table.Summary::parse, Summary::with_metadata, Summary::to_string andSummary::write_to_string return toml 1.x's error types.Summary::with_metadata no longer rejects metadata whose fields areSummaryDiff is still serialized with toml's own serializer, whoseSummaries are parsed strictly according to the TOML 1.1 specification;
documents that the lenient toml 0.5 parser accepted but that are not valid
TOML are now rejected.
MSRV updated to Rust 1.91, as required by dependencies.
Triple represents a target triple, uniquely identified by a triple string.TargetExpression represents a target expression beginning with cfg(.target-spec now uses target-lexicon to parse triples,
while continuing to use cfg-expr for expressions and evaluation.
target-spec is now more forward compatible, since new targets in future versions of Rust
can be supported with non-breaking updates to target-lexicon.TargetSpec is now an enum with Triple and TargetExpression variants.Platform no longer has a lifetime parameter.cfg-expr is now a private dependency again (target-lexicon is also a private dependency).Public dependency version bumps:
cfg-expr updated to 0.7.1.proptest updated to version 1 and the corresponding feature renamed to proptest1.cfg-expr version requirement relaxed: 0.6 through 0.7 are now supported. There are no API changes between the two versions.
cfg-expr version requirement relaxed: 0.6 through 0.7 are now supported. There are no API changes between
the two versions.Platform now implements Hash + Eq + Ord.
Platform now implements Hash + Eq + Ord.TargetFeatures and Platform::add_flags now accept Cow<'static, str>, simplifying lifetime management in many
cases.cfg-expr updated to 0.6.0.Updated cfg-expr dependency to 0.5.0.
cfg-expr dependency to 0.5.0.Fixed compilation on platforms without target features (#175).
New, optional feature summaries to provide serialization and deserialization for Platform and TargetFeatures.
summaries to provide serialization and deserialization
for Platform and TargetFeatures.Platform::is_custom returns true if the platform was created with the custom
constructor.Error type.Platform::new and Platform::current now return errors instead of None.Platform::custom creates platforms that are unknown to rustc.
Platform::custom creates platforms that are unknown to rustc.
cfg-expr, which is now a public dependency.Platform::triple now returns a &'a str
instead of a &'static str.New feature proptest010 to generate random platforms for property testing.
proptest010 to generate random platforms for property testing.Better handling of unknown flags.
Platform::add_flags to allow setting flags that evaluate to true.These changes were prompted by how cargo-web sets the cargo_web flag to
true for cargo web build.
This was mistakenly published and was yanked.
This was mistakenly published and was yanked.
### Changed - Updated repository links.
Added support for parsing specs and platforms separately from evaluating them, making error-less evaluation possible.
cfg-expr as the backend for cfg() expressions.<!-- next-url --> [3.7.0]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-3.7.0 [3.6.0]: https://github.com/guppy-rs/guppy/releases/tag/ta
<!-- next-url --> [3.7.0]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-3.7.0 [3.6.0]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-3.6.0 [3.5.7]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-3.5.7 [3.5.6]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-3.5.6 [3.5.5]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-3.5.5 [3.5.4]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-3.5.4 [3.5.3]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-3.5.3 [3.5.2]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-3.5.2 [3.5.1]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-3.5.1 [3.5.0]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-3.5.0 [3.4.2]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-3.4.2 [3.4.1]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-3.4.1 [3.4.0]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-3.4.0 [3.3.1]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-3.3.1 [3.3.0]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-3.3.0 [3.2.2]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-3.2.2 [3.2.1]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-3.2.1 [3.2.0]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-3.2.0 [3.1.0]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-3.1.0 [3.0.1]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-3.0.1 [3.0.0]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-3.0.0 [2.0.1]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-2.0.1 [2.0.0]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-2.0.0 [1.4.0]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-1.4.0 [1.3.1]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-1.3.1 [1.3.0]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-1.3.0 [1.2.2]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-1.2.2 [1.2.1]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-1.2.1 [1.2.0]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-1.2.0 [1.1.0]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-1.1.0 [1.0.2]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-1.0.2 [1.0.1]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-1.0.1 [1.0.0]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-1.0.0 [0.9.0]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-0.9.0 [0.8.0]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-0.8.0 [0.7.0]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-0.7.0 [0.6.1]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-0.6.1 [0.6.0]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-0.6.0 [0.5.0]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-0.5.0 [0.4.1]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-0.4.1 [0.4.0]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-0.4.0 [0.3.0]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-0.3.0 [0.2.4]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-0.2.4 [0.2.3]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-0.2.3 [0.2.1]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-0.2.1 [0.2.0]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-0.2.0 [0.1.0]: https://github.com/guppy-rs/guppy/releases/tag/target-spec-0.1.0
Your coding agent can read these notes before it upgrades. Set up the MCP server →