NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #4701 most downloaded on crates.io
Types for rustdoc's json output
Last release 2 months ago
29 Jul 2026
Release timing varies
gaps range from 2 weeks to 4 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
2 versions withdrawn
withdrawn after publishing
6 years old
65 releases · first in 2020
One column per quarter.
Upstream Commit: `d1da7c52545d95a4458ca4abee868c9743223069`
TODO: Changelog.
d1da7c52545d95a4458ca4abee868c9743223069<a name="v0.60.0"></a>
Breaking change: Add default_unstable field into Function, AssocConst and AssocType. (rust#158468)
Breaking change: Add default_unstable field into Function, AssocConst and AssocType.
(rust#158468)
bd938c5bfb48fe83ef8f2f54f562c2394c17d89f<a name="v0.59.0"></a>
Breaking change: Add Item::const_stability field (rust#158343)
Breaking change: Add Item::const_stability field
(rust#158343)
fee82a37e9eabf8afe6db62c0177baaf63356a98<a name="v0.58.0"></a>
Breaking change: Add Item::stability field (rust#158230)
Breaking change: Add Item::stability field
(rust#158230)
fee82a37e9eabf8afe6db62c0177baaf63356a98<a name="v0.57.4"></a>
The last v0.57.4 commit failed to publish, due to issues in the auto-publish CI flow. Hopefully those have been fixed.
The last v0.57.4 commit failed to publish, due to issues in the
auto-publish CI flow. Hopefully those have been fixed.
Add rust-version = "1.85.0" to Cargo.toml
fee82a37e9eabf8afe6db62c0177baaf63356a98<a name="v0.57.3"></a>
Documentation Improvement: Fix doctest that didn't compile.
Documentation Improvement: Fix doctest that didn't compile.
cf951bae8758e387dcc2b2480ccd971cd6a15972<a name="v0.57.2"></a>
New Feature: Add the rkyv_0_8 Cargo feature, to derive traits for the rkyv zero-copy deserialization framework (rust#153283).
New Feature: Add the rkyv_0_8 Cargo feature, to derive traits for the rkyv zero-copy deserialization framework
(rust#153283).
cf951bae8758e387dcc2b2480ccd971cd6a15972<a name="v0.57.1"></a>
New Method: Add ItemEnum::ItemKind method (rust#153279).
New Method: Add ItemEnum::ItemKind method
(rust#153279).
Packaging Improvement: Don't package development scripts (#56).
931e2c4e43fde6a308ee9933538142ed0927f6d9<a name="v0.57.0"></a>
Breaking Change: Add ExternalCrate::path field. This can be used to enable robust resolution of external crates (rust#149043).
Breaking Change: Add ExternalCrate::path field.
This can be used to enable robust resolution of external crates
(rust#149043).
361af821ab169a98e9fc1db5d3a57978504ed379<a name="v0.56.0"></a>
Breaking Change: Add ItemKind::Attribute variant (rust#142472).
Breaking Change: Add ItemKind::Attribute variant
(rust#142472).
ab0ee84eac9732e4e81e559c688846b4c1bd400a<a name="v0.55.0"></a>
Breaking Change: Add Attribute::MacroUse variant. This means #[macro_use] is no longer represented by Attribute::Other (rust#144700).
Breaking Change: Add Attribute::MacroUse variant.
This means #[macro_use] is no longer represented by Attribute::Other
(rust#144700).
a33e084afe698e0a025211abd6dc1c9a4bb22e9d<a name="v0.54.0"></a>
Breaking Change: Change Item::attrs from Vec to Vec . Attribute is a new enum that contains variants for different attributes, and a catch-all Other v…
Breaking Change: Change Item::attrs from Vec<String> to
Vec<Attribute>. Attribute is a new enum that contains variants for different
attributes, and a catch-all Other variant. This will mean rustdoc-json
consumers won't need to parse common attributes. Changes to the stringified
representation in Attribute::Other won't cause a new FORMAT_VERSION
(rust#142936).
078332fdc8e11f7ff8253c019085098538ec3c2a<a name="v0.53.0"></a>
No Changes: Due to a mistake, we bumped the FORMAT_VERSION without changing rustdoc's output.
No Changes: Due to a mistake, we bumped the FORMAT_VERSION without changing rustdoc's output.
2084831cd54eb603fec6cd85ebd9d1426b09f628<a name="v0.52.0"></a>
Breaking Change(??): #[must_use = "text"] in Item::attrs is now "#[attr = MustUse {reason: \"text\"}]", instead of "#[must_use = \"text\"]" (rust#1427…
Breaking Change(??): #[must_use = "text"] in Item::attrs is now
"#[attr = MustUse {reason: \"text\"}]",
instead of "#[must_use = \"text\"]"
(rust#142780).
b24df424888d9db3a22d6d52f3f516e29d5be21a<a name="v0.51.0"></a>
Breaking Change: Change AssocItemConstraint::args and Type::QualifiedPath::args from GenericArgs to Option >. This is consistent with Path::args, and…
Breaking Change: Change AssocItemConstraint::args and Type::QualifiedPath::args from GenericArgs to Option<Box<GenericArgs>>.
This is consistent with Path::args, and smaller on disk (rust#142502).
7fa8901cd090093a57723d3f196c27db3b98ad94<a name="v0.50.0"></a>
Breaking Change(??): #[cold] in Item::attrs is now "#[attr = Cold]", instead of "#[cold]" (rust#142491).
Breaking Change(??): #[cold] in Item::attrs is now "#[attr = Cold]", instead of "#[cold]"
(rust#142491).
b9107a83a1ace3f292641977df70e9610e0e4482<a name="v0.49.0"></a>
Breaking Change(??): #[optimize(size)] in Item::attrs is now "#[attr = Optimize(Size)]", instead of "#[optimize(size)]" (rust#138291).
Breaking Change(??): #[optimize(size)] in Item::attrs is now "#[attr = Optimize(Size)]", instead of "#[optimize(size)]"
(rust#138291).
3c418ec505233927d562ff906d8eea309aee1905<a name="v0.48.0"></a>
Breaking Change(??): #[inline] in Item::attrs as "#[attr = Inline(Hint)]", instead of "#[inline]" (rust#138165).
Breaking Change(??): #[inline] in Item::attrs as "#[attr = Inline(Hint)]", instead of "#[inline]"
(rust#138165).
[!NOTE] Due to a mistake, format version 47/rustdoc-types 0.47.0 was skipped, and will never exist. See here for details.
81f8b570b9dd5d7bef27e1f1391dc73eb8fa4ff6<a name="v0.46.1"></a>
Build Time Improvement: Depend separately on serde and serde_derive (rather than depending on serde with the "derive" feature). This lets them be buil
Build Time Improvement: Depend separately on serde and serde_derive
(rather than depending on serde with the "derive" feature). This lets them be
built in parallel, yielding faster compile times
(#49,
rust#141989).
763663ad56672b0f0635ad25c0c1a52e7773e0b9<a name="v0.46.0"></a>
Breaking Change(??): Item::attrs now always includes #[repr]. No changes were made to the schema but the format version has been bumped, as this may e…
Versioning Change: The crate version now corresponds to the FORMAT_VERSION constant.
(#24)
Feature: Id now implements Ord and PartialOrd, making it usable as a
key in a BTreeMap
(rust#141898).
Breaking Change(??): Item::attrs now always includes #[repr]. No changes
were made to the schema but the format version has been bumped, as this may
effect consuming tools regardless
(rust#141126).
Documentation Improvements: Fixed some false docs (rust#141364).
6be3c3ceb7351677999c661dfba0110992b37132<a name="v0.41.0"></a>
Breaking Change: Make Span::begin and Span::end consistently one-indexed for both line and column (rust#139919). Previously this was incorrectly docum…
Breaking Change: Make Span::begin and Span::end consistently one-indexed
for both line and column
(rust#139919).
Previously this was incorrectly documented both line and column being
zero-indexed, but line was actually one-indexed
(rust#139906).
No changes were made to the schema (i.e. the public api for this crate is unchanged), but the format version has been bumped, as this may effect consuming tools regardless.
076016d55afdf760c7e30e23c5df8f0c079cd85b<a name="v0.40.0"></a>
Breaking Change: Add Crate::target field with information about the target and its features (rust#139393).
Breaking Change: Add Crate::target field with information about the target and its features
(rust#139393).
8c50f95cf088c6ccf882a152bd46c090efa3a1c7<a name="v0.39.0"></a>
Breaking Change: Change format of Item::attrs for #[repr(..)] from HIR debug printing to how they're written in source-code. For example #[attr = Repr…
Breaking Change: Change format of Item::attrs for #[repr(..)] from HIR
debug printing to how they're written in source-code. For example
#[attr = Repr([ReprC, ReprInt(SignedInt(I8))])]) would now be represented as
#[repr(C,i8)]
(rust#138018).
This somewhat undoes v0.36.0.
No changes were made to the schema (i.e. the public api for this crate is unchanged), but the format version has been bumped, as this may effect consuming tools regardless.
bafdbcadd5e70e4a1a35647002c30efd315621b4<a name="v0.38.0"></a>
Breaking Change: Add variant GenericArgs::ReturnTypeNotation to support return type notation (rust#137956).
Breaking Change: Add variant GenericArgs::ReturnTypeNotation to support
return type notation
(rust#137956).
e3ac1fa81abd321abe193f491ed06c7d388f68fe<a name="v0.37.0"></a>
Breaking Change: Change GenericBound::Use from Vec to Vec , a new enum (rust#138109).
Breaking Change: Change GenericBound::Use from Vec<String> to
Vec<PreciseCapturingArg>, a new enum
(rust#138109).
112f7b01a1b25035cd8b288d6936c6be48a3d845<a name="v0.36.0"></a>
Breaking Change: Change format of Item::attrs from e.g. "#[inline]" to e.g. #[attr="Inline(Hint)"] which is equivalent to the hir pretty-printing of a…
Breaking Change: Change format of Item::attrs from e.g. "#[inline]" to
e.g. #[attr="Inline(Hint)"] which is equivalent to the hir pretty-printing of
attributes (rust#135726).
This is result of a refractoring of how rustc represents attributes. There will be a change (at some point) to make them easier to use in rustdoc-json. See rust#137645 for details.
No changes were made to the schema (i.e. the public api for this crate is unchanged), but the format version has been bumped, as this may effect consuming tools regardless.
f321f107e3af37996ac6cca74294d581f2fb20e7<a name="v0.35.0"></a>
Breaking Change: Rename the Path::name field to Path::path, and make it have the entire path. This effectively reverts the previous release, as it was…
Breaking Change: Rename the Path::name field to Path::path, and make it
have the entire path. This effectively reverts the previous release,
as it was not possible for many consumers to
migrate
(rust#135799).
40e28582bb95e33f762dea75b78f6ebb5c29b836<a name="v0.34.0"></a>
Breaking Change: The Path::name field now only holds item name rather than the full path. Users needing the full path can find it in the Crate::paths…
Breaking Change: The Path::name field now only holds item name rather than
the full path. Users needing the full path can find it in the Crate::paths map
(rust#134880).
No changes were made to the schema (i.e. the public api for this crate is unchanged), but the format version has been bumped, as this may effect consuming tools regardless.
2c4aee92fa65e74f23ad7853937db8d2c4bfa6c8<a name="v0.33.0"></a>
Breaking Change: Add new is_unsafe field in Static struct (rust#133715).
Breaking Change: Add new is_unsafe field in Static struct (rust#133715).
f33dba028704d108497b8c06943b9bbc3d14c42b<a name="v0.32.2"></a>
Library Improvement: ItemKind, TraitBoundModifier, and MacroKind all now implement Copy (rust#131976).
Library Improvement: ItemKind, TraitBoundModifier, and MacroKind all now implement Copy (rust#131976).
4b658657da324253a201fc7baf70d106db5df7e0<a name="v0.32.1"></a>
New Feature: The optional rustc-hash cargo feature has been added. This changes the hashing algorithm used to a speedy non-cryptographic hashing algor
New Feature: The optional rustc-hash cargo feature has been added.
This changes the hashing algorithm used to a speedy non-cryptographic hashing algorithm also used in rustc.
This has lead to modest but appreciable performance gains for some consumers
(#42, rust#131936).
d1fa49b2e66c343210c413b68ed57f150b7b89d8<a name="v0.32.0"></a>
Breaking Change: Rename Trait::is_object_safe to is_dyn_compatible. This is a part of a language wide rename to make the term explain its meaning (rus…
Breaking Change: Rename Trait::is_object_safe to is_dyn_compatible. This is a part of a language wide rename to make the term explain its meaning (rust#131595).
2e6f3bd1d32455e535de1d9ee154253c333aec73<a name="v0.31.0"></a>
Breaking Change: The Id type now wraps a u32 instead of a String. The should hopefully increase performance (rust#130078).
Breaking Change: The Id type now wraps a u32 instead of a String. The should hopefully increase performance (rust#130078).
Documentation Improvement: Remove false claim from ProcMacro::helpers docs (rust#130939).
05c0591321f9956c1f0df4785d3737f40cffb598<a name="v0.30.0"></a>
Breaking Change: Many structs and fields have been renamed (rust#128667):
Breaking Change: Many structs and fields have been renamed (rust#128667):
Import is now Use, to better reflect the syntax and the reference.TypeBinding is now AssocItemConstraint, to reflect that it can also work on associated constants, and that it can either require the associated item to equal a term, or satisfy bounds.
TypeBindingKind is now AssocItemConstraintKindbindings has been renamed to constraints on GenericArgs::AngleBracketedForeignType has been renamed to ExternType, because that's what the feature is called. "Foreign" refers to types that aren't from the current crate, whereas Extern Types are entirely opaque to the type system (and may be in the current crate).ItemEnum::AssocConst and ItemEnum::AssocType's default field has been renamed to value, to clarify that they can appear in both an impl and trait item.Header is now FunctionHeader, to be clearer what it is.FnDecl is now FunctionSignature, as it's also used for FunctionPointer types (and not just function items).
decl field is now sigis_ or has_ prefixed for clarity:
fields_stripped is now has_fields_strippedvariants_stripped is now has_stripped_variantsconst_ is now is_constasync_ is now is_asyncunsafe_ is now is_unsafesynthetic is now is_syntheticmutable is now is_mutablec_variadic is now is_c_variadicnegative is now is_negativeglob is now is_glob<br/>
f2696ab4d3095bb6ad6197e55855ebdf00f50b80<a name="v0.29.1"></a>
Documentation Improvements: Typo fixes (rust#128903, #29).
Documentation Improvements: Typo fixes (rust#128903, #29).
b735547025dad853829a7dbf6b6697090e3f657c<a name="v0.29.0"></a>
Documentation Improvements: The library is now (almost) entirely documented (rust#127290)!
Documentation Improvements: The library is now (almost) entirely documented (rust#127290)!
47b76d8d939be6085e9b1f6fc1a4b959346754a6<a name="v0.28.0"></a>
Breaking Change: Add GenericBound::Use for the (currently unstable) `precise_capturing` feature (rust#127632).
Breaking Change: Add GenericBound::Use for the (currently unstable) precise_capturing feature (rust#127632).
bd135e487f904e757f6c3d2ebcc2d216ac4d9aaf<a name="v0.27.0"></a>
Breaking Change: WherePredicate::RegionPredicate has been renamed to LifetimePredicate, to avoid compiler-internal terminology. The bounds field has b…
Breaking Change: WherePredicate::RegionPredicate has been renamed to
LifetimePredicate, to avoid compiler-internal terminology. The bounds field
has been renamed to outlives, and changed from Vec<GenericBound> to
Vec<String>, because the only bound that lifetimes can have is that they
outlife other lifetimes
(rust#127289).
7e8aac553e756b0eb03fe98e1a65ffc47836ec51<a name="v0.26.0"></a>
Breaking Change: Remove type_ from Constant, and add it to ItemEnum::Constant (rust#125958).
Breaking Change: Remove type_ from Constant, and add it to ItemEnum::Constant (rust#125958).
Documentation Improvements: rust#125130, rust#124322.
432c11feb6ddfffe6d1d111624ac86386b2fe751<a name="v0.25.0"></a>
Breaking Change: Add Type::Pat for unstable pattern types. (rust#120131)
Breaking Change: Add Type::Pat for unstable pattern types. (rust#120131)
18ff131c4e06d6e1ebfc19092fe1d6c3535eb78b<a name="v0.24.0"></a>
Breaking Change: Trait now includes the is_object_safe field. (rust#119246)
Breaking Change: Trait now includes the is_object_safe field. (rust#119246)
Internal Improvement: The scripts to generate the changelog have been revamped to allow hand-written information in the changelog, and to make the release process easier.
c29f763153ac89e7930c6d50f5ab4656318b30d4<a name="v0.23.0"></a>
Breaking Change: Typedef has been renamed to TypeAlias, as this is what people (and the reference) generally call these items. (rust#115078)
Breaking Change: Typedef has been renamed to TypeAlias, as this is what
people (and the reference) generally call these items. (rust#115078)
c90a5b2019e5a862c8fb5ae39dcf6ad5f4c65b09<a name="v0.22.0"></a>
Breaking Change: All enums now use external tagging. No change is required to move to this version (all all the types are the same), but it won't be a…
Breaking Change: All enums now use external tagging. No change is required to move to this version (all all the types are the same), but it won't be able to read JSON files from older rustdoc versions, as enums will be represented differently. This change allows using non-self-describing serde serializers (like bincode), although rustdoc itself won't generate these. (rust#111427)
a5e51013753ca75c239403b47af1e605f5af2a64<a name="v0.21.0"></a>
Breaking Change: Type::QualifiedPath.trait_ is now an Option (instead of path). This is to support the (currently unstable) inherent associated types…
Breaking Change: Type::QualifiedPath.trait_ is now an Option<Path>
(instead of path). This is to support the (currently unstable) inherent
associated types feature.
(rust#109410)
61e1eda6db042413cf1794407fd10b7edc90059d<a name="v0.20.0"></a>
Breaking Change: Variant has been split into Variant and VariantKind, so the Discriminant can always be reported. Previously, it could only be reporte…
Breaking Change: Variant has been split into Variant and VariantKind,
so the Discriminant can always be reported. Previously, it could only be
reported for a plain enum variant (i.e. one with no fields or braces).
(rust#106354)
cca5d219e6801ebc2a62b455a12c657098a8af2d<a name="v0.19.0"></a>
Upstream Commit: `30b7e44a3cabe1c21129253da54b21193f65ebe0`
30b7e44a3cabe1c21129253da54b21193f65ebe0<a name="v0.18.0"></a>
Upstream Commit: `aac7429c17aa558fbd9fb0be093e7bd9ccc73972`
aac7429c17aa558fbd9fb0be093e7bd9ccc73972<a name="v0.17.0"></a>
Upstream Commit: `1c8de173238a02abeb5642c25c3cef1eea52ac18`
1c8de173238a02abeb5642c25c3cef1eea52ac18<a name="v0.16.0"></a>
Upstream Commit: `065e0b9c9cf3d03f286c5d0b98fbae7185e41b75`
065e0b9c9cf3d03f286c5d0b98fbae7185e41b75<a name="v0.15.0"></a>
Upstream Commit: `b76a012be16de964c242594afba4323997f436b2`
b76a012be16de964c242594afba4323997f436b2<a name="v0.14.0"></a>
Upstream Commit: `4989f6a7247930ba027fa4b96a0c284f6ab02942`
4989f6a7247930ba027fa4b96a0c284f6ab02942<a name="v0.13.1"></a>
Upstream Commit: `0dc39c7bd9795927b903c8c24e89a00788ce3e33`
0dc39c7bd9795927b903c8c24e89a00788ce3e33<a name="v0.13.0"></a>
Upstream Commit: `a856e57f6cc8ba8bb83c5abadce338f589df6b10`
a856e57f6cc8ba8bb83c5abadce338f589df6b10<a name="v0.12.0"></a>
Upstream Commit: `1a15c7147f90afaa64ae3ff27fcbd678e2e44a8e`
1a15c7147f90afaa64ae3ff27fcbd678e2e44a8e<a name="v0.11.0"></a>
Upstream Commit: `1f15ce5f9748d523f3c1835da12b05b15648aa68`
1f15ce5f9748d523f3c1835da12b05b15648aa68<a name="v0.10.0"></a>
Upstream Commit: `a5c0b1470cc48e665eabf29881dd87438973ab97`
a5c0b1470cc48e665eabf29881dd87438973ab97<a name="v0.9.0"></a>
Upstream Commit: `aa763fcf421e627455aa1de16df1292c8e1bcb9d`
aa763fcf421e627455aa1de16df1292c8e1bcb9d<a name="v0.8.0"></a>
Upstream Commit: `aefc0a223a0022a156be07b18feb45cd07e517e0`
aefc0a223a0022a156be07b18feb45cd07e517e0<a name="v0.7.0"></a>
Upstream Commit: `aa601574a5fe861bffd641beccf59c7be3ed16c9`
aa601574a5fe861bffd641beccf59c7be3ed16c9<a name="v0.6.0"></a>
Upstream Commit: `1521b53c532ccd90c504b0c860cd5662172cc05e`
1521b53c532ccd90c504b0c860cd5662172cc05e<a name="v0.5.0"></a>
Your coding agent can read these notes before it upgrades. Set up the MCP server →