cargo-util-schemas
Deserialization schemas for Cargo
0.14.2
29M downloads/mo
#1689 most downloaded on crates.io
rust-lang/cargo
What this package is like to depend on
Last release 3 days ago
20 Aug 2026
Ships on a steady schedule
a new release about every 6 weeks
Rarely documented
notes for 2 of 23 stable releases
2 versions withdrawn
withdrawn after publishing
3 years old
25 releases · first in 2023
10 releases in the last 12 months
see the full history below
Release timeline
25 releases · Dec 2023 to Aug 2026Releases
latest 25-
0.14.220 Aug 2026Nothing published for this version
-
0.14.109 Jul 2026Nothing published for this version
-
0.14.030 May 2026Nothing published for this version
-
0.13.128 May 2026 withdrawnNothing published for this version
-
0.13.018 Apr 2026Nothing published for this version
-
0.12.005 Mar 2026Release notes
Open source →-
~1900 changes, numerous bugfixes
-
Highlights
- The introductory documentation (now called The Rust Guide) has been completely rewritten, as have a number of supplementary guides.
- Rust's package manager, Cargo, continues to improve and is sometimes considered to be quite awesome.
- Many API's in
stdhave been reviewed and updated for consistency with the in-development Rust coding guidelines. The standard library documentation tracks stabilization progress. - Minor libraries have been moved out-of-tree to the rust-lang org on GitHub: uuid, semver, glob, num, hexfloat, fourcc. They can be installed with Cargo.
- Lifetime elision allows lifetime annotations to be left off of function declarations in many common scenarios.
- Rust now works on 64-bit Windows.
-
Language
- Indexing can be overloaded with the
IndexandIndexMuttraits. - The
if letconstruct takes a branch only if theletpattern matches, currently behind the 'if_let' feature gate. - 'where clauses', a more flexible syntax for specifying trait bounds that is more aesthetic, have been added for traits and free functions. Where clauses will in the future make it possible to constrain associated types, which would be impossible with the existing syntax.
- A new slicing syntax (e.g.
[0..4]) has been introduced behind the 'slicing_syntax' feature gate, and can be overloaded with theSliceorSliceMuttraits. - The syntax for matching of sub-slices has been changed to use a
postfix
..instead of prefix (.e.g.[a, b, c..]), for consistency with other uses of..and to future-proof potential additional uses of the syntax. - The syntax for matching inclusive ranges in patterns has changed
from
0..3to0...4to be consistent with the exclusive range syntax for slicing. - Matching of sub-slices in non-tail positions (e.g.
[a.., b, c]) has been put behind the 'advanced_slice_patterns' feature gate and may be removed in the future. - Components of tuples and tuple structs can be extracted using
the
value.0syntax, currently behind thetuple_indexingfeature gate. - The
#[crate_id]attribute is no longer supported; versioning is handled by the package manager. - Renaming crate imports are now written
extern crate foo as barinstead ofextern crate bar = foo. - Renaming use statements are now written
use foo as barinstead ofuse bar = foo. letandmatchbindings and argument names in macros are now hygienic.- The new, more efficient, closure types ('unboxed closures') have been added under a feature gate, 'unboxed_closures'. These will soon replace the existing closure types, once higher-ranked trait lifetimes are added to the language.
movehas been added as a keyword, for indicating closures that capture by value.- Mutation and assignment is no longer allowed in pattern guards.
- Generic structs and enums can now have trait bounds.
- The
Sharetrait is now calledSyncto free up the term 'shared' to refer to 'shared reference' (the default reference type. - Dynamically-sized types have been mostly implemented, unifying the behavior of fat-pointer types with the rest of the type system.
- As part of dynamically-sized types, the
Sizedtrait has been introduced, which qualifying types implement by default, and which type parameters expect by default. To specify that a type parameter does not need to be sized, write<Sized? T>. Most types areSized, notable exceptions being unsized arrays ([T]) and trait types. - Closures can return
!, as in|| -> !orproc() -> !. - Lifetime bounds can now be applied to type parameters and object types.
- The old, reference counted GC type,
Gc<T>which was once denoted by the@sigil, has finally been removed. GC will be revisited in the future.
- Indexing can be overloaded with the
-
Libraries
- Library documentation has been improved for a number of modules.
- Bit-vectors, collections::bitv has been modernized.
- The url crate is deprecated in favor of http://github.com/servo/rust-url, which can be installed with Cargo.
- Most I/O stream types can be cloned and subsequently closed from a different thread.
- A
std::time::Durationtype has been added for use in I/O methods that rely on timers, as well as in the 'time' crate'sTimespecarithmetic. - The runtime I/O abstraction layer that enabled the green thread scheduler to do non-thread-blocking I/O has been removed, along with the libuv-based implementation employed by the green thread scheduler. This will greatly simplify the future I/O work.
collections::btreehas been rewritten to have a more idiomatic and efficient design.
-
Tooling
- rustdoc output now indicates the stability levels of API's.
- The
--crate-nameflag can specify the name of the crate being compiled, like#[crate_name]. - The
-C metadataspecifies additional metadata to hash into symbol names, and-C extra-filenamespecifies additional information to put into the output filename, for use by the package manager for versioning. - debug info generation has continued to improve and should be more reliable under both gdb and lldb.
- rustc has experimental support for compiling in parallel
using the
-C codegen-unitsflag. - rustc no longer encodes rpath information into binaries by default.
-
Misc
- Stack usage has been optimized with LLVM lifetime annotations.
- Official Rust binaries on Linux are more compatible with older kernels and distributions, built on CentOS 5.10.
-
-
-
0.11.022 Jan 2026Release notes
Open source →-
~1700 changes, numerous bugfixes
-
Language
- ~[T] has been removed from the language. This type is superseded by the Vec<T> type.
- ~str has been removed from the language. This type is superseded by the String type.
- ~T has been removed from the language. This type is superseded by the Box<T> type.
- @T has been removed from the language. This type is superseded by the standard library's std::gc::Gc<T> type.
- Struct fields are now all private by default.
- Vector indices and shift amounts are both required to be a
uintinstead of any integral type. - Byte character, byte string, and raw byte string literals are now all
supported by prefixing the normal literal with a
b. - Multiple ABIs are no longer allowed in an ABI string
- The syntax for lifetimes on closures/procedures has been tweaked
slightly:
<'a>|A, B|: 'b + K -> T - Floating point modulus has been removed from the language; however it is still provided by a library implementation.
- Private enum variants are now disallowed.
- The
privkeyword has been removed from the language. - A closure can no longer be invoked through a &-pointer.
- The
use foo, bar, baz;syntax has been removed from the language. - The transmute intrinsic no longer works on type parameters.
- Statics now allow blocks/items in their definition.
- Trait bounds are separated from objects with + instead of : now.
- Objects can no longer be read while they are mutably borrowed.
- The address of a static is now marked as insignificant unless the #[inline(never)] attribute is placed it.
- The #[unsafe_destructor] attribute is now behind a feature gate.
- Struct literals are no longer allowed in ambiguous positions such as if, while, match, and for..in.
- Declaration of lang items and intrinsics are now feature-gated by default.
- Integral literals no longer default to
int, and floating point literals no longer default tof64. Literals must be suffixed with an appropriate type if inference cannot determine the type of the literal. - The Box<T> type is no longer implicitly borrowed to &mut T.
- Procedures are now required to not capture borrowed references.
-
Libraries
- The standard library is now a "facade" over a number of underlying libraries. This means that development on the standard library should be speedier due to smaller crates, as well as a clearer line between all dependencies.
- A new library, libcore, lives under the standard library's facade which is Rust's "0-assumption" library, suitable for embedded and kernel development for example.
- A regex crate has been added to the standard distribution. This crate includes statically compiled regular expressions.
- The unwrap/unwrap_err methods on Result require a Show bound for better error messages.
- The return types of the std::comm primitives have been centralized around the Result type.
- A number of I/O primitives have gained the ability to time out their operations.
- A number of I/O primitives have gained the ability to close their reading/writing halves to cancel pending operations.
- Reverse iterator methods have been removed in favor of
rev()on their forward-iteration counterparts. - A bitflags! macro has been added to enable easy interop with C and management of bit flags.
- A debug_assert! macro is now provided which is disabled when
--cfg ndebugis passed to the compiler. - A graphviz crate has been added for creating .dot files.
- The std::cast module has been migrated into std::mem.
- The std::local_data api has been migrated from freestanding functions to being based on methods.
- The Pod trait has been renamed to Copy.
- jemalloc has been added as the default allocator for types.
- The API for allocating memory has been changed to use proper alignment and sized deallocation
- Connecting a TcpStream or binding a TcpListener is now based on a string address and a u16 port. This allows connecting to a hostname as opposed to an IP.
- The Reader trait now contains a core method, read_at_least(), which correctly handles many repeated 0-length reads.
- The process-spawning API is now centered around a builder-style Command struct.
- The :? printing qualifier has been moved from the standard library to an external libdebug crate.
- Eq/Ord have been renamed to PartialEq/PartialOrd. TotalEq/TotalOrd have been renamed to Eq/Ord.
- The select/plural methods have been removed from format!. The escapes for { and } have also changed from { and } to {{ and }}, respectively.
- The TaskBuilder API has been re-worked to be a true builder, and extension traits for spawning native/green tasks have been added.
-
Tooling
- All breaking changes to the language or libraries now have their
commit message annotated with
[breaking-change]to allow for easy discovery of breaking changes. - The compiler will now try to suggest how to annotate lifetimes if a lifetime-related error occurs.
- Debug info continues to be improved greatly with general bug fixes and better support for situations like link time optimization (LTO).
- Usage of syntax extensions when cross-compiling has been fixed.
- Functionality equivalent to GCC & Clang's -ffunction-sections, -fdata-sections and --gc-sections has been enabled by default
- The compiler is now stricter about where it will load module files
from when a module is declared via
mod foo;. - The #[phase(syntax)] attribute has been renamed to #[phase(plugin)]. Syntax extensions are now discovered via a "plugin registrar" type which will be extended in the future to other various plugins.
- Lints have been restructured to allow for dynamically loadable lints.
- A number of rustdoc improvements:
- The HTML output has been visually redesigned.
- Markdown is now powered by hoedown instead of sundown.
- Searching heuristics have been greatly improved.
- The search index has been reduced in size by a great amount.
- Cross-crate documentation via
pub usehas been greatly improved. - Primitive types are now hyperlinked and documented.
- Documentation has been moved from static.rust-lang.org/doc to doc.rust-lang.org
- A new sandbox, play.rust-lang.org, is available for running and sharing rust code examples on-line.
- Unused attributes are now more robustly warned about.
- The dead_code lint now warns about unused struct fields.
- Cross-compiling to iOS is now supported.
- Cross-compiling to mipsel is now supported.
- Stability attributes are now inherited by default and no longer apply to intra-crate usage, only inter-crate usage.
- Error message related to non-exhaustive match expressions have been greatly improved.
- All breaking changes to the language or libraries now have their
commit message annotated with
-
-
-
0.10.211 Dec 2025Nothing published for this version
-
0.10.130 Oct 2025Nothing published for this version
-
0.10.018 Sep 2025Nothing published for this version
-
0.9.007 Aug 2025Nothing published for this version
-
0.8.226 Jun 2025Nothing published for this version
-
0.8.115 May 2025Nothing published for this version
-
0.8.006 Apr 2025Nothing published for this version
-
0.7.303 Apr 2025 withdrawnNothing published for this version
-
0.7.220 Feb 2025Nothing published for this version
-
0.7.109 Jan 2025Nothing published for this version
-
0.7.028 Nov 2024Nothing published for this version
-
0.6.017 Oct 2024Nothing published for this version
-
0.5.005 Sep 2024Nothing published for this version
-
0.4.025 Jul 2024Nothing published for this version
-
0.3.117 Jun 2024Nothing published for this version
-
0.3.002 May 2024Nothing published for this version
-
0.2.021 Mar 2024Nothing published for this version
-
0.1.018 Dec 2023Nothing published for this version