Update all dependencies #2

Open
kjuulh wants to merge 1 commits from renovate/all into main
Owner

This PR contains the following updates:

Package Type Update Change
actions/cache action major v1 -> v4
actions/checkout action major v3 -> v4
actions/checkout action major v2 -> v4
bitflags dependencies major 1 -> 2
hashbrown dependencies minor 0.13 -> 0.15
rustyline dependencies major 11 -> 14
syn dependencies major 1.0 -> 2.0

Release Notes

actions/cache (actions/cache)

v4

Compare Source

v3

Compare Source

v2

Compare Source

actions/checkout (actions/checkout)

v4

Compare Source

bitflags/bitflags (bitflags)

v2.6.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/bitflags/bitflags/compare/2.5.0...2.6.0

v2.5.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/bitflags/bitflags/compare/2.4.2...2.5.0

v2.4.2

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/bitflags/bitflags/compare/2.4.1...2.4.2

v2.4.1

Compare Source

What's Changed

Full Changelog: https://github.com/bitflags/bitflags/compare/2.4.0...2.4.1

v2.4.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/bitflags/bitflags/compare/2.3.3...2.4.0

v2.3.3

Compare Source

Changes to -=

The -= operator was incorrectly changed to truncate bits that didn't correspond to valid flags in 2.3.0. This has
been fixed up so it once again behaves the same as - and difference.

Changes to !

The ! operator previously called Self::from_bits_truncate, which would truncate any bits that only partially
overlapped with a valid flag. It will now use bits & Self::all().bits(), so any bits that overlap any bits
specified by any flag will be respected. This is unlikely to have any practical implications, but enables defining
a flag like const ALL = !0 as a way to signal that any bit pattern is a known set of flags.

Changes to formatting

Zero-valued flags will never be printed. You'll either get 0x0 for empty flags using debug formatting, or the
set of flags with zero-valued flags omitted for others.

Composite flags will no longer be redundantly printed if there are extra bits to print at the end that don't correspond
to a valid flag.

What's Changed

Full Changelog: https://github.com/bitflags/bitflags/compare/2.3.2...2.3.3

v2.3.2

Compare Source

