1.53.0 (2021-06-17) #

Language #

  • You can now use unicode for identifiers. This allows multilingual identifiers but still doesn’t allow glyphs that are not considered characters such as or 🦀. More specifically you can now use any identifier that matches the UAX #31 “Unicode Identifier and Pattern Syntax” standard. This is the same standard as languages like Python, however Rust uses NFC normalization which may be different from other languages.
  • You can now specify “or patterns” inside pattern matches. Previously you could only use | (OR) on complete patterns. E.g.
    let x = Some(2u8);
    // Before
    matches!(x, Some(1) | Some(2));
    // Now
    matches!(x, Some(1 | 2));
  • Added the :pat_param macro_rules! matcher. This matcher has the same semantics as the :pat matcher. This is to allow :pat to change semantics to being a pattern fragment in a future edition.

Compiler #

* Refer to Rust’s [platform support page][platform-support-doc] for more information on Rust’s tiered platform support.

Libraries #

Stabilised APIs #

Cargo #

Rustdoc #

Compatibility Notes #

Internal Only #

These changes provide no direct user facing benefits, but represent significant improvements to the internals and overall performance of rustc and related tools.