What's Changed

  • doc] \[src/lib.rs]  delete redundant path prefix by [@​OccupyMars2025](https://github.com/OccupyMars2025) in https://github.com/bitflags/bitflags/pull/361
    
    

New Contributors

Full Changelog: https://github.com/bitflags/bitflags/compare/2.3.1...2.3.2

v2.3.1

Compare Source

What's Changed

Full Changelog: https://github.com/bitflags/bitflags/compare/2.3.0...2.3.1

v2.3.0

Compare Source

Major changes

BitFlags trait deprecated in favor of Flags trait

This release introduces the Flags trait and deprecates the BitFlags trait. These two traits are semver compatible so if you have public API code depending on BitFlags you can move to Flags without breaking end-users. This is possible because the BitFlags trait was never publicly implementable, so it now carries Flags as a supertrait. All implementations of Flags additionally implement BitFlags.

The Flags trait is a publicly implementable version of the old BitFlags trait. The original BitFlags trait carried some macro baggage that made it difficult to implement, so a new Flags trait has been introduced as the One True Trait for interacting with flags types generically. See the the macro_free and custom_derive examples for more details.

Bits trait publicly exposed

The Bits trait for the underlying storage of flags values is also now publicly implementable. This lets you define your own exotic backing storage for flags. See the custom_bits_type example for more details.

What's Changed

Full Changelog: https://github.com/bitflags/bitflags/compare/2.2.1...2.3.0

v2.2.1

Compare Source

What's Changed

Full Changelog: https://github.com/bitflags/bitflags/compare/2.2.0...2.2.1

v2.2.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/bitflags/bitflags/compare/2.1.0...2.2.0

v2.1.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/bitflags/bitflags/compare/2.0.2...2.1.0

v2.0.2

Compare Source

What's Changed

Full Changelog: https://github.com/bitflags/bitflags/compare/2.0.1...2.0.2

v2.0.1

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/bitflags/bitflags/compare/2.0.0...2.0.1

v2.0.0

Compare Source

Major changes

This release includes some major changes over 1.x. If you use bitflags! types in your public API then upgrading this library may cause breakage in your downstream users.

⚠️ Serialization

You'll need to add the serde Cargo feature in order to #[derive(Serialize, Deserialize)] on your generated flags types:

bitflags! {
    #[derive(Serialize, Deserialize)]
    #[serde(transparent)]
    pub struct Flags: T {
        ..
    }
}

where T is the underlying bits type you're using, such as u32.

The default serialization format with serde has changed if you #[derive(Serialize, Deserialize)] on your generated flags types. It will now use a formatted string for human-readable formats and the underlying bits type for compact formats.

To keep the old format, see the https://github.com/KodrAus/bitflags-serde-legacy library.

⚠️ Traits

Generated flags types now derive fewer traits. If you need to maintain backwards compatibility, you can derive the following yourself:


#[derive(PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Clone, Copy)]
⚠️ Methods

The unsafe from_bits_unchecked method is now a safe from_bits_retain method.

You can add the following method to your generated types to keep them compatible:


#[deprecated = "use the safe `from_bits_retain` method instead"]
pub unsafe fn from_bits_unchecked(bits: T) -> Self {
    Self::from_bits_retain(bits)
}

where T is the underlying bits type you're using, such as u32.

⚠️ .bits field

You can now use the .bits() method instead of the old .bits.

The representation of generated flags types has changed from a struct with the single field bits to a newtype.

What's Changed

New Contributors

Full Changelog: https://github.com/bitflags/bitflags/compare/1.3.2...2.0.0

rust-lang/hashbrown (hashbrown)

v0.15.0

Compare Source

This update contains breaking changes that remove the raw API with the hope of
centralising on the HashTable API in the future. You can follow the discussion
and progress in #​545 to discuss features you think should be added to this API
that were previously only possible on the raw API.

Added
  • Added borsh feature with BorshSerialize and BorshDeserialize impls. (#​525)
  • Added Assign impls for HashSet operators. (#​529)
  • Added Default impls for iterator types. (#​542)
  • Added HashTable::iter_hash{,_mut} methods. (#​549)
  • Added Hash{Table,Map,Set}::allocation_size methods. (#​553)
  • Implemented Debug and FusedIterator for all HashTable iterators. (#​561)
  • Specialized Iterator::fold for all HashTable iterators. (#​561)
Changed
  • Changed hash_set::VacantEntry::insert to return OccupiedEntry. (#​495)
  • Improvedhash_set::Difference::size_hint lower-bound. (#​530)
  • Improved HashSet::is_disjoint performance. (#​531)
  • equivalent feature is now enabled by default. (#​532)
  • HashSet operators now return a set with the same allocator. (#​529)
  • Changed the default hasher to foldhash. (#​563)
  • ahash feature has been renamed to default-hasher. (#​533)
  • Entry API has been reworked and several methods have been renamed. (#​535)
  • Hash{Map,Set}::insert_unique_unchecked is now unsafe. (#​556)
  • The signature of get_many_mut and related methods was changed. (#​562)
Fixed
Removed
  • Raw entry API is now under raw-entry feature, to be eventually removed. (#​534, #​555)
  • Raw table API has been made private and the raw feature is removed;
    in the future, all code should be using the HashTable API instead. (#​531, #​546)
  • rykv feature was removed; this is now provided by the rykv crate instead. (#​554)
  • HashSet::get_or_insert_owned was removed in favor of get_or_insert_with. (#​555)

v0.14.5

Compare Source

Fixed
  • Fixed index calculation in panic guard of clone_from_impl. (#​511)

v0.14.4

Compare Source

This release was yanked due to a breaking change.

v0.14.3

Compare Source

Added
  • Specialized fold implementation of iterators. (#​480)
Fixed
  • Avoid using unstable ptr::invalid_mut on nightly. (#​481)

v0.14.2

Compare Source

Added
  • HashTable type which provides a low-level but safe API with explicit hashing. (#​466)
Fixed
  • Disabled the use of NEON instructions on big-endian ARM. (#​475)
  • Disabled the use of NEON instructions on Miri. (#​476)

v0.14.1

Compare Source

Added
  • Allow serializing HashMaps that use a custom allocator. (#​449)
Changed
  • Use the Equivalent trait from the equivalent crate. (#​442)
  • Slightly improved performance of table resizing. (#​451)
  • Relaxed MSRV to 1.63.0. (#​457)
  • Removed Clone requirement from custom allocators. (#​468)
Fixed
  • Fixed custom allocators being leaked in some situations. (#​439, #​465)

v0.14.0

Compare Source

Added
  • Support for allocator-api2 crate
    for interfacing with custom allocators on stable. (#​417)
  • Optimized implementation for ARM using NEON instructions. (#​430)
  • Support for rkyv serialization. (#​432)
  • Equivalent trait to look up values without Borrow. (#​345)
  • Hash{Map,Set}::raw_table_mut is added which returns a mutable reference. (#​404)
  • Fast path for clear on empty tables. (#​428)
Changed
  • Optimized insertion to only perform a single lookup. (#​277)
  • DrainFilter (drain_filter) has been renamed to ExtractIf and no longer drops remaining
    elements when the iterator is dropped. #(374)
  • Bumped MSRV to 1.64.0. (#​431)
  • {Map,Set}::raw_table now returns an immutable reference. (#​404)
  • VacantEntry and OccupiedEntry now use the default hasher if none is
    specified in generics. (#​389)
  • RawTable::data_start now returns a NonNull to match RawTable::data_end. (#​387)
  • RawIter::{reflect_insert, reflect_remove} are now unsafe. (#​429)
  • RawTable::find_potential is renamed to find_or_find_insert_slot and returns an InsertSlot. (#​429)
  • RawTable::remove now also returns an InsertSlot. (#​429)
  • InsertSlot can be used to insert an element with RawTable::insert_in_slot. (#​429)
  • RawIterHash no longer has a lifetime tied to that of the RawTable. (#​427)
  • The trait bounds of HashSet::raw_table have been relaxed to not require Eq + Hash. (#​423)
  • EntryRef::and_replace_entry_with and OccupiedEntryRef::replace_entry_with
    were changed to give a &K instead of a &Q to the closure.
Removed
  • Support for bumpalo as an allocator with custom wrapper.
    Use allocator-api2 feature in bumpalo to use it as an allocator
    for hashbrown collections. (#​417)
kkawakam/rustyline (rustyline)

v14.0.0: 14.0.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/kkawakam/rustyline/compare/v13.0.0...v14.0.0

v13.0.0: 13.0.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/kkawakam/rustyline/compare/v12.0.0...v12.0.1

v12.0.0: 12.0.0

Compare Source

What's Changed

  • Unnecessarily qualified path #​683
  • ci] Update actions/checkout in GitHub Actions workflows to v3 [#​685](https://github.com/kkawakam/rustyline/issues/685)
    
  • Fix some typos #​684
  • Make MemHistory::default() be a wrapper around MemHistory::new() to avoid that max_len is defaulted to 0. #​686
  • Create dependabot.yml #​687
  • Add minimum permissions to rust.yml workflow #​689
  • Update bitflags requirement from 1.3 to 2.0 #​688
  • Upgrade syn version #​691
  • Update rusqlite requirement from 0.28.0 to 0.29.0 #​693
  • Add Editor::clear_screen method #​694, #​695
  • Fix clippy warnings #​697
  • Move to the smaller, cargo-team maintained home crate #​698
  • Upgrade http links to https in Cargo.toml #​701
  • Fix dot command in vi mode #​705, #​706

Full Changelog: https://github.com/kkawakam/rustyline/compare/v11.0.0...v12.0.0

dtolnay/syn (syn)

v2.0.79

Compare Source

  • Fix infinite loop on parsing chained ranges (#​1741)
  • Fix panic in parsing use items containing absolute paths (#​1742)

v2.0.78

Compare Source

  • Fix infinite loop on chained comparison (#​1739)

v2.0.77

Compare Source

  • Support parsing Expr::Tuple in non-"full" mode (#​1727)

v2.0.76

Compare Source

  • Enforce that tail call become keyword is followed by an expression (#​1725)

v2.0.75

Compare Source

  • Automatically fill in missing turbofish when printing ExprPath and other paths in expression position (#​1722)

v2.0.74

Compare Source

  • Fix "temporary is dropped and runs the destructor for type `impl Iterator`" regression affecting certain use of Generics iterator methods (#​1719)

v2.0.73

Compare Source

v2.0.72

Compare Source

v2.0.71

Compare Source

v2.0.70

Compare Source

v2.0.69

Compare Source

  • Correctly parenthesize labeled loops inside a break value (#​1692)
  • Add Punctuated::get and get_mut (#​1693)

v2.0.68

Compare Source

  • Improve panic location when parse_quote! parses invalid syntax (#​1690, thanks @​stepancheg)
  • More efficient peek implementation for Group and Lifetime (#​1687)

v2.0.67

Compare Source

  • Produce more accurate error message locations for errors located at the end of a nested group (#​1679, #​1680)
  • Support peeking LitCStr in ParseStream::peek (#​1682)

v2.0.66

Compare Source

  • Allow braced structs when parsing ExprLet (#​1671)

v2.0.65

Compare Source

v2.0.64

Compare Source

  • Support using ParseBuffer across catch_unwind (#​1646)
  • Validate that the expression in a let-else ends in brace as required by rustc (#​1648, #​1649)
  • Legalize invalid const generic arguments by wrapping in braces (#​1654, #​1655)
  • Fix some expression precedence edge cases involving break and return in loop headers (#​1656)
  • Always print closure bodies with a brace when the closure has an explicit return type (#​1658)
  • Automatically insert necessary parentheses in ToTokens for Expr when required by expression precedence (#​1659)
  • Support struct literal syntax in match guard expressions (#​1662)

v2.0.63

Compare Source

  • Parse and print long if-else-if chains without reliance on deep recursion to avoid overflowing stack (#​1644, #​1645)

v2.0.62

Compare Source

  • Reject invalid unparenthesized range and comparison operator expressions (#​1642, #​1643)

v2.0.61

Compare Source

  • Check for legal binding name in the ident of Pat::Ident (#​1627)
  • Resolve unexpected_cfgs warning (#​1635)

v2.0.60

Compare Source

  • Improve how None-delimited groups are counted by peek (#​1625)

v2.0.59

Compare Source

  • Parse c"…" and cr"…" C-string literal syntax as Lit::CStr (#​1502)

v2.0.58

Compare Source

  • Support $ in custom_punctuation! macro (#​1611)

v2.0.57

Compare Source

  • Eliminate dependency on quote when built with default-features disabled and the "proc-macro" feature enabled (#​1608, thanks @​BD103)

v2.0.56

Compare Source

  • Apply RUSTC_WORKSPACE_WRAPPER when deciding whether to run nightly-only tests (#​1605)

v2.0.55

Compare Source

  • Restore compatibility with rustc 1.56 through 1.59 (#​1603)

v2.0.54

Compare Source

  • Fix dead code warning in generated code when using custom_keyword! with syn's "printing" feature disabled (#​1602)

v2.0.53

Compare Source

  • Implement Copy, Clone, and ToTokens for syn::parse::Nothing (#​1597)

v2.0.52

Compare Source

  • Add an expression parser that uses match-arm's boundary rules (#​1593)

v2.0.51

Compare Source

  • Resolve non_local_definitions warnings in generated code under rustc 1.78-nightly

v2.0.50

Compare Source

  • Fix unused_imports warnings when compiled by rustc 1.78

v2.0.49

Compare Source

  • Improve error location when parsing from an empty string literal using LitStr::parse (#​1590)

v2.0.48

Compare Source

  • Improve error message on unexpected token after else (#​1578)

v2.0.47

Compare Source

  • Improve error messages related to proc_macro::LexError (#​1575)

v2.0.46

Compare Source

  • Update proc-macro2 to fix caching issue when using a rustc-wrapper such as sccache

v2.0.45

Compare Source

  • Parse unsupported expressions in enum discriminants of DeriveInput as Expr::Verbatim in non-"full" mode, instead of error (#​1513)
  • Support parsing PatType with parse_quote! (#​1573)

v2.0.44

Compare Source

  • Documentation improvements

v2.0.43

Compare Source

  • Insert trailing comma if not already present when printing a 1-tuple in pattern position (#​1553)

v2.0.42

Compare Source

  • Documentation improvements

v2.0.41

Compare Source

  • Support parsing syn::Field in parse_quote! (#​1548)

v2.0.40

Compare Source

v2.0.39

Compare Source

  • Fix parsing of return expression in match guards (#​1528)
  • Improve error message on labeled loop as value expression for break (#​1531)

v2.0.38

Compare Source

  • Fix "method 'peek' has an incompatible type for trait" error when defining bool as a custom keyword (#​1518, thanks @​Vanille-N)

v2.0.37

Compare Source

  • Work around incorrect future compatibility warning in rustc 1.74.0-nightly

v2.0.36

Compare Source

  • Restore compatibility with --generate-link-to-definition documentation builds (#​1514)

v2.0.35

Compare Source

  • Make rust-analyzer produce preferred brackets for invocations of Token! macro (#​1510, #​1512)

v2.0.34

Compare Source

  • Documentation improvements

v2.0.33

Compare Source

  • Special handling for the (/*ERROR*/) placeholder that rustc uses for macros that fail to expand

v2.0.32

Compare Source

v2.0.31

Compare Source

v2.0.30

Compare Source

v2.0.29

Compare Source

v2.0.28

Compare Source

  • Fix inconsistency between full and non-full expression parse errors (#​1491)

v2.0.27

Compare Source

v2.0.26

Compare Source

  • Implement Spanned for QSelf (#​1465)

v2.0.25

Compare Source

  • Support single identifier as unbraced const generic argument (#​1483)
  • Produce error message when LitStr::parse is used on a suffixed string literal (#​1484)

v2.0.24

Compare Source

  • Fix duplication of braces around const generic argument in non-full mode (#​1482)

v2.0.23

Compare Source

  • Preserve attributes on verbatim Item in statement position (#​1476)
  • Support generic_const_exprs where-clauses such as where [(); { T::COUNT }]: in non-"full" mode (#​1478)

v2.0.22

Compare Source

v2.0.21

Compare Source

  • Fix value computed by LitByteStr::value in the case of a cooked byte string literal containing form feed or vertical tab characters following an escaped newline (#​1474)

v2.0.20

Compare Source

  • Documentation improvements

v2.0.19

Compare Source

v2.0.18

Compare Source

  • Permit empty attr in syn::meta::parser (#​1460)

v2.0.17

Compare Source

  • Enable proc_macro support on wasm targets (#​1459)

v2.0.16

Compare Source

v2.0.15

Compare Source

  • Ensure Type::Tuple of length 1 prints as a tuple even if trailing comma is not provided in the Punctuated (#​1444, thanks @​Fancyflame)

v2.0.14

Compare Source

v2.0.13

Compare Source

v2.0.12

Compare Source

  • Refer to compile_error! by absolute path in token stream produced by syn::Error::to_compile_error (#​1431, thanks @​smoelius)

v2.0.11

Compare Source

  • Improve error message on empty parens inside parse_nested_meta (#​1428)

v2.0.10

Compare Source

  • Fix visibility being parsed incorrectly on macro invocations inside of a trait

v2.0.9

Compare Source

  • Disallow type items in an extern block, trait, or module from being marked default
  • Disallow ImplItemFn from having an omitted function body, as in impl T { fn f(&self); } — omitted function bodies are allowed by TraitItemFn, but in impl blocks this syntax is now parsed as ImplItem::Verbatim rather than ImplItem::Fn

v2.0.8

Compare Source

  • Treat try keyword as 2015-edition identifier in definition of try macro (#​1422)

v2.0.7

Compare Source

  • Fix parsing of mut self inside of Type::BareFn

v2.0.6

Compare Source

  • Improve error message on missing ';' between statements (#​1419)
  • Keep non-brace macro invocations in trailing expr position as Expr::Macro (#​1420)

v2.0.5

Compare Source

  • Expose ExprMacro data structure even when features="full" is not used (#​1417)

v2.0.4

Compare Source

  • Improve error reporting when parsing identifiers and paths (#​1415, #​1416)

v2.0.3

Compare Source

  • Expose ExprGroup data structure even when features="full" is not used (#​1412)

v2.0.2

Compare Source

  • Documentation improvements

v2.0.1

Compare Source

  • Add methods on syn::Meta for reporting error on an incorrect kind of attribute (#​1409)

v2.0.0

Compare Source

This release contains a batch of syntax tree improvements to incorporate ongoing Rust language development from the past 3.5 years since syn 1.

It never seems like an ideal time to finalize a syntax tree design, considering the frankly alarming number of syntax-disrupting language features currently in flight: keyword generics, restrictions, capabilities and contexts, conditional constness, new varieties of literals, dyn revamp such as explicitly dyn-safe traits and dyn-star, expression syntax in various phases of being added or being torn out (const blocks, try blocks, raw references), auto traits and negative impls, generalizations to higher rank trait bounds, async closures and static async trait methods, postfix keywords, pattern types, return type notation, unsafe attributes, …

The plan continues to be the same as laid out originally in the 1.0.0 release announcement:

Be aware that the underlying Rust language will continue to evolve. Syn is able to accommodate most kinds of Rust grammar changes via the nonexhaustive enums and Verbatim variants in the syntax tree, but we will plan to put out new major versions on a 12 to 24 month cadence to incorporate ongoing language changes as needed.

If anything, the takeaway from the 3.5 year longevity of syn 1 is that this period was tamer from a language development perspective than anticipated, but that is unlikely to last and I think around 24 months is still the correct cadence to expect between releases going forward.


[API documentation for 2.0]

Breaking changes

  • Minimum required Rust version is raised from rustc 1.31 to 1.56.
Expressions
  • Support for box expr syntax has been deleted, as it has been deleted recently from rustc.

  • Support for type ascription syntax expr: Type in expression position has been deleted.

  • Support for unstable &raw const expr raw-pointer reference syntax has been deleted.

  • The representation of generic arguments has been unified between method calls and non-method paths into a single GenericArgument type, which supersedes the previous GenericMethodArgument and MethodTurbofish.

  • Generic arguments now distinguish between associated types (AssocType) and associated constant values (AssocConst). Previously these would be parsed ambiguously as Binding.

  • The binary assignment operators in BinOp have been renamed to align with the naming used by the standard library's core::ops module's traits. For example BinOp::AddEq is now called BinOp::AddAssign.

  • Expr::Struct struct construction expressions now support structs which are a variant of an enum associated type of a trait, as in <Type as Trait>::Assoc::Variant { ... }, which has recently been added to Rust.

  • Expr::Range now follows the start and end naming used by the standard library's RangeBounds trait, rather than from/to or lo/hi.

  • Expr::AssignOp has been merged into Expr::Binary, which now represents both non-assignment and assignment binary operators.

  • Stricter parsing of ranges. None of the following are valid expressions, but were previously accepted by syn: ..=, lo..=, ..., ...hi, lo..., lo...hi.

  • Expr::Closure now includes a representation for for<...> lifetimes.

Statements
  • Variants Stmt::Expr (tail-position expression without trailing semicolon) and Stmt::Semi (non-tail expression with trailing semicolon) have been combined into Stmt::Expr with the optional semicolon represented by Option<Token![;]>.

  • The syntax tree for Stmt::Local has been extended to handle let/else syntax.

  • Macros in statement position are now uniformly parsed as Stmt::Macro. Previously these would be disambiguated to Stmt::Item, although it was ambiguous whether a macro in statement position would expand to an item (like thread_local! { ... }) vs an expression (like println! { ... }).

Patterns
  • Pattern parsing for all the different syntactic positions in which patterns are allowed has been split into Pat::parse_single (for function- and closure-argument position, where top-level | is not allowed), Pat::parse_multi (where | is allowed) and Pat::parse_multi_with_leading_vert (for the pattern of match arms, which allow an optional leading |). Previously only a single parse behavior was supported and behaved like the new parse_single.

  • The Pat syntax tree now shares more common data structures with the Expr syntax tree where possible, such as for literals, paths, macros, and ranges in pattern position.

  • Parsing of struct field patterns does a better job rejecting bogus syntax such as Struct { 0 asdf } and Struct { ref mut 0: asdf }, which were previously incorrectly accepted.

  • Pat::Range now supports one-sided ranges by representing the start and end bound of the range by Option<Expr>.

  • Pat::Struct keeps track of attributes on the optional .. "rest" part of the pattern, as in let Struct { x, #[cfg(any())] .. } = _;.

  • Parsing unary negation now enforces that only literal patterns can be unarily negated. For example -self::CONST and -const { 0i32 } are not valid syntax in pattern position.

  • Pat::TupleStruct no longer wraps a value of type PatTuple but represents that information in its fields directly.

  • A single parenthesized pattern without trailing comma inside the parentheses is no longer considered a Pat::Tuple, it will be parsed as Pat::Paren.

  • One-sided range patterns are no longer allowed inside of slice patterns. [lo..] and [..=hi] are not considered valid pattern syntax by Rust.

Items
  • Typed self in a method signature, such as self: Pin<&mut Self>, will now be parsed as FnArg::Receiver. This means self, whether with or without an explicit type, is always treated as a Receiver. Previously only the &self and &mut self shorthand receivers were parsed as Receiver.

  • TraitItem::Method and ImplItem::Method have been renamed to TraitItem::Fn and ImplItem::Fn, as they do not necessarily represent methods if the function signature contains no self.

  • Item::Macro2 has been deleted as "macros 2.0" syntax is no longer considered on track for stabilization.

  • Various item kinds now hold Generics which didn't used to have them.

  • The variadic argument of an extern function signature can now be given an optional parameter name.

  • WherePredicate::Eq is no longer supported.

  • Visibility::Crate is no longer supported. This syntax has been removed from rustc.

  • Public visibility is now represented by a single Token![pub] token rather than the old VisPublic struct.

  • LifetimeDef is now called LifetimeParam. This name makes more sense in the context of the GenericParam enum (which also includes TypeParam and ConstParam), and is the name that the Rust Reference uses.

  • Modules and extern blocks (Item::Mod and Item::ForeignMod) can now be marked unsafe.

Attributes
  • The syntax tree for Attribute has been redesigned. The new API better accommodates attributes which mix structured and unstructured content at different levels of nesting.

  • AttributeArgs has been removed. Use Punctuated<Meta, Token![,]>.

  • For parsing attribute contents, parse_meta() is superseded by a new parsing library called syn::meta, and the parse_nested_meta method on Attribute.

Tokens
  • In string literals, the handling of non-ASCII whitespace after trailing \ now matches what is implemented by rustc. Space, horizontal tab, line feed, and carriage return are the only 4 whitespace characters which are supposed to be stripped from the beginning of the next line.

  • The delimiter tokens syn::token::Paren, Bracket, and Brace now store 2 spans (the open and close punctuation separately) rather than just 1. Use .join() to obtain a single Span spanning the whole group.

  • Keyword construction now requires a single span; an array of 1 span is no longer accepted. Use Token![trait](span) instead of Token![trait]([span]).

  • Some token types have been renamed to conform with terminology used by the Rust Reference. These are Add->Plus, Bang->Not, Colon2->PathSep, Div->Slash, Dot2->DotDot, Dot3->DotDotDot, Rem->Percent, and Sub->Minus.

More
  • Several enums have been made #[non_exhaustive] in anticipation of upcoming language changes. This includes WherePredicate, Lit, and GenericArgument.

  • The impl Extend<Pair<T, P>> for Punctuated<T, P> now requires P: Default and will push a default punctuation between the pre-existing elements and the new ones, if there is not already a trailing punctuation. Previously it would panic in this situation.

  • ParseStream::parse_terminated now takes a peek-style punctuation argument instead of turbofish. Replace input.parse_terminated::<_, Token![,]>(Thing::parse) with input.parse_terminated(Thing::parse, Token![,]).


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/cache](https://github.com/actions/cache) | action | major | `v1` -> `v4` | | [actions/checkout](https://github.com/actions/checkout) | action | major | `v3` -> `v4` | | [actions/checkout](https://github.com/actions/checkout) | action | major | `v2` -> `v4` | | [bitflags](https://github.com/bitflags/bitflags) | dependencies | major | `1` -> `2` | | [hashbrown](https://github.com/rust-lang/hashbrown) | dependencies | minor | `0.13` -> `0.15` | | [rustyline](https://github.com/kkawakam/rustyline) | dependencies | major | `11` -> `14` | | [syn](https://github.com/dtolnay/syn) | dependencies | major | `1.0` -> `2.0` | --- ### Release Notes <details> <summary>actions/cache (actions/cache)</summary> ### [`v4`](https://github.com/actions/cache/compare/v3...v4) [Compare Source](https://github.com/actions/cache/compare/v3...v4) ### [`v3`](https://github.com/actions/cache/compare/v2...v3) [Compare Source](https://github.com/actions/cache/compare/v2...v3) ### [`v2`](https://github.com/actions/cache/compare/v1...v2) [Compare Source](https://github.com/actions/cache/compare/v1...v2) </details> <details> <summary>actions/checkout (actions/checkout)</summary> ### [`v4`](https://github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v421) [Compare Source](https://github.com/actions/checkout/compare/v3...v4) - Check out other refs/\* by commit if provided, fall back to ref by [@&#8203;orhantoy](https://github.com/orhantoy) in https://github.com/actions/checkout/pull/1924 </details> <details> <summary>bitflags/bitflags (bitflags)</summary> ### [`v2.6.0`](https://github.com/bitflags/bitflags/blob/HEAD/CHANGELOG.md#260) [Compare Source](https://github.com/bitflags/bitflags/compare/2.5.0...2.6.0) #### What's Changed - Sync CHANGELOG.md with github release notes by [@&#8203;dextero](https://github.com/dextero) in https://github.com/bitflags/bitflags/pull/402 - Update error messages and zerocopy by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/403 - Bump minimum declared versions of dependencies by [@&#8203;dextero](https://github.com/dextero) in https://github.com/bitflags/bitflags/pull/404 - chore(deps): bump serde_derive and bytemuck versions by [@&#8203;joshka](https://github.com/joshka) in https://github.com/bitflags/bitflags/pull/405 - add OSFF Scorecard workflow by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/396 - Update stderr messages by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/408 - Fix typo by [@&#8203;waywardmonkeys](https://github.com/waywardmonkeys) in https://github.com/bitflags/bitflags/pull/410 - Allow specifying outer attributes in impl mode by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/411 #### New Contributors - [@&#8203;dextero](https://github.com/dextero) made their first contribution in https://github.com/bitflags/bitflags/pull/402 - [@&#8203;joshka](https://github.com/joshka) made their first contribution in https://github.com/bitflags/bitflags/pull/405 - [@&#8203;waywardmonkeys](https://github.com/waywardmonkeys) made their first contribution in https://github.com/bitflags/bitflags/pull/410 **Full Changelog**: https://github.com/bitflags/bitflags/compare/2.5.0...2.6.0 ### [`v2.5.0`](https://github.com/bitflags/bitflags/blob/HEAD/CHANGELOG.md#250) [Compare Source](https://github.com/bitflags/bitflags/compare/2.4.2...2.5.0) #### What's Changed - Derive `Debug` for `Flag<B>` by [@&#8203;tgross35](https://github.com/tgross35) in https://github.com/bitflags/bitflags/pull/398 - Support truncating or strict-named variants of parsing and formatting by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/400 #### New Contributors - [@&#8203;tgross35](https://github.com/tgross35) made their first contribution in https://github.com/bitflags/bitflags/pull/398 **Full Changelog**: https://github.com/bitflags/bitflags/compare/2.4.2...2.5.0 ### [`v2.4.2`](https://github.com/bitflags/bitflags/blob/HEAD/CHANGELOG.md#242) [Compare Source](https://github.com/bitflags/bitflags/compare/2.4.1...2.4.2) #### What's Changed - Cargo.toml: Anchor excludes to root of the package by [@&#8203;jamessan](https://github.com/jamessan) in https://github.com/bitflags/bitflags/pull/387 - Update error messages by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/390 - Add support for impl mode structs to be repr(packed) by [@&#8203;GnomedDev](https://github.com/GnomedDev) in https://github.com/bitflags/bitflags/pull/388 - Remove old `unused_tuple_struct_fields` lint by [@&#8203;dtolnay](https://github.com/dtolnay) in https://github.com/bitflags/bitflags/pull/393 - Delete use of `local_inner_macros` by [@&#8203;dtolnay](https://github.com/dtolnay) in https://github.com/bitflags/bitflags/pull/392 #### New Contributors - [@&#8203;jamessan](https://github.com/jamessan) made their first contribution in https://github.com/bitflags/bitflags/pull/387 - [@&#8203;GnomedDev](https://github.com/GnomedDev) made their first contribution in https://github.com/bitflags/bitflags/pull/388 **Full Changelog**: https://github.com/bitflags/bitflags/compare/2.4.1...2.4.2 ### [`v2.4.1`](https://github.com/bitflags/bitflags/blob/HEAD/CHANGELOG.md#241) [Compare Source](https://github.com/bitflags/bitflags/compare/2.4.0...2.4.1) #### What's Changed - Allow some new pedantic clippy lints by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/380 **Full Changelog**: https://github.com/bitflags/bitflags/compare/2.4.0...2.4.1 ### [`v2.4.0`](https://github.com/bitflags/bitflags/blob/HEAD/CHANGELOG.md#240) [Compare Source](https://github.com/bitflags/bitflags/compare/2.3.3...2.4.0) #### What's Changed - Remove html_root_url by [@&#8203;eldruin](https://github.com/eldruin) in https://github.com/bitflags/bitflags/pull/368 - Support unnamed flags by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/371 - Update smoke test to verify all Clippy and rustc lints by [@&#8203;MitMaro](https://github.com/MitMaro) in https://github.com/bitflags/bitflags/pull/374 - Specify the behavior of bitflags by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/369 #### New Contributors - [@&#8203;eldruin](https://github.com/eldruin) made their first contribution in https://github.com/bitflags/bitflags/pull/368 - [@&#8203;MitMaro](https://github.com/MitMaro) made their first contribution in https://github.com/bitflags/bitflags/pull/374 **Full Changelog**: https://github.com/bitflags/bitflags/compare/2.3.3...2.4.0 ### [`v2.3.3`](https://github.com/bitflags/bitflags/blob/HEAD/CHANGELOG.md#233) [Compare Source](https://github.com/bitflags/bitflags/compare/2.3.2...2.3.3) #### Changes to `-=` The `-=` operator was incorrectly changed to truncate bits that didn't correspond to valid flags in `2.3.0`. This has been fixed up so it once again behaves the same as `-` and `difference`. #### Changes to `!` The `!` operator previously called `Self::from_bits_truncate`, which would truncate any bits that only partially overlapped with a valid flag. It will now use `bits & Self::all().bits()`, so any bits that overlap any bits specified by any flag will be respected. This is unlikely to have any practical implications, but enables defining a flag like `const ALL = !0` as a way to signal that any bit pattern is a known set of flags. #### Changes to formatting Zero-valued flags will never be printed. You'll either get `0x0` for empty flags using debug formatting, or the set of flags with zero-valued flags omitted for others. Composite flags will no longer be redundantly printed if there are extra bits to print at the end that don't correspond to a valid flag. #### What's Changed - Fix up incorrect sub assign behavior and other cleanups by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/366 **Full Changelog**: https://github.com/bitflags/bitflags/compare/2.3.2...2.3.3 ### [`v2.3.2`](https://github.com/bitflags/bitflags/blob/HEAD/CHANGELOG.md#232) [Compare Source](https://github.com/bitflags/bitflags/compare/2.3.1...2.3.2) #### What's Changed - \[doc] \[src/lib.rs] delete redundant path prefix by [@&#8203;OccupyMars2025](https://github.com/OccupyMars2025) in https://github.com/bitflags/bitflags/pull/361 #### New Contributors - [@&#8203;OccupyMars2025](https://github.com/OccupyMars2025) made their first contribution in https://github.com/bitflags/bitflags/pull/361 **Full Changelog**: https://github.com/bitflags/bitflags/compare/2.3.1...2.3.2 ### [`v2.3.1`](https://github.com/bitflags/bitflags/blob/HEAD/CHANGELOG.md#231) [Compare Source](https://github.com/bitflags/bitflags/compare/2.3.0...2.3.1) #### What's Changed - Fix Self in flags value expressions by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/355 **Full Changelog**: https://github.com/bitflags/bitflags/compare/2.3.0...2.3.1 ### [`v2.3.0`](https://github.com/bitflags/bitflags/blob/HEAD/CHANGELOG.md#230) [Compare Source](https://github.com/bitflags/bitflags/compare/2.2.1...2.3.0) #### Major changes ##### `BitFlags` trait deprecated in favor of `Flags` trait This release introduces the `Flags` trait and deprecates the `BitFlags` trait. These two traits are semver compatible so if you have public API code depending on `BitFlags` you can move to `Flags` without breaking end-users. This is possible because the `BitFlags` trait was never publicly implementable, so it now carries `Flags` as a supertrait. All implementations of `Flags` additionally implement `BitFlags`. The `Flags` trait is a publicly implementable version of the old `BitFlags` trait. The original `BitFlags` trait carried some macro baggage that made it difficult to implement, so a new `Flags` trait has been introduced as the *One True Trait* for interacting with flags types generically. See the the `macro_free` and `custom_derive` examples for more details. ##### `Bits` trait publicly exposed The `Bits` trait for the underlying storage of flags values is also now publicly implementable. This lets you define your own exotic backing storage for flags. See the `custom_bits_type` example for more details. #### What's Changed - Use explicit hashes for actions steps by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/350 - Support ejecting flags types from the bitflags macro by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/351 **Full Changelog**: https://github.com/bitflags/bitflags/compare/2.2.1...2.3.0 ### [`v2.2.1`](https://github.com/bitflags/bitflags/blob/HEAD/CHANGELOG.md#221) [Compare Source](https://github.com/bitflags/bitflags/compare/2.2.0...2.2.1) #### What's Changed - Refactor attribute filtering to apply per-flag by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/345 **Full Changelog**: https://github.com/bitflags/bitflags/compare/2.2.0...2.2.1 ### [`v2.2.0`](https://github.com/bitflags/bitflags/blob/HEAD/CHANGELOG.md#220) [Compare Source](https://github.com/bitflags/bitflags/compare/2.1.0...2.2.0) #### What's Changed - Create SECURITY.md by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/338 - add docs to describe the behavior of multi-bit flags by [@&#8203;nicholasbishop](https://github.com/nicholasbishop) in https://github.com/bitflags/bitflags/pull/340 - Add support for bytemuck by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/336 - Add a top-level macro for filtering attributes by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/341 #### New Contributors - [@&#8203;nicholasbishop](https://github.com/nicholasbishop) made their first contribution in https://github.com/bitflags/bitflags/pull/340 **Full Changelog**: https://github.com/bitflags/bitflags/compare/2.1.0...2.2.0 ### [`v2.1.0`](https://github.com/bitflags/bitflags/blob/HEAD/CHANGELOG.md#210) [Compare Source](https://github.com/bitflags/bitflags/compare/2.0.2...2.1.0) #### What's Changed - Add docs for the internal Field0 and examples of formatting/parsing by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/328 - Add support for arbitrary by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/324 - Fix up missing docs for consts within consts by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/330 - Ignore clippy lint in generated code by [@&#8203;Jake-Shadle](https://github.com/Jake-Shadle) in https://github.com/bitflags/bitflags/pull/331 #### New Contributors - [@&#8203;Jake-Shadle](https://github.com/Jake-Shadle) made their first contribution in https://github.com/bitflags/bitflags/pull/331 **Full Changelog**: https://github.com/bitflags/bitflags/compare/2.0.2...2.1.0 ### [`v2.0.2`](https://github.com/bitflags/bitflags/blob/HEAD/CHANGELOG.md#202) [Compare Source](https://github.com/bitflags/bitflags/compare/2.0.1...2.0.2) #### What's Changed - Fix up missing isize and usize Bits impls by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/321 **Full Changelog**: https://github.com/bitflags/bitflags/compare/2.0.1...2.0.2 ### [`v2.0.1`](https://github.com/bitflags/bitflags/blob/HEAD/CHANGELOG.md#201) [Compare Source](https://github.com/bitflags/bitflags/compare/2.0.0...2.0.1) #### What's Changed - Fix up some docs issues by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/309 - Make empty_flag() const. by [@&#8203;tormeh](https://github.com/tormeh) in https://github.com/bitflags/bitflags/pull/313 - Fix formatting of multi-bit flags with partial overlap by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/316 #### New Contributors - [@&#8203;tormeh](https://github.com/tormeh) made their first contribution in https://github.com/bitflags/bitflags/pull/313 **Full Changelog**: https://github.com/bitflags/bitflags/compare/2.0.0...2.0.1 ### [`v2.0.0`](https://github.com/bitflags/bitflags/blob/HEAD/CHANGELOG.md#200) [Compare Source](https://github.com/bitflags/bitflags/compare/1.3.2...2.0.0) #### Major changes This release includes some major changes over `1.x`. If you use `bitflags!` types in your public API then upgrading this library may cause breakage in your downstream users. ##### ⚠️ Serialization You'll need to add the `serde` Cargo feature in order to `#[derive(Serialize, Deserialize)]` on your generated flags types: ```rust bitflags! { #[derive(Serialize, Deserialize)] #[serde(transparent)] pub struct Flags: T { .. } } ``` where `T` is the underlying bits type you're using, such as `u32`. The default serialization format with `serde` **has changed** if you `#[derive(Serialize, Deserialize)]` on your generated flags types. It will now use a formatted string for human-readable formats and the underlying bits type for compact formats. To keep the old format, see the https://github.com/KodrAus/bitflags-serde-legacy library. ##### ⚠️ Traits Generated flags types now derive fewer traits. If you need to maintain backwards compatibility, you can derive the following yourself: ```rust #[derive(PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Clone, Copy)] ``` ##### ⚠️ Methods The unsafe `from_bits_unchecked` method is now a safe `from_bits_retain` method. You can add the following method to your generated types to keep them compatible: ```rust #[deprecated = "use the safe `from_bits_retain` method instead"] pub unsafe fn from_bits_unchecked(bits: T) -> Self { Self::from_bits_retain(bits) } ``` where `T` is the underlying bits type you're using, such as `u32`. ##### ⚠️ `.bits` field You can now use the `.bits()` method instead of the old `.bits`. The representation of generated flags types has changed from a struct with the single field `bits` to a newtype. #### What's Changed - Fix a typo and call out MSRV bump by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/259 - BitFlags trait by [@&#8203;arturoc](https://github.com/arturoc) in https://github.com/bitflags/bitflags/pull/220 - Add a hidden trait to discourage manual impls of BitFlags by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/261 - Sanitize `Ok` by [@&#8203;konsumlamm](https://github.com/konsumlamm) in https://github.com/bitflags/bitflags/pull/266 - Fix bug in `Debug` implementation by [@&#8203;konsumlamm](https://github.com/konsumlamm) in https://github.com/bitflags/bitflags/pull/268 - Fix a typo in the generated documentation by [@&#8203;wackbyte](https://github.com/wackbyte) in https://github.com/bitflags/bitflags/pull/271 - Use SPDX license format by [@&#8203;atouchet](https://github.com/atouchet) in https://github.com/bitflags/bitflags/pull/272 - serde tests fail in CI by [@&#8203;arturoc](https://github.com/arturoc) in https://github.com/bitflags/bitflags/pull/277 - Fix beta test output by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/279 - Add example to the README.md file by [@&#8203;tiaanl](https://github.com/tiaanl) in https://github.com/bitflags/bitflags/pull/270 - Iterator over all the enabled options by [@&#8203;arturoc](https://github.com/arturoc) in https://github.com/bitflags/bitflags/pull/278 - from_bits\_(truncate) fail with composite flags by [@&#8203;arturoc](https://github.com/arturoc) in https://github.com/bitflags/bitflags/pull/276 - Add more platform coverage to CI by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/280 - rework the way cfgs are handled by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/281 - Split generated code into two types by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/282 - expose bitflags iters using nameable types by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/286 - Support creating flags from their names by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/287 - Update README.md by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/288 - Prepare for 2.0.0-rc.1 release by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/289 - Add missing "if" to contains doc-comment in traits.rs by [@&#8203;rusty-snake](https://github.com/rusty-snake) in https://github.com/bitflags/bitflags/pull/291 - Forbid unsafe_code by [@&#8203;fintelia](https://github.com/fintelia) in https://github.com/bitflags/bitflags/pull/294 - serde: enable no-std support by [@&#8203;nim65s](https://github.com/nim65s) in https://github.com/bitflags/bitflags/pull/296 - Add a parser for flags formatted as bar-separated-values by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/297 - Prepare for 2.0.0-rc.2 release by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/299 - Use strip_prefix instead of starts_with + slice by [@&#8203;QuinnPainter](https://github.com/QuinnPainter) in https://github.com/bitflags/bitflags/pull/301 - Fix up some clippy lints by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/302 - Prepare for 2.0.0-rc.3 release by [@&#8203;KodrAus](https://github.com/KodrAus) in https://github.com/bitflags/bitflags/pull/303 - feat: Add minimum permissions to rust.yml workflow by [@&#8203;gabibguti](https://github.com/gabibguti) in https://github.com/bitflags/bitflags/pull/305 #### New Contributors - [@&#8203;wackbyte](https://github.com/wackbyte) made their first contribution in https://github.com/bitflags/bitflags/pull/271 - [@&#8203;atouchet](https://github.com/atouchet) made their first contribution in https://github.com/bitflags/bitflags/pull/272 - [@&#8203;tiaanl](https://github.com/tiaanl) made their first contribution in https://github.com/bitflags/bitflags/pull/270 - [@&#8203;rusty-snake](https://github.com/rusty-snake) made their first contribution in https://github.com/bitflags/bitflags/pull/291 - [@&#8203;fintelia](https://github.com/fintelia) made their first contribution in https://github.com/bitflags/bitflags/pull/294 - [@&#8203;nim65s](https://github.com/nim65s) made their first contribution in https://github.com/bitflags/bitflags/pull/296 - [@&#8203;QuinnPainter](https://github.com/QuinnPainter) made their first contribution in https://github.com/bitflags/bitflags/pull/301 - [@&#8203;gabibguti](https://github.com/gabibguti) made their first contribution in https://github.com/bitflags/bitflags/pull/305 **Full Changelog**: https://github.com/bitflags/bitflags/compare/1.3.2...2.0.0 </details> <details> <summary>rust-lang/hashbrown (hashbrown)</summary> ### [`v0.15.0`](https://github.com/rust-lang/hashbrown/blob/HEAD/CHANGELOG.md#v0150---2024-10-01) [Compare Source](https://github.com/rust-lang/hashbrown/compare/v0.14.5...v0.15.0) This update contains breaking changes that remove the `raw` API with the hope of centralising on the `HashTable` API in the future. You can follow the discussion and progress in [#&#8203;545](https://github.com/rust-lang/hashbrown/issues/545) to discuss features you think should be added to this API that were previously only possible on the `raw` API. ##### Added - Added `borsh` feature with `BorshSerialize` and `BorshDeserialize` impls. ([#&#8203;525](https://github.com/rust-lang/hashbrown/issues/525)) - Added `Assign` impls for `HashSet` operators. ([#&#8203;529](https://github.com/rust-lang/hashbrown/issues/529)) - Added `Default` impls for iterator types. ([#&#8203;542](https://github.com/rust-lang/hashbrown/issues/542)) - Added `HashTable::iter_hash{,_mut}` methods. ([#&#8203;549](https://github.com/rust-lang/hashbrown/issues/549)) - Added `Hash{Table,Map,Set}::allocation_size` methods. ([#&#8203;553](https://github.com/rust-lang/hashbrown/issues/553)) - Implemented `Debug` and `FusedIterator` for all `HashTable` iterators. ([#&#8203;561](https://github.com/rust-lang/hashbrown/issues/561)) - Specialized `Iterator::fold` for all `HashTable` iterators. ([#&#8203;561](https://github.com/rust-lang/hashbrown/issues/561)) ##### Changed - Changed `hash_set::VacantEntry::insert` to return `OccupiedEntry`. ([#&#8203;495](https://github.com/rust-lang/hashbrown/issues/495)) - Improved`hash_set::Difference::size_hint` lower-bound. ([#&#8203;530](https://github.com/rust-lang/hashbrown/issues/530)) - Improved `HashSet::is_disjoint` performance. ([#&#8203;531](https://github.com/rust-lang/hashbrown/issues/531)) - `equivalent` feature is now enabled by default. ([#&#8203;532](https://github.com/rust-lang/hashbrown/issues/532)) - `HashSet` operators now return a set with the same allocator. ([#&#8203;529](https://github.com/rust-lang/hashbrown/issues/529)) - Changed the default hasher to foldhash. ([#&#8203;563](https://github.com/rust-lang/hashbrown/issues/563)) - `ahash` feature has been renamed to `default-hasher`. ([#&#8203;533](https://github.com/rust-lang/hashbrown/issues/533)) - Entry API has been reworked and several methods have been renamed. ([#&#8203;535](https://github.com/rust-lang/hashbrown/issues/535)) - `Hash{Map,Set}::insert_unique_unchecked` is now unsafe. ([#&#8203;556](https://github.com/rust-lang/hashbrown/issues/556)) - The signature of `get_many_mut` and related methods was changed. ([#&#8203;562](https://github.com/rust-lang/hashbrown/issues/562)) ##### Fixed - Fixed typos, stray backticks in docs. ([#&#8203;558](https://github.com/rust-lang/hashbrown/issues/558), [#&#8203;560](https://github.com/rust-lang/hashbrown/issues/560)) ##### Removed - Raw entry API is now under `raw-entry` feature, to be eventually removed. ([#&#8203;534](https://github.com/rust-lang/hashbrown/issues/534), [#&#8203;555](https://github.com/rust-lang/hashbrown/issues/555)) - Raw table API has been made private and the `raw` feature is removed; in the future, all code should be using the `HashTable` API instead. ([#&#8203;531](https://github.com/rust-lang/hashbrown/issues/531), [#&#8203;546](https://github.com/rust-lang/hashbrown/issues/546)) - `rykv` feature was removed; this is now provided by the `rykv` crate instead. ([#&#8203;554](https://github.com/rust-lang/hashbrown/issues/554)) - `HashSet::get_or_insert_owned` was removed in favor of `get_or_insert_with`. ([#&#8203;555](https://github.com/rust-lang/hashbrown/issues/555)) ### [`v0.14.5`](https://github.com/rust-lang/hashbrown/blob/HEAD/CHANGELOG.md#v0145---2024-04-28) [Compare Source](https://github.com/rust-lang/hashbrown/compare/v0.14.4...v0.14.5) ##### Fixed - Fixed index calculation in panic guard of `clone_from_impl`. ([#&#8203;511](https://github.com/rust-lang/hashbrown/issues/511)) ### [`v0.14.4`](https://github.com/rust-lang/hashbrown/blob/HEAD/CHANGELOG.md#-v0144---2024-03-19) [Compare Source](https://github.com/rust-lang/hashbrown/compare/v0.14.3...v0.14.4) This release was *yanked* due to a breaking change. ### [`v0.14.3`](https://github.com/rust-lang/hashbrown/blob/HEAD/CHANGELOG.md#v0143---2023-11-26) [Compare Source](https://github.com/rust-lang/hashbrown/compare/v0.14.2...v0.14.3) ##### Added - Specialized `fold` implementation of iterators. ([#&#8203;480](https://github.com/rust-lang/hashbrown/issues/480)) ##### Fixed - Avoid using unstable `ptr::invalid_mut` on nightly. ([#&#8203;481](https://github.com/rust-lang/hashbrown/issues/481)) ### [`v0.14.2`](https://github.com/rust-lang/hashbrown/blob/HEAD/CHANGELOG.md#v0142---2023-10-19) [Compare Source](https://github.com/rust-lang/hashbrown/compare/v0.14.1...v0.14.2) ##### Added - `HashTable` type which provides a low-level but safe API with explicit hashing. ([#&#8203;466](https://github.com/rust-lang/hashbrown/issues/466)) ##### Fixed - Disabled the use of NEON instructions on big-endian ARM. ([#&#8203;475](https://github.com/rust-lang/hashbrown/issues/475)) - Disabled the use of NEON instructions on Miri. ([#&#8203;476](https://github.com/rust-lang/hashbrown/issues/476)) ### [`v0.14.1`](https://github.com/rust-lang/hashbrown/blob/HEAD/CHANGELOG.md#v0141---2023-09-28) [Compare Source](https://github.com/rust-lang/hashbrown/compare/v0.14.0...v0.14.1) ##### Added - Allow serializing `HashMap`s that use a custom allocator. ([#&#8203;449](https://github.com/rust-lang/hashbrown/issues/449)) ##### Changed - Use the `Equivalent` trait from the `equivalent` crate. ([#&#8203;442](https://github.com/rust-lang/hashbrown/issues/442)) - Slightly improved performance of table resizing. ([#&#8203;451](https://github.com/rust-lang/hashbrown/issues/451)) - Relaxed MSRV to 1.63.0. ([#&#8203;457](https://github.com/rust-lang/hashbrown/issues/457)) - Removed `Clone` requirement from custom allocators. ([#&#8203;468](https://github.com/rust-lang/hashbrown/issues/468)) ##### Fixed - Fixed custom allocators being leaked in some situations. ([#&#8203;439](https://github.com/rust-lang/hashbrown/issues/439), [#&#8203;465](https://github.com/rust-lang/hashbrown/issues/465)) ### [`v0.14.0`](https://github.com/rust-lang/hashbrown/blob/HEAD/CHANGELOG.md#v0140---2023-06-01) [Compare Source](https://github.com/rust-lang/hashbrown/compare/v0.13.2...v0.14.0) ##### Added - Support for `allocator-api2` crate for interfacing with custom allocators on stable. ([#&#8203;417](https://github.com/rust-lang/hashbrown/issues/417)) - Optimized implementation for ARM using NEON instructions. ([#&#8203;430](https://github.com/rust-lang/hashbrown/issues/430)) - Support for rkyv serialization. ([#&#8203;432](https://github.com/rust-lang/hashbrown/issues/432)) - `Equivalent` trait to look up values without `Borrow`. ([#&#8203;345](https://github.com/rust-lang/hashbrown/issues/345)) - `Hash{Map,Set}::raw_table_mut` is added which returns a mutable reference. ([#&#8203;404](https://github.com/rust-lang/hashbrown/issues/404)) - Fast path for `clear` on empty tables. ([#&#8203;428](https://github.com/rust-lang/hashbrown/issues/428)) ##### Changed - Optimized insertion to only perform a single lookup. ([#&#8203;277](https://github.com/rust-lang/hashbrown/issues/277)) - `DrainFilter` (`drain_filter`) has been renamed to `ExtractIf` and no longer drops remaining elements when the iterator is dropped. #(374) - Bumped MSRV to 1.64.0. ([#&#8203;431](https://github.com/rust-lang/hashbrown/issues/431)) - `{Map,Set}::raw_table` now returns an immutable reference. ([#&#8203;404](https://github.com/rust-lang/hashbrown/issues/404)) - `VacantEntry` and `OccupiedEntry` now use the default hasher if none is specified in generics. ([#&#8203;389](https://github.com/rust-lang/hashbrown/issues/389)) - `RawTable::data_start` now returns a `NonNull` to match `RawTable::data_end`. ([#&#8203;387](https://github.com/rust-lang/hashbrown/issues/387)) - `RawIter::{reflect_insert, reflect_remove}` are now unsafe. ([#&#8203;429](https://github.com/rust-lang/hashbrown/issues/429)) - `RawTable::find_potential` is renamed to `find_or_find_insert_slot` and returns an `InsertSlot`. ([#&#8203;429](https://github.com/rust-lang/hashbrown/issues/429)) - `RawTable::remove` now also returns an `InsertSlot`. ([#&#8203;429](https://github.com/rust-lang/hashbrown/issues/429)) - `InsertSlot` can be used to insert an element with `RawTable::insert_in_slot`. ([#&#8203;429](https://github.com/rust-lang/hashbrown/issues/429)) - `RawIterHash` no longer has a lifetime tied to that of the `RawTable`. ([#&#8203;427](https://github.com/rust-lang/hashbrown/issues/427)) - The trait bounds of `HashSet::raw_table` have been relaxed to not require `Eq + Hash`. ([#&#8203;423](https://github.com/rust-lang/hashbrown/issues/423)) - `EntryRef::and_replace_entry_with` and `OccupiedEntryRef::replace_entry_with` were changed to give a `&K` instead of a `&Q` to the closure. ##### Removed - Support for `bumpalo` as an allocator with custom wrapper. Use `allocator-api2` feature in `bumpalo` to use it as an allocator for `hashbrown` collections. ([#&#8203;417](https://github.com/rust-lang/hashbrown/issues/417)) </details> <details> <summary>kkawakam/rustyline (rustyline)</summary> ### [`v14.0.0`](https://github.com/kkawakam/rustyline/releases/tag/v14.0.0): 14.0.0 [Compare Source](https://github.com/kkawakam/rustyline/compare/v13.0.0...v14.0.0) #### What's Changed - Migrate to windows-sys [#&#8203;753](https://github.com/kkawakam/rustyline/issues/753) - Bump env_logger version to 0.11 [#&#8203;760](https://github.com/kkawakam/rustyline/issues/760) - Bump rusqlite to version 0.31 [#&#8203;763](https://github.com/kkawakam/rustyline/issues/763) - Fix typeahead [#&#8203;761](https://github.com/kkawakam/rustyline/issues/761) - Add enable signals config option [#&#8203;759](https://github.com/kkawakam/rustyline/issues/759) - Fix clippy warnings [#&#8203;764](https://github.com/kkawakam/rustyline/issues/764) - Upgrade nix to 0.28 [#&#8203;765](https://github.com/kkawakam/rustyline/issues/765) #### New Contributors - [@&#8203;printfn](https://github.com/printfn) made their first contribution in https://github.com/kkawakam/rustyline/pull/753 - [@&#8203;andreistan26](https://github.com/andreistan26) made their first contribution in https://github.com/kkawakam/rustyline/pull/759 **Full Changelog**: https://github.com/kkawakam/rustyline/compare/v13.0.0...v14.0.0 ### [`v13.0.0`](https://github.com/kkawakam/rustyline/releases/tag/v13.0.0): 13.0.0 [Compare Source](https://github.com/kkawakam/rustyline/compare/v12.0.0...v13.0.0) #### What's Changed - Add `HistoryHinter::default()` and `HistoryHinter::new()` by [@&#8203;segeljakt](https://github.com/segeljakt) in https://github.com/kkawakam/rustyline/pull/710 - Update fd-lock requirement from 3.0.0 to 4.0.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/kkawakam/rustyline/pull/714 - Use termios from termios crate by [@&#8203;nospam3089](https://github.com/nospam3089) in https://github.com/kkawakam/rustyline/pull/717 - Fix clippy warnings by [@&#8203;gwenn](https://github.com/gwenn) in https://github.com/kkawakam/rustyline/pull/718 - Fix clippy warning by [@&#8203;gwenn](https://github.com/gwenn) in https://github.com/kkawakam/rustyline/pull/720 - Implement `Candidate` for `Rc<str>` by [@&#8203;fsktom](https://github.com/fsktom) in https://github.com/kkawakam/rustyline/pull/721 - fix(unix): restore terminal mode by [@&#8203;miraclx](https://github.com/miraclx) in https://github.com/kkawakam/rustyline/pull/724 - Bump nix dependency to version 0.27 by [@&#8203;gwenn](https://github.com/gwenn) in https://github.com/kkawakam/rustyline/pull/728 - No highligh_char on final refresh by [@&#8203;gwenn](https://github.com/gwenn) in https://github.com/kkawakam/rustyline/pull/729 - Fix clippy warnings on Windows by [@&#8203;gwenn](https://github.com/gwenn) in https://github.com/kkawakam/rustyline/pull/735 - add Cmd::Repaint by [@&#8203;sujiacong](https://github.com/sujiacong) in https://github.com/kkawakam/rustyline/pull/734 - Make termios an optional dependency by [@&#8203;gwenn](https://github.com/gwenn) in https://github.com/kkawakam/rustyline/pull/736 - Mapping between linenoise API and rustyline API by [@&#8203;gwenn](https://github.com/gwenn) in https://github.com/kkawakam/rustyline/pull/737 - Use wrap_at_eol when ENABLE_VIRTUAL_TERMINAL_PROCESSING is set by [@&#8203;gwenn](https://github.com/gwenn) in https://github.com/kkawakam/rustyline/pull/739 - Ignore binding::test::size_of_event on arch <> x86\_64 by [@&#8203;gwenn](https://github.com/gwenn) in https://github.com/kkawakam/rustyline/pull/742 - Update rusqlite requirement from 0.29.0 to 0.30.0 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/kkawakam/rustyline/pull/745 - Bump clipboard-win to version 5.0 by [@&#8203;gwenn](https://github.com/gwenn) in https://github.com/kkawakam/rustyline/pull/746 - Change cursor visibility by [@&#8203;gwenn](https://github.com/gwenn) in https://github.com/kkawakam/rustyline/pull/747 - Fix some clippy warnings by [@&#8203;gwenn](https://github.com/gwenn) in https://github.com/kkawakam/rustyline/pull/749 - Fix derive macro with Highlighter attr by [@&#8203;gwenn](https://github.com/gwenn) in https://github.com/kkawakam/rustyline/pull/751 - Support completion candidates that are shorter than the input by [@&#8203;gwenn](https://github.com/gwenn) in https://github.com/kkawakam/rustyline/pull/750 #### New Contributors - [@&#8203;segeljakt](https://github.com/segeljakt) made their first contribution in https://github.com/kkawakam/rustyline/pull/710 - [@&#8203;nospam3089](https://github.com/nospam3089) made their first contribution in https://github.com/kkawakam/rustyline/pull/717 - [@&#8203;fsktom](https://github.com/fsktom) made their first contribution in https://github.com/kkawakam/rustyline/pull/721 - [@&#8203;miraclx](https://github.com/miraclx) made their first contribution in https://github.com/kkawakam/rustyline/pull/724 - [@&#8203;sujiacong](https://github.com/sujiacong) made their first contribution in https://github.com/kkawakam/rustyline/pull/734 **Full Changelog**: https://github.com/kkawakam/rustyline/compare/v12.0.0...v12.0.1 ### [`v12.0.0`](https://github.com/kkawakam/rustyline/releases/tag/v12.0.0): 12.0.0 [Compare Source](https://github.com/kkawakam/rustyline/compare/v11.0.0...v12.0.0) #### What's Changed - Unnecessarily qualified path [#&#8203;683](https://github.com/kkawakam/rustyline/issues/683) - \[ci] Update actions/checkout in GitHub Actions workflows to v3 [#&#8203;685](https://github.com/kkawakam/rustyline/issues/685) - Fix some typos [#&#8203;684](https://github.com/kkawakam/rustyline/issues/684) - Make MemHistory::default() be a wrapper around MemHistory::new() to avoid that max_len is defaulted to 0. [#&#8203;686](https://github.com/kkawakam/rustyline/issues/686) - Create dependabot.yml [#&#8203;687](https://github.com/kkawakam/rustyline/issues/687) - Add minimum permissions to rust.yml workflow [#&#8203;689](https://github.com/kkawakam/rustyline/issues/689) - Update bitflags requirement from 1.3 to 2.0 [#&#8203;688](https://github.com/kkawakam/rustyline/issues/688) - Upgrade syn version [#&#8203;691](https://github.com/kkawakam/rustyline/issues/691) - Update rusqlite requirement from 0.28.0 to 0.29.0 [#&#8203;693](https://github.com/kkawakam/rustyline/issues/693) - Add Editor::clear_screen method [#&#8203;694](https://github.com/kkawakam/rustyline/issues/694), [#&#8203;695](https://github.com/kkawakam/rustyline/issues/695) - Fix clippy warnings [#&#8203;697](https://github.com/kkawakam/rustyline/issues/697) - Move to the smaller, cargo-team maintained `home` crate [#&#8203;698](https://github.com/kkawakam/rustyline/issues/698) - Upgrade http links to https in Cargo.toml [#&#8203;701](https://github.com/kkawakam/rustyline/issues/701) - Fix dot command in vi mode [#&#8203;705](https://github.com/kkawakam/rustyline/issues/705), [#&#8203;706](https://github.com/kkawakam/rustyline/issues/706) **Full Changelog**: https://github.com/kkawakam/rustyline/compare/v11.0.0...v12.0.0 </details> <details> <summary>dtolnay/syn (syn)</summary> ### [`v2.0.79`](https://github.com/dtolnay/syn/releases/tag/2.0.79) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.78...2.0.79) - Fix infinite loop on parsing chained ranges ([#&#8203;1741](https://github.com/dtolnay/syn/issues/1741)) - Fix panic in parsing `use` items containing absolute paths ([#&#8203;1742](https://github.com/dtolnay/syn/issues/1742)) ### [`v2.0.78`](https://github.com/dtolnay/syn/releases/tag/2.0.78) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.77...2.0.78) - Fix infinite loop on chained comparison ([#&#8203;1739](https://github.com/dtolnay/syn/issues/1739)) ### [`v2.0.77`](https://github.com/dtolnay/syn/releases/tag/2.0.77) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.76...2.0.77) - Support parsing `Expr::Tuple` in non-"full" mode ([#&#8203;1727](https://github.com/dtolnay/syn/issues/1727)) ### [`v2.0.76`](https://github.com/dtolnay/syn/releases/tag/2.0.76) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.75...2.0.76) - Enforce that tail call `become` keyword is followed by an expression ([#&#8203;1725](https://github.com/dtolnay/syn/issues/1725)) ### [`v2.0.75`](https://github.com/dtolnay/syn/releases/tag/2.0.75) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.74...2.0.75) - Automatically fill in missing turbofish when printing ExprPath and other paths in expression position ([#&#8203;1722](https://github.com/dtolnay/syn/issues/1722)) ### [`v2.0.74`](https://github.com/dtolnay/syn/releases/tag/2.0.74) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.73...2.0.74) - Fix *"temporary is dropped and runs the destructor for type \`impl Iterator\`"* regression affecting certain use of `Generics` iterator methods ([#&#8203;1719](https://github.com/dtolnay/syn/issues/1719)) ### [`v2.0.73`](https://github.com/dtolnay/syn/releases/tag/2.0.73) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.72...2.0.73) - Support parsing unnamed C varargs within function pointer types ([#&#8203;1711](https://github.com/dtolnay/syn/issues/1711)) - Improve synthesized error message on unexpected tokens at the end of the expected contents of a delimited group ([#&#8203;1713](https://github.com/dtolnay/syn/issues/1713)) - Support parsing unstable tail call syntax ([#&#8203;1714](https://github.com/dtolnay/syn/issues/1714), https://github.com/rust-lang/rust/issues/112788) - Add [`Fields::members`](https://docs.rs/syn/2.0.73/syn/enum.Fields.html#method.members) iterator ([#&#8203;1716](https://github.com/dtolnay/syn/issues/1716), thanks [@&#8203;Fancyflame](https://github.com/Fancyflame)) ### [`v2.0.72`](https://github.com/dtolnay/syn/releases/tag/2.0.72) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.71...2.0.72) - Parse `use<'a, T>` precise capturing bounds ([#&#8203;1707](https://github.com/dtolnay/syn/issues/1707), thanks [@&#8203;compiler-errors](https://github.com/compiler-errors)) ### [`v2.0.71`](https://github.com/dtolnay/syn/releases/tag/2.0.71) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.70...2.0.71) - Do not require mutable borrow in Punctuated::get() ([#&#8203;1706](https://github.com/dtolnay/syn/issues/1706), thanks [@&#8203;lemunozm](https://github.com/lemunozm)) ### [`v2.0.70`](https://github.com/dtolnay/syn/releases/tag/2.0.70) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.69...2.0.70) - Improve parenthesization of closures, jumps, ranges, chained comparisons, and let ([#&#8203;1694](https://github.com/dtolnay/syn/issues/1694), [#&#8203;1695](https://github.com/dtolnay/syn/issues/1695), [#&#8203;1698](https://github.com/dtolnay/syn/issues/1698), [#&#8203;1699](https://github.com/dtolnay/syn/issues/1699), [#&#8203;1700](https://github.com/dtolnay/syn/issues/1700)) ### [`v2.0.69`](https://github.com/dtolnay/syn/releases/tag/2.0.69) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.68...2.0.69) - Correctly parenthesize labeled loops inside a break value ([#&#8203;1692](https://github.com/dtolnay/syn/issues/1692)) - Add `Punctuated::get` and `get_mut` ([#&#8203;1693](https://github.com/dtolnay/syn/issues/1693)) ### [`v2.0.68`](https://github.com/dtolnay/syn/releases/tag/2.0.68) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.67...2.0.68) - Improve panic location when `parse_quote!` parses invalid syntax ([#&#8203;1690](https://github.com/dtolnay/syn/issues/1690), thanks [@&#8203;stepancheg](https://github.com/stepancheg)) - More efficient peek implementation for `Group` and `Lifetime` ([#&#8203;1687](https://github.com/dtolnay/syn/issues/1687)) ### [`v2.0.67`](https://github.com/dtolnay/syn/releases/tag/2.0.67) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.66...2.0.67) - Produce more accurate error message locations for errors located at the end of a nested group ([#&#8203;1679](https://github.com/dtolnay/syn/issues/1679), [#&#8203;1680](https://github.com/dtolnay/syn/issues/1680)) - Support peeking `LitCStr` in ParseStream::peek ([#&#8203;1682](https://github.com/dtolnay/syn/issues/1682)) ### [`v2.0.66`](https://github.com/dtolnay/syn/releases/tag/2.0.66) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.65...2.0.66) - Allow braced structs when parsing ExprLet ([#&#8203;1671](https://github.com/dtolnay/syn/issues/1671)) ### [`v2.0.65`](https://github.com/dtolnay/syn/releases/tag/2.0.65) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.64...2.0.65) - Optimize the implementation of `Fold` to compile faster ([#&#8203;1666](https://github.com/dtolnay/syn/issues/1666), [#&#8203;1667](https://github.com/dtolnay/syn/issues/1667), [#&#8203;1668](https://github.com/dtolnay/syn/issues/1668)) ### [`v2.0.64`](https://github.com/dtolnay/syn/releases/tag/2.0.64) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.63...2.0.64) - Support using ParseBuffer across `catch_unwind` ([#&#8203;1646](https://github.com/dtolnay/syn/issues/1646)) - Validate that the expression in a let-else ends in brace as required by rustc ([#&#8203;1648](https://github.com/dtolnay/syn/issues/1648), [#&#8203;1649](https://github.com/dtolnay/syn/issues/1649)) - Legalize invalid const generic arguments by wrapping in braces ([#&#8203;1654](https://github.com/dtolnay/syn/issues/1654), [#&#8203;1655](https://github.com/dtolnay/syn/issues/1655)) - Fix some expression precedence edge cases involving `break` and `return` in loop headers ([#&#8203;1656](https://github.com/dtolnay/syn/issues/1656)) - Always print closure bodies with a brace when the closure has an explicit return type ([#&#8203;1658](https://github.com/dtolnay/syn/issues/1658)) - Automatically insert necessary parentheses in ToTokens for Expr when required by expression precedence ([#&#8203;1659](https://github.com/dtolnay/syn/issues/1659)) - Support struct literal syntax in match guard expressions ([#&#8203;1662](https://github.com/dtolnay/syn/issues/1662)) ### [`v2.0.63`](https://github.com/dtolnay/syn/releases/tag/2.0.63) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.62...2.0.63) - Parse and print long if-else-if chains without reliance on deep recursion to avoid overflowing stack ([#&#8203;1644](https://github.com/dtolnay/syn/issues/1644), [#&#8203;1645](https://github.com/dtolnay/syn/issues/1645)) ### [`v2.0.62`](https://github.com/dtolnay/syn/releases/tag/2.0.62) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.61...2.0.62) - Reject invalid unparenthesized range and comparison operator expressions ([#&#8203;1642](https://github.com/dtolnay/syn/issues/1642), [#&#8203;1643](https://github.com/dtolnay/syn/issues/1643)) ### [`v2.0.61`](https://github.com/dtolnay/syn/releases/tag/2.0.61) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.60...2.0.61) - Check for legal binding name in the ident of Pat::Ident ([#&#8203;1627](https://github.com/dtolnay/syn/issues/1627)) - Resolve unexpected_cfgs warning ([#&#8203;1635](https://github.com/dtolnay/syn/issues/1635)) ### [`v2.0.60`](https://github.com/dtolnay/syn/releases/tag/2.0.60) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.59...2.0.60) - Improve how None-delimited groups are counted by `peek` ([#&#8203;1625](https://github.com/dtolnay/syn/issues/1625)) ### [`v2.0.59`](https://github.com/dtolnay/syn/releases/tag/2.0.59) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.58...2.0.59) - Parse `c"…"` and `cr"…"` C-string literal syntax as `Lit::CStr` ([#&#8203;1502](https://github.com/dtolnay/syn/issues/1502)) ### [`v2.0.58`](https://github.com/dtolnay/syn/releases/tag/2.0.58) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.57...2.0.58) - Support `$` in `custom_punctuation!` macro ([#&#8203;1611](https://github.com/dtolnay/syn/issues/1611)) ### [`v2.0.57`](https://github.com/dtolnay/syn/releases/tag/2.0.57) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.56...2.0.57) - Eliminate dependency on `quote` when built with default-features disabled and the "proc-macro" feature enabled ([#&#8203;1608](https://github.com/dtolnay/syn/issues/1608), thanks [@&#8203;BD103](https://github.com/BD103)) ### [`v2.0.56`](https://github.com/dtolnay/syn/releases/tag/2.0.56) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.55...2.0.56) - Apply RUSTC_WORKSPACE_WRAPPER when deciding whether to run nightly-only tests ([#&#8203;1605](https://github.com/dtolnay/syn/issues/1605)) ### [`v2.0.55`](https://github.com/dtolnay/syn/releases/tag/2.0.55) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.54...2.0.55) - Restore compatibility with rustc 1.56 through 1.59 ([#&#8203;1603](https://github.com/dtolnay/syn/issues/1603)) ### [`v2.0.54`](https://github.com/dtolnay/syn/releases/tag/2.0.54) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.53...2.0.54) - Fix dead code warning in generated code when using `custom_keyword!` with syn's "printing" feature disabled ([#&#8203;1602](https://github.com/dtolnay/syn/issues/1602)) ### [`v2.0.53`](https://github.com/dtolnay/syn/releases/tag/2.0.53) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.52...2.0.53) - Implement Copy, Clone, and ToTokens for syn::parse::Nothing ([#&#8203;1597](https://github.com/dtolnay/syn/issues/1597)) ### [`v2.0.52`](https://github.com/dtolnay/syn/releases/tag/2.0.52) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.51...2.0.52) - Add an expression parser that uses match-arm's boundary rules ([#&#8203;1593](https://github.com/dtolnay/syn/issues/1593)) ### [`v2.0.51`](https://github.com/dtolnay/syn/releases/tag/2.0.51) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.50...2.0.51) - Resolve non_local_definitions warnings in generated code under rustc 1.78-nightly ### [`v2.0.50`](https://github.com/dtolnay/syn/releases/tag/2.0.50) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.49...2.0.50) - Fix unused_imports warnings when compiled by rustc 1.78 ### [`v2.0.49`](https://github.com/dtolnay/syn/releases/tag/2.0.49) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.48...2.0.49) - Improve error location when parsing from an empty string literal using `LitStr::parse` ([#&#8203;1590](https://github.com/dtolnay/syn/issues/1590)) ### [`v2.0.48`](https://github.com/dtolnay/syn/releases/tag/2.0.48) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.47...2.0.48) - Improve error message on unexpected token after `else` ([#&#8203;1578](https://github.com/dtolnay/syn/issues/1578)) ### [`v2.0.47`](https://github.com/dtolnay/syn/releases/tag/2.0.47) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.46...2.0.47) - Improve error messages related to proc_macro::LexError ([#&#8203;1575](https://github.com/dtolnay/syn/issues/1575)) ### [`v2.0.46`](https://github.com/dtolnay/syn/releases/tag/2.0.46) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.45...2.0.46) - Update proc-macro2 to fix caching issue when using a rustc-wrapper such as sccache ### [`v2.0.45`](https://github.com/dtolnay/syn/releases/tag/2.0.45) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.44...2.0.45) - Parse unsupported expressions in enum discriminants of `DeriveInput` as `Expr::Verbatim` in non-"full" mode, instead of error ([#&#8203;1513](https://github.com/dtolnay/syn/issues/1513)) - Support parsing `PatType` with `parse_quote!` ([#&#8203;1573](https://github.com/dtolnay/syn/issues/1573)) ### [`v2.0.44`](https://github.com/dtolnay/syn/releases/tag/2.0.44) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.43...2.0.44) - Documentation improvements ### [`v2.0.43`](https://github.com/dtolnay/syn/releases/tag/2.0.43) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.42...2.0.43) - Insert trailing comma if not already present when printing a 1-tuple in pattern position ([#&#8203;1553](https://github.com/dtolnay/syn/issues/1553)) ### [`v2.0.42`](https://github.com/dtolnay/syn/releases/tag/2.0.42) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.41...2.0.42) - Documentation improvements ### [`v2.0.41`](https://github.com/dtolnay/syn/releases/tag/2.0.41) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.40...2.0.41) - Support parsing syn::Field in `parse_quote!` ([#&#8203;1548](https://github.com/dtolnay/syn/issues/1548)) ### [`v2.0.40`](https://github.com/dtolnay/syn/releases/tag/2.0.40) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.39...2.0.40) - Fix some edge cases of handling None-delimited groups in expression parser ([#&#8203;1539](https://github.com/dtolnay/syn/issues/1539), [#&#8203;1541](https://github.com/dtolnay/syn/issues/1541), [#&#8203;1542](https://github.com/dtolnay/syn/issues/1542), [#&#8203;1543](https://github.com/dtolnay/syn/issues/1543), [#&#8203;1544](https://github.com/dtolnay/syn/issues/1544), [#&#8203;1545](https://github.com/dtolnay/syn/issues/1545)) ### [`v2.0.39`](https://github.com/dtolnay/syn/releases/tag/2.0.39) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.38...2.0.39) - Fix parsing of return expression in match guards ([#&#8203;1528](https://github.com/dtolnay/syn/issues/1528)) - Improve error message on labeled loop as value expression for break ([#&#8203;1531](https://github.com/dtolnay/syn/issues/1531)) ### [`v2.0.38`](https://github.com/dtolnay/syn/releases/tag/2.0.38) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.37...2.0.38) - Fix *"method 'peek' has an incompatible type for trait"* error when defining `bool` as a custom keyword ([#&#8203;1518](https://github.com/dtolnay/syn/issues/1518), thanks [@&#8203;Vanille-N](https://github.com/Vanille-N)) ### [`v2.0.37`](https://github.com/dtolnay/syn/releases/tag/2.0.37) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.36...2.0.37) - Work around incorrect future compatibility warning in rustc 1.74.0-nightly ### [`v2.0.36`](https://github.com/dtolnay/syn/releases/tag/2.0.36) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.35...2.0.36) - Restore compatibility with `--generate-link-to-definition` documentation builds ([#&#8203;1514](https://github.com/dtolnay/syn/issues/1514)) ### [`v2.0.35`](https://github.com/dtolnay/syn/releases/tag/2.0.35) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.34...2.0.35) - Make rust-analyzer produce preferred brackets for invocations of `Token!` macro ([#&#8203;1510](https://github.com/dtolnay/syn/issues/1510), [#&#8203;1512](https://github.com/dtolnay/syn/issues/1512)) ### [`v2.0.34`](https://github.com/dtolnay/syn/releases/tag/2.0.34) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.33...2.0.34) - Documentation improvements ### [`v2.0.33`](https://github.com/dtolnay/syn/releases/tag/2.0.33) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.32...2.0.33) - Special handling for the `(/*ERROR*/)` placeholder that rustc uses for macros that fail to expand ### [`v2.0.32`](https://github.com/dtolnay/syn/releases/tag/2.0.32) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.31...2.0.32) - Add `Path::require_ident` accessor ([#&#8203;1496](https://github.com/dtolnay/syn/issues/1496), thanks [@&#8203;Fancyflame](https://github.com/Fancyflame)) ### [`v2.0.31`](https://github.com/dtolnay/syn/releases/tag/2.0.31) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.30...2.0.31) - Parse generics and where-clause on const items (https://github.com/rust-lang/rust/issues/113521) ### [`v2.0.30`](https://github.com/dtolnay/syn/releases/tag/2.0.30) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.29...2.0.30) - Parse unnamed struct/union type syntax (https://github.com/rust-lang/rust/issues/49804) ### [`v2.0.29`](https://github.com/dtolnay/syn/releases/tag/2.0.29) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.28...2.0.29) - Partially work around rust-analyzer bug (https://github.com/rust-lang/rust-analyzer/issues/9911) ### [`v2.0.28`](https://github.com/dtolnay/syn/releases/tag/2.0.28) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.27...2.0.28) - Fix inconsistency between full and non-full expression parse errors ([#&#8203;1491](https://github.com/dtolnay/syn/issues/1491)) ### [`v2.0.27`](https://github.com/dtolnay/syn/releases/tag/2.0.27) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.26...2.0.27) - Documentation improvements (thanks [@&#8203;GuillaumeGomez](https://github.com/GuillaumeGomez)) ### [`v2.0.26`](https://github.com/dtolnay/syn/releases/tag/2.0.26) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.25...2.0.26) - Implement `Spanned` for `QSelf` ([#&#8203;1465](https://github.com/dtolnay/syn/issues/1465)) ### [`v2.0.25`](https://github.com/dtolnay/syn/releases/tag/2.0.25) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.24...2.0.25) - Support single identifier as unbraced const generic argument ([#&#8203;1483](https://github.com/dtolnay/syn/issues/1483)) - Produce error message when LitStr::parse is used on a suffixed string literal ([#&#8203;1484](https://github.com/dtolnay/syn/issues/1484)) ### [`v2.0.24`](https://github.com/dtolnay/syn/releases/tag/2.0.24) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.23...2.0.24) - Fix duplication of braces around const generic argument in non-full mode ([#&#8203;1482](https://github.com/dtolnay/syn/issues/1482)) ### [`v2.0.23`](https://github.com/dtolnay/syn/releases/tag/2.0.23) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.22...2.0.23) - Preserve attributes on verbatim Item in statement position ([#&#8203;1476](https://github.com/dtolnay/syn/issues/1476)) - Support generic_const_exprs where-clauses such as `where [(); { T::COUNT }]:` in non-"full" mode ([#&#8203;1478](https://github.com/dtolnay/syn/issues/1478)) ### [`v2.0.22`](https://github.com/dtolnay/syn/releases/tag/2.0.22) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.21...2.0.22) - Parse `c"…"` c-string literals (tracking issue: https://github.com/rust-lang/rust/issues/105723) ### [`v2.0.21`](https://github.com/dtolnay/syn/releases/tag/2.0.21) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.20...2.0.21) - Fix value computed by `LitByteStr::value` in the case of a cooked byte string literal containing form feed or vertical tab characters following an escaped newline ([#&#8203;1474](https://github.com/dtolnay/syn/issues/1474)) ### [`v2.0.20`](https://github.com/dtolnay/syn/releases/tag/2.0.20) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.19...2.0.20) - Documentation improvements ### [`v2.0.19`](https://github.com/dtolnay/syn/releases/tag/2.0.19) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.18...2.0.19) - Improve rendering of compile errors within 2015-edition code calling a 2018+ edition proc macro ([#&#8203;1467](https://github.com/dtolnay/syn/issues/1467), thanks [@&#8203;danielhenrymantilla](https://github.com/danielhenrymantilla)) ### [`v2.0.18`](https://github.com/dtolnay/syn/releases/tag/2.0.18) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.17...2.0.18) - Permit empty attr in syn::meta::parser ([#&#8203;1460](https://github.com/dtolnay/syn/issues/1460)) ### [`v2.0.17`](https://github.com/dtolnay/syn/releases/tag/2.0.17) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.16...2.0.17) - Enable proc_macro support on wasm targets ([#&#8203;1459](https://github.com/dtolnay/syn/issues/1459)) ### [`v2.0.16`](https://github.com/dtolnay/syn/releases/tag/2.0.16) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.15...2.0.16) - Parse `builtin #` syntax as Expr::Verbatim (https://github.com/rust-lang/rust/issues/110680, [#&#8203;1454](https://github.com/dtolnay/syn/issues/1454)) ### [`v2.0.15`](https://github.com/dtolnay/syn/releases/tag/2.0.15) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.14...2.0.15) - Ensure `Type::Tuple` of length 1 prints as a tuple even if trailing comma is not provided in the Punctuated ([#&#8203;1444](https://github.com/dtolnay/syn/issues/1444), thanks [@&#8203;Fancyflame](https://github.com/Fancyflame)) ### [`v2.0.14`](https://github.com/dtolnay/syn/releases/tag/2.0.14) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.13...2.0.14) - Add Punctuated::pop_punct() ([#&#8203;1442](https://github.com/dtolnay/syn/issues/1442), thanks [@&#8203;programmerjake](https://github.com/programmerjake)) ### [`v2.0.13`](https://github.com/dtolnay/syn/releases/tag/2.0.13) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.12...2.0.13) - Improve spans of Expr::Field parsed from a float Literal ([#&#8203;1433](https://github.com/dtolnay/syn/issues/1433), [#&#8203;1436](https://github.com/dtolnay/syn/issues/1436)) ### [`v2.0.12`](https://github.com/dtolnay/syn/releases/tag/2.0.12) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.11...2.0.12) - Refer to `compile_error!` by absolute path in token stream produced by syn::Error::to_compile_error ([#&#8203;1431](https://github.com/dtolnay/syn/issues/1431), thanks [@&#8203;smoelius](https://github.com/smoelius)) ### [`v2.0.11`](https://github.com/dtolnay/syn/releases/tag/2.0.11) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.10...2.0.11) - Improve error message on empty parens inside parse_nested_meta ([#&#8203;1428](https://github.com/dtolnay/syn/issues/1428)) ### [`v2.0.10`](https://github.com/dtolnay/syn/releases/tag/2.0.10) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.9...2.0.10) - Fix visibility being parsed incorrectly on macro invocations inside of a trait ### [`v2.0.9`](https://github.com/dtolnay/syn/releases/tag/2.0.9) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.8...2.0.9) - Disallow `type` items in an extern block, trait, or module from being marked `default` - Disallow ImplItemFn from having an omitted function body, as in `impl T { fn f(&self); }` — omitted function bodies are allowed by TraitItemFn, but in `impl` blocks this syntax is now parsed as ImplItem::Verbatim rather than ImplItem::Fn ### [`v2.0.8`](https://github.com/dtolnay/syn/releases/tag/2.0.8) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.7...2.0.8) - Treat `try` keyword as 2015-edition identifier in definition of try macro ([#&#8203;1422](https://github.com/dtolnay/syn/issues/1422)) ### [`v2.0.7`](https://github.com/dtolnay/syn/releases/tag/2.0.7) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.6...2.0.7) - Fix parsing of `mut self` inside of Type::BareFn ### [`v2.0.6`](https://github.com/dtolnay/syn/releases/tag/2.0.6) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.5...2.0.6) - Improve error message on missing ';' between statements ([#&#8203;1419](https://github.com/dtolnay/syn/issues/1419)) - Keep non-brace macro invocations in trailing expr position as Expr::Macro ([#&#8203;1420](https://github.com/dtolnay/syn/issues/1420)) ### [`v2.0.5`](https://github.com/dtolnay/syn/releases/tag/2.0.5) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.4...2.0.5) - Expose `ExprMacro` data structure even when `features="full"` is not used ([#&#8203;1417](https://github.com/dtolnay/syn/issues/1417)) ### [`v2.0.4`](https://github.com/dtolnay/syn/releases/tag/2.0.4) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.3...2.0.4) - Improve error reporting when parsing identifiers and paths ([#&#8203;1415](https://github.com/dtolnay/syn/issues/1415), [#&#8203;1416](https://github.com/dtolnay/syn/issues/1416)) ### [`v2.0.3`](https://github.com/dtolnay/syn/releases/tag/2.0.3) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.2...2.0.3) - Expose `ExprGroup` data structure even when `features="full"` is not used ([#&#8203;1412](https://github.com/dtolnay/syn/issues/1412)) ### [`v2.0.2`](https://github.com/dtolnay/syn/releases/tag/2.0.2) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.1...2.0.2) - Documentation improvements ### [`v2.0.1`](https://github.com/dtolnay/syn/releases/tag/2.0.1) [Compare Source](https://github.com/dtolnay/syn/compare/2.0.0...2.0.1) - Add methods on syn::Meta for reporting error on an incorrect kind of attribute ([#&#8203;1409](https://github.com/dtolnay/syn/issues/1409)) ### [`v2.0.0`](https://github.com/dtolnay/syn/releases/tag/2.0.0) [Compare Source](https://github.com/dtolnay/syn/compare/1.0.109...2.0.0) This release contains a batch of syntax tree improvements to incorporate ongoing Rust language development from the past 3.5 years since syn 1. It never seems like an ideal time to finalize a syntax tree design, considering the frankly alarming number of syntax-disrupting language features currently in flight: keyword generics, restrictions, capabilities and contexts, conditional constness, new varieties of literals, dyn revamp such as explicitly dyn-safe traits and dyn-star, expression syntax in various phases of being added or being torn out (const blocks, try blocks, raw references), auto traits and negative impls, generalizations to higher rank trait bounds, async closures and static async trait methods, postfix keywords, pattern types, return type notation, unsafe attributes, … The plan continues to be the same as laid out originally in the 1.0.0 release announcement: > Be aware that the underlying Rust language will continue to evolve. Syn is able to accommodate most kinds of Rust grammar changes via the nonexhaustive enums and `Verbatim` variants in the syntax tree, but we will plan to put out new major versions on a 12 to 24 month cadence to incorporate ongoing language changes as needed. If anything, the takeaway from the 3.5 year longevity of syn 1 is that this period was tamer from a language development perspective than anticipated, but that is unlikely to last and I think around 24 months is still the correct cadence to expect between releases going forward. <br> <p align="center"><a href="https://docs.rs/syn/2/syn/">[API documentation for 2.0]</a></p> ### Breaking changes - Minimum required Rust version is raised from rustc 1.31 to 1.56. ##### Expressions - Support for `box expr` syntax has been deleted, as it has been deleted recently from rustc. - Support for type ascription syntax `expr: Type` in expression position has been deleted. - Support for unstable `&raw const expr` raw-pointer reference syntax has been deleted. - The representation of generic arguments has been unified between method calls and non-method paths into a single `GenericArgument` type, which supersedes the previous `GenericMethodArgument` and `MethodTurbofish`. - Generic arguments now distinguish between associated types (`AssocType`) and associated constant values (`AssocConst`). Previously these would be parsed ambiguously as `Binding`. - The binary assignment operators in `BinOp` have been renamed to align with the naming used by the standard library's `core::ops` module's traits. For example `BinOp::AddEq` is now called `BinOp::AddAssign`. - `Expr::Struct` struct construction expressions now support structs which are a variant of an enum associated type of a trait, as in `<Type as Trait>::Assoc::Variant { ... }`, which has recently been added to Rust. - `Expr::Range` now follows the `start` and `end` naming used by the standard library's `RangeBounds` trait, rather than `from`/`to` or `lo`/`hi`. - `Expr::AssignOp` has been merged into `Expr::Binary`, which now represents both non-assignment and assignment binary operators. - Stricter parsing of ranges. None of the following are valid expressions, but were previously accepted by syn: `..=`, `lo..=`, `...`, `...hi`, `lo...`, `lo...hi`. - `Expr::Closure` now includes a representation for `for<...>` lifetimes. ##### Statements - Variants `Stmt::Expr` (tail-position expression without trailing semicolon) and `Stmt::Semi` (non-tail expression with trailing semicolon) have been combined into `Stmt::Expr` with the optional semicolon represented by `Option<Token![;]>`. - The syntax tree for `Stmt::Local` has been extended to handle `let`/`else` syntax. - Macros in statement position are now uniformly parsed as `Stmt::Macro`. Previously these would be disambiguated to `Stmt::Item`, although it was ambiguous whether a macro in statement position would expand to an item (like `thread_local! { ... }`) vs an expression (like `println! { ... }`). ##### Patterns - Pattern parsing for all the different syntactic positions in which patterns are allowed has been split into `Pat::parse_single` (for function- and closure-argument position, where top-level `|` is not allowed), `Pat::parse_multi` (where `|` is allowed) and `Pat::parse_multi_with_leading_vert` (for the pattern of match arms, which allow an optional leading `|`). Previously only a single `parse` behavior was supported and behaved like the new `parse_single`. - The `Pat` syntax tree now shares more common data structures with the `Expr` syntax tree where possible, such as for literals, paths, macros, and ranges in pattern position. - Parsing of struct field patterns does a better job rejecting bogus syntax such as `Struct { 0 asdf }` and `Struct { ref mut 0: asdf }`, which were previously incorrectly accepted. - `Pat::Range` now supports one-sided ranges by representing the start and end bound of the range by `Option<Expr>`. - `Pat::Struct` keeps track of attributes on the optional `..` "rest" part of the pattern, as in `let Struct { x, #[cfg(any())] .. } = _;`. - Parsing unary negation now enforces that only literal patterns can be unarily negated. For example `-self::CONST` and `-const { 0i32 }` are not valid syntax in pattern position. - `Pat::TupleStruct` no longer wraps a value of type `PatTuple` but represents that information in its fields directly. - A single parenthesized pattern without trailing comma inside the parentheses is no longer considered a `Pat::Tuple`, it will be parsed as `Pat::Paren`. - One-sided range patterns are no longer allowed inside of slice patterns. `[lo..]` and `[..=hi]` are not considered valid pattern syntax by Rust. ##### Items - Typed `self` in a method signature, such as `self: Pin<&mut Self>`, will now be parsed as `FnArg::Receiver`. This means `self`, whether with or without an explicit type, is always treated as a `Receiver`. Previously only the `&self` and `&mut self` shorthand receivers were parsed as `Receiver`. - `TraitItem::Method` and `ImplItem::Method` have been renamed to `TraitItem::Fn` and `ImplItem::Fn`, as they do not necessarily represent methods if the function signature contains no `self`. - `Item::Macro2` has been deleted as "macros 2.0" syntax is no longer considered on track for stabilization. - Various item kinds now hold `Generics` which didn't used to have them. - The variadic argument of an extern function signature can now be given an optional parameter name. - `WherePredicate::Eq` is no longer supported. - `Visibility::Crate` is no longer supported. This syntax has been removed from rustc. - Public visibility is now represented by a single `Token![pub]` token rather than the old `VisPublic` struct. - `LifetimeDef` is now called `LifetimeParam`. This name makes more sense in the context of the `GenericParam` enum (which also includes `TypeParam` and `ConstParam`), and is the name that the Rust Reference uses. - Modules and extern blocks (`Item::Mod` and `Item::ForeignMod`) can now be marked `unsafe`. ##### Attributes - The syntax tree for `Attribute` has been redesigned. The new API better accommodates attributes which mix structured and unstructured content at different levels of nesting. - `AttributeArgs` has been removed. Use `Punctuated<Meta, Token![,]>`. - For parsing attribute contents, `parse_meta()` is superseded by a new parsing library called `syn::meta`, and the `parse_nested_meta` method on `Attribute`. ##### Tokens - In string literals, the handling of non-ASCII whitespace after trailing `\` now matches what is implemented by rustc. Space, horizontal tab, line feed, and carriage return are the only 4 whitespace characters which are supposed to be stripped from the beginning of the next line. - The delimiter tokens `syn::token::Paren`, `Bracket`, and `Brace` now store 2 spans (the open and close punctuation separately) rather than just 1. Use `.join()` to obtain a single `Span` spanning the whole group. - Keyword construction now requires a single span; an array of 1 span is no longer accepted. Use `Token![trait](span)` instead of `Token![trait]([span])`. - Some token types have been renamed to conform with terminology used by the [Rust Reference](https://doc.rust-lang.org/1.68.0/reference/tokens.html#punctuation). These are `Add`->`Plus`, `Bang`->`Not`, `Colon2`->`PathSep`, `Div`->`Slash`, `Dot2`->`DotDot`, `Dot3`->`DotDotDot`, `Rem`->`Percent`, and `Sub`->`Minus`. ##### More - Several enums have been made `#[non_exhaustive]` in anticipation of upcoming language changes. This includes `WherePredicate`, `Lit`, and `GenericArgument`. - The `impl Extend<Pair<T, P>> for Punctuated<T, P>` now requires `P: Default` and will push a default punctuation between the pre-existing elements and the new ones, if there is not already a trailing punctuation. Previously it would panic in this situation. - `ParseStream::parse_terminated` now takes a peek-style punctuation argument instead of turbofish. Replace `input.parse_terminated::<_, Token![,]>(Thing::parse)` with `input.parse_terminated(Thing::parse, Token![,])`. </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4zNy4wIiwidXBkYXRlZEluVmVyIjoiMzcuNDI0LjMiLCJ0YXJnZXRCcmFuY2giOiJtYWluIn0=-->
kjuulh added 1 commit 2023-08-08 14:13:54 +02:00
kjuulh scheduled this pull request to auto merge when all checks succeed 2023-08-08 14:13:54 +02:00
Author
Owner

/contractor refresh

/contractor refresh
Author
Owner

Contractor triggered renovate refresh on this repository

This comment will be updated with status

done



This comment was generated by Contractor

<h3>Contractor triggered renovate refresh on this repository</h3> This comment will be updated with status <!-- Status update start --><br><hr><p>done</p><hr><br><!-- Status update end --> <small>This comment was generated by <a href='https://git.front.kjuulh.io/kjuulh/contractor'>Contractor</a></small>
kjuulh force-pushed renovate/all from 04253239d0 to f4fa1aceda 2023-08-23 17:59:00 +02:00 Compare
kjuulh force-pushed renovate/all from f4fa1aceda to 8998096cf0 2023-09-04 14:24:13 +02:00 Compare
kjuulh force-pushed renovate/all from 8998096cf0 to 33b0d200fc 2023-10-23 10:08:12 +02:00 Compare
kjuulh force-pushed renovate/all from 33b0d200fc to db8de1842f 2023-10-23 21:02:37 +02:00 Compare
kjuulh force-pushed renovate/all from db8de1842f to 50d55fd0c5 2023-10-25 03:28:20 +02:00 Compare
kjuulh force-pushed renovate/all from 50d55fd0c5 to 9928e0f1b0 2023-11-14 02:59:27 +01:00 Compare
kjuulh force-pushed renovate/all from 9928e0f1b0 to 1662f30187 2023-12-05 19:24:45 +01:00 Compare
kjuulh force-pushed renovate/all from 1662f30187 to 0b314cf5cf 2023-12-29 22:21:05 +01:00 Compare
kjuulh force-pushed renovate/all from 0b314cf5cf to 3b7771888e 2024-01-14 01:27:18 +01:00 Compare
kjuulh force-pushed renovate/all from 3b7771888e to bd3db50b88 2024-01-17 17:25:22 +01:00 Compare
kjuulh force-pushed renovate/all from bd3db50b88 to e0dcd531fb 2024-01-18 21:56:46 +01:00 Compare
kjuulh force-pushed renovate/all from e0dcd531fb to 9ff8294921 2024-01-31 18:37:40 +01:00 Compare
kjuulh force-pushed renovate/all from 9ff8294921 to 0feec859fb 2024-02-11 07:18:30 +01:00 Compare
kjuulh force-pushed renovate/all from 0feec859fb to 9ea6f1fcf5 2024-02-20 03:26:14 +01:00 Compare
kjuulh force-pushed renovate/all from 9ea6f1fcf5 to 722b7c498d 2024-02-27 20:53:51 +01:00 Compare
kjuulh force-pushed renovate/all from 722b7c498d to 969c6dbee0 2024-03-03 19:34:43 +01:00 Compare
kjuulh force-pushed renovate/all from 969c6dbee0 to 9504f98086 2024-03-06 18:47:53 +01:00 Compare
kjuulh force-pushed renovate/all from 9504f98086 to 8332a9dc5b 2024-03-27 03:09:59 +01:00 Compare
kjuulh force-pushed renovate/all from 8332a9dc5b to 9dc92a438b 2024-04-16 17:30:33 +02:00 Compare
kjuulh force-pushed renovate/all from 9dc92a438b to 973a603367 2024-04-30 15:55:55 +02:00 Compare
kjuulh force-pushed renovate/all from 973a603367 to ebaad8f5d3 2024-05-17 22:30:01 +02:00 Compare
kjuulh force-pushed renovate/all from ebaad8f5d3 to 3497dca8cc 2024-10-02 03:07:12 +02:00 Compare
This pull request can be merged automatically.
You are not authorized to merge this pull request.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin renovate/all:renovate/all
git checkout renovate/all
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: kjuulh/rhai#2
No description provided.