Repository: rust-lang/rust-analyzer
Pull request #17553 (2024-07-07 06:35:41)

Move remaining codegen things to `xtask codegen`


Patch:
diff --git a/Cargo.lock b/Cargo.lock
index f30f69eb6e..0c105eb996 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -221,11 +221,6 @@ name = "countme"
 version = "3.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7704b5fdd17b18ae31c4c1da5a2e0305a2bf17b5249300a9ee9ed7b72114c636"
-dependencies = [
- "dashmap",
- "once_cell",
- "rustc-hash",
-]
 
 [[package]]
 name = "cov-mark"
@@ -548,7 +543,6 @@ dependencies = [
  "limit",
  "mbe",
  "once_cell",
- "profile",
  "ra-ap-rustc_abi",
  "ra-ap-rustc_parse_format",
  "rustc-hash",
@@ -1250,7 +1244,6 @@ dependencies = [
  "expect-test",
  "limit",
  "ra-ap-rustc_lexer",
- "sourcegen",
  "stdx",
  "tracing",
 ]
@@ -1400,13 +1393,9 @@ name = "profile"
 version = "0.0.0"
 dependencies = [
  "cfg-if",
- "countme",
- "la-arena 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc",
- "once_cell",
  "perf-event",
  "tikv-jemalloc-ctl",
- "tracing",
  "windows-sys 0.52.0",
 ]
 
@@ -1681,7 +1670,6 @@ dependencies = [
  "semver",
  "serde",
  "serde_json",
- "sourcegen",
  "stdx",
  "syntax",
  "test-fixture",
@@ -1880,13 +1868,6 @@ version = "1.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b"
 
-[[package]]
-name = "sourcegen"
-version = "0.0.0"
-dependencies = [
- "xshell",
-]
-
 [[package]]
 name = "span"
 version = "0.0.0"
diff --git a/Cargo.toml b/Cargo.toml
index eea73ac380..bea77b9c85 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -90,7 +90,6 @@ ra-ap-rustc_abi = { version = "0.53.0", default-features = false }
 ra-ap-rustc_pattern_analysis = { version = "0.53.0", default-features = false }
 
 # local crates that aren't published to crates.io. These should not have versions.
-sourcegen = { path = "./crates/sourcegen" }
 test-fixture = { path = "./crates/test-fixture" }
 test-utils = { path = "./crates/test-utils" }
 
diff --git a/crates/hir-def/Cargo.toml b/crates/hir-def/Cargo.toml
index 41c59ea0d9..660799d610 100644
--- a/crates/hir-def/Cargo.toml
+++ b/crates/hir-def/Cargo.toml
@@ -37,7 +37,6 @@ stdx.workspace = true
 intern.workspace = true
 base-db.workspace = true
 syntax.workspace = true
-profile.workspace = true
 hir-expand.workspace = true
 mbe.workspace = true
 cfg.workspace = true
diff --git a/crates/hir-def/src/item_scope.rs b/crates/hir-def/src/item_scope.rs
index 9c7dfa05b0..d86c0667a0 100644
--- a/crates/hir-def/src/item_scope.rs
+++ b/crates/hir-def/src/item_scope.rs
@@ -8,7 +8,6 @@ use hir_expand::{attrs::AttrId, db::ExpandDatabase, name::Name, AstId, MacroCall
 use itertools::Itertools;
 use la_arena::Idx;
 use once_cell::sync::Lazy;
-use profile::Count;
 use rustc_hash::{FxHashMap, FxHashSet};
 use smallvec::{smallvec, SmallVec};
 use stdx::format_to;
@@ -65,8 +64,6 @@ pub struct ImportId {
 
 #[derive(Debug, Default, PartialEq, Eq)]
 pub struct ItemScope {
-    _c: Count<Self>,
-
     /// Defs visible in this scope. This includes `declarations`, but also
     /// imports. The imports belong to this module and can be resolved by using them on
     /// the `use_imports_*` fields.
@@ -722,7 +719,6 @@ impl ItemScope {
     pub(crate) fn shrink_to_fit(&mut self) {
         // Exhaustive match to require handling new fields.
         let Self {
-            _c: _,
             types,
             values,
             macros,
diff --git a/crates/ide-db/src/generated/lints.rs b/crates/ide-db/src/generated/lints.rs
index c92d4e78ff..2e0235768c 100644
--- a/crates/ide-db/src/generated/lints.rs
+++ b/crates/ide-db/src/generated/lints.rs
@@ -1,4 +1,4 @@
-//! Generated by `sourcegen_lints`, do not edit by hand.
+//! Generated by `cargo codegen lint-definitions`, do not edit by hand.
 
 #[derive(Clone)]
 pub struct Lint {
@@ -50,6 +50,10 @@ pub const DEFAULT_LINTS: &[Lint] = &[
         description: r##"detects pattern bindings with the same name as one of the matched variants"##,
     },
     Lint { label: "box_pointers", description: r##"use of owned (Box type) heap memory"## },
+    Lint {
+        label: "boxed_slice_into_iter",
+        description: r##"detects calling `into_iter` on boxed slices in Rust 2015, 2018, and 2021"##,
+    },
     Lint {
         label: "break_with_label_and_loop",
         description: r##"`break` expression with label and unlabeled loop as value expression"##,
@@ -78,6 +82,10 @@ pub const DEFAULT_LINTS: &[Lint] = &[
         label: "confusable_idents",
         description: r##"detects visually confusable pairs between identifiers"##,
     },
+    Lint {
+        label: "const_eval_mutable_ptr_in_final_value",
+        description: r##"detects a mutable pointer that has leaked into final value of a const expression"##,
+    },
     Lint {
         label: "const_evaluatable_unchecked",
         description: r##"detects a generic constant is used in a type without a emitting a warning"##,
@@ -87,6 +95,10 @@ pub const DEFAULT_LINTS: &[Lint] = &[
         description: r##"detects attempts to mutate a `const` item"##,
     },
     Lint { label: "dead_code", description: r##"detect unused, unexported items"## },
+    Lint {
+        label: "dependency_on_unit_never_type_fallback",
+        description: r##"never type fallback affecting unsafe function calls"##,
+    },
     Lint { label: "deprecated", description: r##"detects use of deprecated items"## },
     Lint {
         label: "deprecated_cfg_attr_crate_type_name",
@@ -96,6 +108,10 @@ pub const DEFAULT_LINTS: &[Lint] = &[
         label: "deprecated_in_future",
         description: r##"detects use of items that will be deprecated in a future version"##,
     },
+    Lint {
+        label: "deprecated_safe",
+        description: r##"detects unsafe functions being used as safe functions"##,
+    },
     Lint {
         label: "deprecated_where_clause_location",
         description: r##"deprecated where clause location"##,
@@ -172,7 +188,7 @@ pub const DEFAULT_LINTS: &[Lint] = &[
     },
     Lint {
         label: "future_incompatible",
-        description: r##"lint group for: deref-into-dyn-supertrait, ambiguous-associated-items, ambiguous-glob-imports, byte-slice-in-packed-struct-with-derive, cenum-impl-drop-cast, coherence-leak-check, conflicting-repr-hints, const-evaluatable-unchecked, deprecated-cfg-attr-crate-type-name, elided-lifetimes-in-associated-constant, forbidden-lint-groups, ill-formed-attribute-input, indirect-structural-match, invalid-doc-attributes, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, missing-fragment-specifier, order-dependent-trait-objects, patterns-in-fns-without-body, pointer-structural-match, proc-macro-back-compat, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, repr-transparent-external-private-fields, semicolon-in-expressions-from-macros, soft-unstable, uninhabited-static, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-calling-conventions, where-clauses-object-safety, writes-through-immutable-pointer"##,
+        description: r##"lint group for: deref-into-dyn-supertrait, ambiguous-associated-items, ambiguous-glob-imports, byte-slice-in-packed-struct-with-derive, cenum-impl-drop-cast, coherence-leak-check, conflicting-repr-hints, const-eval-mutable-ptr-in-final-value, const-evaluatable-unchecked, dependency-on-unit-never-type-fallback, deprecated-cfg-attr-crate-type-name, elided-lifetimes-in-associated-constant, forbidden-lint-groups, ill-formed-attribute-input, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, missing-fragment-specifier, never-type-fallback-flowing-into-unsafe, order-dependent-trait-objects, patterns-in-fns-without-body, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, repr-transparent-external-private-fields, self-constructor-from-outer-item, semicolon-in-expressions-from-macros, soft-unstable, uncovered-param-in-projection, uninhabited-static, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-calling-conventions, wasm-c-abi, writes-through-immutable-pointer"##,
     },
     Lint {
         label: "fuzzy_provenance_casts",
@@ -186,6 +202,14 @@ pub const DEFAULT_LINTS: &[Lint] = &[
         label: "ill_formed_attribute_input",
         description: r##"ill-formed attribute inputs that were previously accepted and used in practice"##,
     },
+    Lint {
+        label: "impl_trait_overcaptures",
+        description: r##"`impl Trait` will capture more lifetimes than possibly intended in edition 2024"##,
+    },
+    Lint {
+        label: "impl_trait_redundant_captures",
+        description: r##"redundant precise-capturing `use<...>` syntax on an `impl Trait`"##,
+    },
     Lint {
         label: "improper_ctypes",
         description: r##"proper use of libc types in foreign modules"##,
@@ -199,10 +223,6 @@ pub const DEFAULT_LINTS: &[Lint] = &[
         description: r##"incomplete features that may function improperly in some or all cases"##,
     },
     Lint { label: "incomplete_include", description: r##"trailing content in included file"## },
-    Lint {
-        label: "indirect_structural_match",
-        description: r##"constant used in pattern contains value of non-structural-match type in a field or a variant"##,
-    },
     Lint {
         label: "ineffective_unstable_trait_impl",
         description: r##"detects `#[unstable]` on stable trait implementations for stable types"##,
@@ -257,6 +277,14 @@ pub const DEFAULT_LINTS: &[Lint] = &[
     },
     Lint {
         label: "keyword_idents",
+        description: r##"lint group for: keyword-idents-2018, keyword-idents-2024"##,
+    },
+    Lint {
+        label: "keyword_idents_2018",
+        description: r##"detects edition keywords being used as an identifier"##,
+    },
+    Lint {
+        label: "keyword_idents_2024",
         description: r##"detects edition keywords being used as an identifier"##,
     },
     Lint { label: "large_assignments", description: r##"detects large moves or copies"## },
@@ -321,6 +349,10 @@ pub const DEFAULT_LINTS: &[Lint] = &[
         label: "missing_fragment_specifier",
         description: r##"detects missing fragment specifiers in unused `macro_rules!` patterns"##,
     },
+    Lint {
+        label: "missing_unsafe_on_extern",
+        description: r##"detects missing unsafe keyword on extern declarations"##,
+    },
     Lint {
         label: "mixed_script_confusables",
         description: r##"detects Unicode scripts whose mixed script confusables codepoints are solely used"##,
@@ -342,6 +374,10 @@ pub const DEFAULT_LINTS: &[Lint] = &[
         description: r##"named arguments in format used positionally"##,
     },
     Lint { label: "named_asm_labels", description: r##"named labels in inline assembly"## },
+    Lint {
+        label: "never_type_fallback_flowing_into_unsafe",
+        description: r##"never type fallback affecting unsafe function calls"##,
+    },
     Lint {
         label: "no_mangle_const_items",
         description: r##"const items will not have their symbols exported"##,
@@ -352,6 +388,10 @@ pub const DEFAULT_LINTS: &[Lint] = &[
         label: "non_camel_case_types",
         description: r##"types, variants, traits and type parameters should have camel case names"##,
     },
+    Lint {
+        label: "non_contiguous_range_endpoints",
+        description: r##"detects off-by-one errors with exclusive range patterns"##,
+    },
     Lint {
         label: "non_exhaustive_omitted_patterns",
         description: r##"detect when patterns of types marked `non_exhaustive` are missed"##,
@@ -399,10 +439,6 @@ pub const DEFAULT_LINTS: &[Lint] = &[
         label: "patterns_in_fns_without_body",
         description: r##"patterns in functions without body were erroneously allowed"##,
     },
-    Lint {
-        label: "pointer_structural_match",
-        description: r##"pointers are not structural-match"##,
-    },
     Lint {
         label: "private_bounds",
         description: r##"private type in secondary interface of an item"##,
@@ -411,10 +447,6 @@ pub const DEFAULT_LINTS: &[Lint] = &[
         label: "private_interfaces",
         description: r##"private type in primary interface of an item"##,
     },
-    Lint {
-        label: "proc_macro_back_compat",
-        description: r##"detects usage of old versions of certain proc-macro crates"##,
-    },
     Lint {
         label: "proc_macro_derive_resolution_fallback",
         description: r##"detects proc macro derives using inaccessible names from parent modules"##,
@@ -423,12 +455,24 @@ pub const DEFAULT_LINTS: &[Lint] = &[
         label: "pub_use_of_private_extern_crate",
         description: r##"detect public re-exports of private extern crates"##,
     },
+    Lint {
+        label: "redundant_lifetimes",
+        description: r##"detects lifetime parameters that are redundant because they are equal to some other named lifetime"##,
+    },
     Lint {
         label: "redundant_semicolons",
         description: r##"detects unnecessary trailing semicolons"##,
     },
     Lint {
         label: "refining_impl_trait",
+        description: r##"lint group for: refining-impl-trait-reachable, refining-impl-trait-internal"##,
+    },
+    Lint {
+        label: "refining_impl_trait_internal",
+        description: r##"impl trait in impl method signature does not match trait method signature"##,
+    },
+    Lint {
+        label: "refining_impl_trait_reachable",
         description: r##"impl trait in impl method signature does not match trait method signature"##,
     },
     Lint {
@@ -441,7 +485,7 @@ pub const DEFAULT_LINTS: &[Lint] = &[
     },
     Lint {
         label: "rust_2018_compatibility",
-        description: r##"lint group for: keyword-idents, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer"##,
+        description: r##"lint group for: keyword-idents-2018, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer"##,
     },
     Lint {
         label: "rust_2018_idioms",
@@ -469,7 +513,15 @@ pub const DEFAULT_LINTS: &[Lint] = &[
     },
     Lint {
         label: "rust_2024_compatibility",
-        description: r##"lint group for: static-mut-refs, unsafe-op-in-unsafe-fn"##,
+        description: r##"lint group for: keyword-idents-2024, deprecated-safe, missing-unsafe-on-extern, static-mut-refs, unsafe-attr-outside-unsafe, unsafe-op-in-unsafe-fn, boxed-slice-into-iter"##,
+    },
+    Lint {
+        label: "rust_2024_incompatible_pat",
+        description: r##"detects patterns whose meaning will change in Rust 2024"##,
+    },
+    Lint {
+        label: "self_constructor_from_outer_item",
+        description: r##"detect unsupported use of `Self` from outer item"##,
     },
     Lint {
         label: "semicolon_in_expressions_from_macros",
@@ -547,6 +599,10 @@ pub const DEFAULT_LINTS: &[Lint] = &[
         label: "unconditional_recursion",
         description: r##"functions that cannot return without calling themselves"##,
     },
+    Lint {
+        label: "uncovered_param_in_projection",
+        description: r##"impl contains type parameters that are not covered"##,
+    },
     Lint {
         label: "undefined_naked_function_abi",
         description: r##"undefined naked function ABI"##,
@@ -595,6 +651,10 @@ pub const DEFAULT_LINTS: &[Lint] = &[
         label: "unreachable_pub",
         description: r##"`pub` items not reachable from crate root"##,
     },
+    Lint {
+        label: "unsafe_attr_outside_unsafe",
+        description: r##"detects unsafe attributes outside of unsafe"##,
+    },
     Lint {
         label: "unsafe_code",
         description: r##"usage of `unsafe` code and other potentially unsound constructs"##,
@@ -715,8 +775,8 @@ pub const DEFAULT_LINTS: &[Lint] = &[
         description: r##"lint group for: all lints that are set to issue warnings"##,
     },
     Lint {
-        label: "where_clauses_object_safety",
-        description: r##"checks the object safety of where clauses"##,
+        label: "wasm_c_abi",
+        description: r##"detects dependencies that are incompatible with the Wasm C ABI"##,
     },
     Lint {
         label: "while_true",
@@ -732,7 +792,7 @@ pub const DEFAULT_LINT_GROUPS: &[LintGroup] = &[
     LintGroup {
         lint: Lint {
             label: "future_incompatible",
-            description: r##"lint group for: deref-into-dyn-supertrait, ambiguous-associated-items, ambiguous-glob-imports, byte-slice-in-packed-struct-with-derive, cenum-impl-drop-cast, coherence-leak-check, conflicting-repr-hints, const-evaluatable-unchecked, deprecated-cfg-attr-crate-type-name, elided-lifetimes-in-associated-constant, forbidden-lint-groups, ill-formed-attribute-input, indirect-structural-match, invalid-doc-attributes, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, missing-fragment-specifier, order-dependent-trait-objects, patterns-in-fns-without-body, pointer-structural-match, proc-macro-back-compat, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, repr-transparent-external-private-fields, semicolon-in-expressions-from-macros, soft-unstable, uninhabited-static, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-calling-conventions, where-clauses-object-safety, writes-through-immutable-pointer"##,
+            description: r##"lint group for: deref-into-dyn-supertrait, ambiguous-associated-items, ambiguous-glob-imports, byte-slice-in-packed-struct-with-derive, cenum-impl-drop-cast, coherence-leak-check, conflicting-repr-hints, const-eval-mutable-ptr-in-final-value, const-evaluatable-unchecked, dependency-on-unit-never-type-fallback, deprecated-cfg-attr-crate-type-name, elided-lifetimes-in-associated-constant, forbidden-lint-groups, ill-formed-attribute-input, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, missing-fragment-specifier, never-type-fallback-flowing-into-unsafe, order-dependent-trait-objects, patterns-in-fns-without-body, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, repr-transparent-external-private-fields, self-constructor-from-outer-item, semicolon-in-expressions-from-macros, soft-unstable, uncovered-param-in-projection, uninhabited-static, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-calling-conventions, wasm-c-abi, writes-through-immutable-pointer"##,
         },
         children: &[
             "deref_into_dyn_supertrait",
@@ -742,35 +802,43 @@ pub const DEFAULT_LINT_GROUPS: &[LintGroup] = &[
             "cenum_impl_drop_cast",
             "coherence_leak_check",
             "conflicting_repr_hints",
+            "const_eval_mutable_ptr_in_final_value",
             "const_evaluatable_unchecked",
+            "dependency_on_unit_never_type_fallback",
             "deprecated_cfg_attr_crate_type_name",
             "elided_lifetimes_in_associated_constant",
             "forbidden_lint_groups",
             "ill_formed_attribute_input",
-            "indirect_structural_match",
-            "invalid_doc_attributes",
             "invalid_type_param_default",
             "late_bound_lifetime_arguments",
             "legacy_derive_helpers",
             "macro_expanded_macro_exports_accessed_by_absolute_paths",
             "missing_fragment_specifier",
+            "never_type_fallback_flowing_into_unsafe",
             "order_dependent_trait_objects",
             "patterns_in_fns_without_body",
-            "pointer_structural_match",
-            "proc_macro_back_compat",
             "proc_macro_derive_resolution_fallback",
             "pub_use_of_private_extern_crate",
             "repr_transparent_external_private_fields",
+            "self_constructor_from_outer_item",
             "semicolon_in_expressions_from_macros",
             "soft_unstable",
+            "uncovered_param_in_projection",
             "uninhabited_static",
             "unstable_name_collisions",
             "unstable_syntax_pre_expansion",
             "unsupported_calling_conventions",
-            "where_clauses_object_safety",
+            "wasm_c_abi",
             "writes_through_immutable_pointer",
         ],
     },
+    LintGroup {
+        lint: Lint {
+            label: "keyword_idents",
+            description: r##"lint group for: keyword-idents-2018, keyword-idents-2024"##,
+        },
+        children: &["keyword_idents_2018", "keyword_idents_2024"],
+    },
     LintGroup {
         lint: Lint {
             label: "let_underscore",
@@ -785,13 +853,20 @@ pub const DEFAULT_LINT_GROUPS: &[LintGroup] = &[
         },
         children: &["non_camel_case_types", "non_snake_case", "non_upper_case_globals"],
     },
+    LintGroup {
+        lint: Lint {
+            label: "refining_impl_trait",
+            description: r##"lint group for: refining-impl-trait-reachable, refining-impl-trait-internal"##,
+        },
+        children: &["refining_impl_trait_reachable", "refining_impl_trait_internal"],
+    },
     LintGroup {
         lint: Lint {
             label: "rust_2018_compatibility",
-            description: r##"lint group for: keyword-idents, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer"##,
+            description: r##"lint group for: keyword-idents-2018, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer"##,
         },
         children: &[
-            "keyword_idents",
+            "keyword_idents_2018",
             "anonymous_parameters",
             "absolute_paths_not_starting_with_crate",
             "tyvar_behind_raw_pointer",
@@ -829,9 +904,17 @@ pub const DEFAULT_LINT_GROUPS: &[LintGroup] = &[
     LintGroup {
         lint: Lint {
             label: "rust_2024_compatibility",
-            description: r##"lint group for: static-mut-refs, unsafe-op-in-unsafe-fn"##,
+            description: r##"lint group for: keyword-idents-2024, deprecated-safe, missing-unsafe-on-extern, static-mut-refs, unsafe-attr-outside-unsafe, unsafe-op-in-unsafe-fn, boxed-slice-into-iter"##,
         },
-        children: &["static_mut_refs", "unsafe_op_in_unsafe_fn"],
+        children: &[
+            "keyword_idents_2024",
+            "deprecated_safe",
+            "missing_unsafe_on_extern",
+            "static_mut_refs",
+            "unsafe_attr_outside_unsafe",
+            "unsafe_op_in_unsafe_fn",
+            "boxed_slice_into_iter",
+        ],
     },
     LintGroup {
         lint: Lint {
@@ -1188,9 +1271,23 @@ This feature has no tracking issue, and is therefore likely internal to the comp
         label: "abi_vectorcall",
         description: r##"# `abi_vectorcall`
 
-This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
+The tracking issue for this feature is: [#124485]
+
+[#124485]: https://github.com/rust-lang/rust/issues/124485
 
 ------------------------
+
+Adds support for the Windows `"vectorcall"` ABI, the equivalent of `__vectorcall` in MSVC.
+
+```rust,ignore (only-windows-or-x86-or-x86-64)
+extern "vectorcall" {
+    fn add_f64s(x: f64, y: f64) -> f64;
+}
+
+fn main() {
+    println!("{}", add_f64s(2.0, 4.0));
+}
+```
 "##,
     },
     Lint {
@@ -1205,12 +1302,12 @@ The tracking issue for this feature is: [#40180]
 "##,
     },
     Lint {
-        label: "absolute_path",
-        description: r##"# `absolute_path`
+        label: "acceptfilter",
+        description: r##"# `acceptfilter`
 
-The tracking issue for this feature is: [#92750]
+The tracking issue for this feature is: [#121891]
 
-[#92750]: https://github.com/rust-lang/rust/issues/92750
+[#121891]: https://github.com/rust-lang/rust/issues/121891
 
 ------------------------
 "##,
@@ -1235,6 +1332,34 @@ The tracking issue for this feature is: [#95174]
 [#95174]: https://github.com/rust-lang/rust/issues/95174
 
 ------------------------
+
+Allows for using more complex types for const parameters, such as structs or enums.
+
+```rust
+#![feature(adt_const_params)]
+#![allow(incomplete_features)]
+
+use std::marker::ConstParamTy;
+
+#[derive(ConstParamTy, PartialEq, Eq)]
+enum Foo {
+    A,
+    B,
+    C,
+}
+
+#[derive(ConstParamTy, PartialEq, Eq)]
+struct Bar {
+    flag: bool,
+}
+
+fn is_foo_a_and_bar_true<const F: Foo, const B: Bar>() -> bool {
+    match (F, B.flag) {
+        (Foo::A, true) => true,
+        _ => false,
+    }
+}
+```
 "##,
     },
     Lint {
@@ -1377,6 +1502,28 @@ The tracking issue for this feature is: [#91583]
 
 [#91583]: https://github.com/rust-lang/rust/issues/91583
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "array_ptr_get",
+        description: r##"# `array_ptr_get`
+
+The tracking issue for this feature is: [#119834]
+
+[#119834]: https://github.com/rust-lang/rust/issues/119834
+
+------------------------
+"##,
+    },
+    Lint {
+        label: "array_repeat",
+        description: r##"# `array_repeat`
+
+The tracking issue for this feature is: [#126695]
+
+[#126695]: https://github.com/rust-lang/rust/issues/126695
+
 ------------------------
 "##,
     },
@@ -1484,6 +1631,7 @@ This feature tracks `asm!` and `global_asm!` support for the following architect
 - M68k
 - CSKY
 - s390x
+- Arm64EC
 
 ## Register classes
 
@@ -1516,6 +1664,9 @@ This feature tracks `asm!` and `global_asm!` support for the following architect
 | CSKY         | `freg`         | `f[0-31]`                          | `f`                  |
 | s390x        | `reg`          | `r[0-10]`, `r[12-14]`              | `r`                  |
 | s390x        | `freg`         | `f[0-15]`                          | `f`                  |
+| Arm64EC      | `reg`          | `x[0-12]`, `x[15-22]`, `x[25-27]`, `x30` | `r`            |
+| Arm64EC      | `vreg`         | `v[0-15]`                          | `w`                  |
+| Arm64EC      | `vreg_low16`   | `v[0-15]`                          | `x`                  |
 
 > **Notes**:
 > - NVPTX doesn't have a fixed register set, so named registers are not supported.
@@ -1551,6 +1702,8 @@ This feature tracks `asm!` and `global_asm!` support for the following architect
 | CSKY         | `freg`                          | None           | `f32`,                                  |
 | s390x        | `reg`, `reg_addr`               | None           | `i8`, `i16`, `i32`, `i64`               |
 | s390x        | `freg`                          | None           | `f32`, `f64`                            |
+| Arm64EC      | `reg`                           | None           | `i8`, `i16`, `i32`, `f32`, `i64`, `f64` |
+| Arm64EC      | `vreg`                          | None           | `i8`, `i16`, `i32`, `f32`, `i64`, `f64`, <br> `i8x8`, `i16x4`, `i32x2`, `i64x1`, `f32x2`, `f64x1`, <br> `i8x16`, `i16x8`, `i32x4`, `i64x2`, `f32x4`, `f64x2` |
 
 ## Register aliases
 
@@ -1583,6 +1736,12 @@ This feature tracks `asm!` and `global_asm!` support for the following architect
 | CSKY         | `r29`         | `rtb`     |
 | CSKY         | `r30`         | `svbr`    |
 | CSKY         | `r31`         | `tls`     |
+| Arm64EC      | `x[0-30]`     | `w[0-30]` |
+| Arm64EC      | `x29`         | `fp`      |
+| Arm64EC      | `x30`         | `lr`      |
+| Arm64EC      | `sp`          | `wsp`     |
+| Arm64EC      | `xzr`         | `wzr`     |
+| Arm64EC      | `v[0-15]`     | `b[0-15]`, `h[0-15]`, `s[0-15]`, `d[0-15]`, `q[0-15]` |
 
 > **Notes**:
 > - TI does not mandate a frame pointer for MSP430, but toolchains are allowed
@@ -1593,8 +1752,8 @@ This feature tracks `asm!` and `global_asm!` support for the following architect
 | Architecture | Unsupported register                    | Reason                                                                                                                                                                              |
 | ------------ | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
 | All          | `sp`, `r15` (s390x)                     | The stack pointer must be restored to its original value at the end of an asm code block.                                                                                           |
-| All          | `fr` (Hexagon), `$fp` (MIPS), `Y` (AVR), `r4` (MSP430), `a6` (M68k), `r11` (s390x) | The frame pointer cannot be used as an input or output.                                                                                                                             |
-| All          | `r19` (Hexagon)                         | This is used internally by LLVM as a "base pointer" for functions with complex stack frames.                                                                                        |
+| All          | `fr` (Hexagon), `$fp` (MIPS), `Y` (AVR), `r4` (MSP430), `a6` (M68k), `r11` (s390x), `x29` (Arm64EC) | The frame pointer cannot be used as an input or output.                                                                                                                             |
+| All          | `r19` (Hexagon), `x19` (Arm64EC)        | This is used internally by LLVM as a "base pointer" for functions with complex stack frames.                                                                                        |
 | MIPS         | `$0` or `$zero`                         | This is a constant zero register which can't be modified.                                                                                                                           |
 | MIPS         | `$1` or `$at`                           | Reserved for assembler.                                                                                                                                                             |
 | MIPS         | `$26`/`$k0`, `$27`/`$k1`                | OS-reserved registers.                                                                                                                                                              |
@@ -1610,6 +1769,9 @@ This feature tracks `asm!` and `global_asm!` support for the following architect
 | CSKY         | `r15`                                   | This is the link register. |
 | CSKY         | `r[26-30]`                              | Reserved by its ABI.       |
 | CSKY         | `r31`                                   | This is the TLS register.  |
+| Arm64EC      | `xzr`                                   | This is a constant zero register which can't be modified. |
+| Arm64EC      | `x18`                                   | This is an OS-reserved register. |
+| Arm64EC      | `x13`, `x14`, `x23`, `x24`, `x28`, `v[16-31]` | These are AArch64 registers that are not supported for Arm64EC. |
 
 
 ## Template modifiers
@@ -1630,6 +1792,16 @@ This feature tracks `asm!` and `global_asm!` support for the following architect
 | s390x        | `freg`         | None     | `%f0`          | None          |
 | CSKY         | `reg`          | None     | `r0`           | None          |
 | CSKY         | `freg`         | None     | `f0`           | None          |
+| Arm64EC      | `reg`          | None     | `x0`           | `x`           |
+| Arm64EC      | `reg`          | `w`      | `w0`           | `w`           |
+| Arm64EC      | `reg`          | `x`      | `x0`           | `x`           |
+| Arm64EC      | `vreg`         | None     | `v0`           | None          |
+| Arm64EC      | `vreg`         | `v`      | `v0`           | None          |
+| Arm64EC      | `vreg`         | `b`      | `b0`           | `b`           |
+| Arm64EC      | `vreg`         | `h`      | `h0`           | `h`           |
+| Arm64EC      | `vreg`         | `s`      | `s0`           | `s`           |
+| Arm64EC      | `vreg`         | `d`      | `d0`           | `d`           |
+| Arm64EC      | `vreg`         | `q`      | `q0`           | `q`           |
 
 # Flags covered by `preserves_flags`
 
@@ -1642,6 +1814,43 @@ These flags registers must be restored upon exiting the asm block if the `preser
   - The condition code register `ccr`.
 - s390x
   - The condition code register `cc`.
+- Arm64EC
+  - Condition flags (`NZCV` register).
+  - Floating-point status (`FPSR` register).
+"##,
+    },
+    Lint {
+        label: "asm_goto",
+        description: r##"# `asm_goto`
+
+The tracking issue for this feature is: [#119364]
+
+[#119364]: https://github.com/rust-lang/rust/issues/119364
+
+------------------------
+
+This feature adds a `label <block>` operand type to `asm!`.
+
+Example:
+```rust,ignore (partial-example, x86-only)
+
+unsafe {
+    asm!(
+        "jmp {}",
+        label {
+            println!("Jumped from asm!");
+        }
+    );
+}
+```
+
+The block must have unit type or diverge.
+
+When `label <block>` is used together with `noreturn` option, it means that the
+assembly will not fallthrough. It's allowed to jump to a label within the
+assembly. In this case, the entire `asm!` expression will have an unit type as
+opposed to diverging, if not all label blocks diverge. The `asm!` expression
+still diverges if `noreturn` option is used and all label blocks diverge.
 "##,
     },
     Lint {
@@ -1676,17 +1885,6 @@ The tracking issue for this feature is: [#92827]
 
 [#92827]: https://github.com/rust-lang/rust/issues/92827
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "associated_type_bounds",
-        description: r##"# `associated_type_bounds`
-
-The tracking issue for this feature is: [#52662]
-
-[#52662]: https://github.com/rust-lang/rust/issues/52662
-
 ------------------------
 "##,
     },
@@ -1709,6 +1907,17 @@ The tracking issue for this feature is: [#62290]
 
 [#62290]: https://github.com/rust-lang/rust/issues/62290
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "async_drop",
+        description: r##"# `async_drop`
+
+The tracking issue for this feature is: [#126482]
+
+[#126482]: https://github.com/rust-lang/rust/issues/126482
+
 ------------------------
 "##,
     },
@@ -1737,7 +1946,7 @@ for creating custom closure-like types that return futures.
 [`AsyncFn*`]: ../../std/ops/trait.AsyncFn.html
 
 The main difference to the `Fn*` family of traits is that `AsyncFn` can return a future
-that borrows from itself (`FnOnce::Output` has no lifetime parameters, while `AsyncFn::CallFuture` does).
+that borrows from itself (`FnOnce::Output` has no lifetime parameters, while `AsyncFnMut::CallRefFuture` does).
 "##,
     },
     Lint {
@@ -1779,17 +1988,6 @@ The tracking issue for this feature is: [#79024]
 
 [#79024]: https://github.com/rust-lang/rust/issues/79024
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "atomic_bool_fetch_not",
-        description: r##"# `atomic_bool_fetch_not`
-
-The tracking issue for this feature is: [#98485]
-
-[#98485]: https://github.com/rust-lang/rust/issues/98485
-
 ------------------------
 "##,
     },
@@ -1944,17 +2142,6 @@ The tracking issue for this feature is: [#85532]
 
 [#85532]: https://github.com/rust-lang/rust/issues/85532
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "binary_heap_as_slice",
-        description: r##"# `binary_heap_as_slice`
-
-The tracking issue for this feature is: [#83659]
-
-[#83659]: https://github.com/rust-lang/rust/issues/83659
-
 ------------------------
 "##,
     },
@@ -2114,23 +2301,23 @@ The tracking issue for this feature is: [#111735]
 "##,
     },
     Lint {
-        label: "builtin_syntax",
-        description: r##"# `builtin_syntax`
+        label: "build_hasher_default_const_new",
+        description: r##"# `build_hasher_default_const_new`
 
-The tracking issue for this feature is: [#110680]
+The tracking issue for this feature is: [#123197]
 
-[#110680]: https://github.com/rust-lang/rust/issues/110680
+[#123197]: https://github.com/rust-lang/rust/issues/123197
 
 ------------------------
 "##,
     },
     Lint {
-        label: "byte_slice_trim_ascii",
-        description: r##"# `byte_slice_trim_ascii`
+        label: "builtin_syntax",
+        description: r##"# `builtin_syntax`
 
-The tracking issue for this feature is: [#94035]
+The tracking issue for this feature is: [#110680]
 
-[#94035]: https://github.com/rust-lang/rust/issues/94035
+[#110680]: https://github.com/rust-lang/rust/issues/110680
 
 ------------------------
 "##,
@@ -2147,33 +2334,14 @@ The tracking issue for this feature is: [#88345]
 "##,
     },
     Lint {
-        label: "c_unwind",
-        description: r##"# `c_unwind`
+        label: "c_str_module",
+        description: r##"# `c_str_module`
 
-The tracking issue for this feature is: [#74990]
+The tracking issue for this feature is: [#112134]
 
-[#74990]: https://github.com/rust-lang/rust/issues/74990
+[#112134]: https://github.com/rust-lang/rust/issues/112134
 
 ------------------------
-
-Introduces new ABI strings:
-- "C-unwind"
-- "cdecl-unwind"
-- "stdcall-unwind"
-- "fastcall-unwind"
-- "vectorcall-unwind"
-- "thiscall-unwind"
-- "aapcs-unwind"
-- "win64-unwind"
-- "sysv64-unwind"
-- "system-unwind"
-
-These enable unwinding from other languages (such as C++) into Rust frames and
-from Rust into other languages.
-
-See [RFC 2945] for more information.
-
-[RFC 2945]: https://github.com/rust-lang/rfcs/blob/master/text/2945-c-unwind-abi.md
 "##,
     },
     Lint {
@@ -2421,6 +2589,17 @@ The tracking issue for this feature is: [#29594]
 
 [#29594]: https://github.com/rust-lang/rust/issues/29594
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "cfg_ub_checks",
+        description: r##"# `cfg_ub_checks`
+
+The tracking issue for this feature is: [#123499]
+
+[#123499]: https://github.com/rust-lang/rust/issues/123499
+
 ------------------------
 "##,
     },
@@ -2520,6 +2699,17 @@ The tracking issue for this feature is: [#114298]
 
 [#114298]: https://github.com/rust-lang/rust/issues/114298
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "clone_to_uninit",
+        description: r##"# `clone_to_uninit`
+
+The tracking issue for this feature is: [#126799]
+
+[#126799]: https://github.com/rust-lang/rust/issues/126799
+
 ------------------------
 "##,
     },
@@ -2654,17 +2844,6 @@ The tracking issue for this feature is: [#18598]
 
 [#18598]: https://github.com/rust-lang/rust/issues/18598
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "collapse_debuginfo",
-        description: r##"# `collapse_debuginfo`
-
-The tracking issue for this feature is: [#100758]
-
-[#100758]: https://github.com/rust-lang/rust/issues/100758
-
 ------------------------
 "##,
     },
@@ -2836,8 +3015,8 @@ The tracking issue for this feature is: [#85532]
 "##,
     },
     Lint {
-        label: "const_binary_heap_constructor",
-        description: r##"# `const_binary_heap_constructor`
+        label: "const_binary_heap_new_in",
+        description: r##"# `const_binary_heap_new_in`
 
 The tracking issue for this feature is: [#112353]
 
@@ -2872,17 +3051,6 @@ The tracking issue for this feature is: [#92521]
 
 This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "const_caller_location",
-        description: r##"# `const_caller_location`
-
-The tracking issue for this feature is: [#76156]
-
-[#76156]: https://github.com/rust-lang/rust/issues/76156
-
 ------------------------
 "##,
     },
@@ -2916,17 +3084,6 @@ The tracking issue for this feature is: [#106003]
 
 [#106003]: https://github.com/rust-lang/rust/issues/106003
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "const_cmp",
-        description: r##"# `const_cmp`
-
-The tracking issue for this feature is: [#92391]
-
-[#92391]: https://github.com/rust-lang/rust/issues/92391
-
 ------------------------
 "##,
     },
@@ -2967,7 +3124,9 @@ The tracking issue for this feature is: [#113219]
         label: "const_eval_select",
         description: r##"# `const_eval_select`
 
-This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
+The tracking issue for this feature is: [#124625]
+
+[#124625]: https://github.com/rust-lang/rust/issues/124625
 
 ------------------------
 "##,
@@ -3073,17 +3232,6 @@ The tracking issue for this feature is: [#79597]
 
 [#79597]: https://github.com/rust-lang/rust/issues/79597
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "const_hint_assert_unchecked",
-        description: r##"# `const_hint_assert_unchecked`
-
-The tracking issue for this feature is: [#119131]
-
-[#119131]: https://github.com/rust-lang/rust/issues/119131
-
 ------------------------
 "##,
     },
@@ -3097,10 +3245,12 @@ This feature has no tracking issue, and is therefore likely internal to the comp
 "##,
     },
     Lint {
-        label: "const_int_unchecked_arith",
-        description: r##"# `const_int_unchecked_arith`
+        label: "const_int_from_str",
+        description: r##"# `const_int_from_str`
 
-This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
+The tracking issue for this feature is: [#59133]
+
+[#59133]: https://github.com/rust-lang/rust/issues/59133
 
 ------------------------
 "##,
@@ -3151,17 +3301,6 @@ This feature has no tracking issue, and is therefore likely internal to the comp
 
 This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "const_io_structs",
-        description: r##"# `const_io_structs`
-
-The tracking issue for this feature is: [#78812]
-
-[#78812]: https://github.com/rust-lang/rust/issues/78812
-
 ------------------------
 "##,
     },
@@ -3204,17 +3343,6 @@ The tracking issue for this feature is: [#76205]
 
 This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "const_location_fields",
-        description: r##"# `const_location_fields`
-
-The tracking issue for this feature is: [#102911]
-
-[#102911]: https://github.com/rust-lang/rust/issues/102911
-
 ------------------------
 "##,
     },
@@ -3301,17 +3429,6 @@ The tracking issue for this feature is: [#110840]
 
 [#110840]: https://github.com/rust-lang/rust/issues/110840
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "const_ops",
-        description: r##"# `const_ops`
-
-The tracking issue for this feature is: [#90080]
-
-[#90080]: https://github.com/rust-lang/rust/issues/90080
-
 ------------------------
 "##,
     },
@@ -3532,6 +3649,17 @@ The tracking issue for this feature is: [#111774]
 
 [#111774]: https://github.com/rust-lang/rust/issues/111774
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "const_slice_flatten",
+        description: r##"# `const_slice_flatten`
+
+The tracking issue for this feature is: [#95629]
+
+[#95629]: https://github.com/rust-lang/rust/issues/95629
+
 ------------------------
 "##,
     },
@@ -3585,17 +3713,6 @@ The tracking issue for this feature is: [#90206]
 
 This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "const_slice_ptr_len",
-        description: r##"# `const_slice_ptr_len`
-
-The tracking issue for this feature is: [#71146]
-
-[#71146]: https://github.com/rust-lang/rust/issues/71146
-
 ------------------------
 "##,
     },
@@ -3662,6 +3779,15 @@ The tracking issue for this feature is: [#83163]
 
 [#83163]: https://github.com/rust-lang/rust/issues/83163
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "const_three_way_compare",
+        description: r##"# `const_three_way_compare`
+
+This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
+
 ------------------------
 "##,
     },
@@ -3706,6 +3832,24 @@ The tracking issue for this feature is: [#63084]
 
 [#63084]: https://github.com/rust-lang/rust/issues/63084
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "const_typed_swap",
+        description: r##"# `const_typed_swap`
+
+This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
+
+------------------------
+"##,
+    },
+    Lint {
+        label: "const_ub_checks",
+        description: r##"# `const_ub_checks`
+
+This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
+
 ------------------------
 "##,
     },
@@ -3752,10 +3896,21 @@ This feature has no tracking issue, and is therefore likely internal to the comp
 "##,
     },
     Lint {
-        label: "control_flow_enum",
-        description: r##"# `control_flow_enum`
+        label: "context_ext",
+        description: r##"# `context_ext`
 
-The tracking issue for this feature is: [#75744]
+The tracking issue for this feature is: [#123392]
+
+[#123392]: https://github.com/rust-lang/rust/issues/123392
+
+------------------------
+"##,
+    },
+    Lint {
+        label: "control_flow_enum",
+        description: r##"# `control_flow_enum`
+
+The tracking issue for this feature is: [#75744]
 
 [#75744]: https://github.com/rust-lang/rust/issues/75744
 
@@ -3790,6 +3945,24 @@ The tracking issue for this feature is: [#117693]
 
 [#117693]: https://github.com/rust-lang/rust/issues/117693
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "core_pattern_type",
+        description: r##"# `core_pattern_type`
+
+This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
+
+------------------------
+"##,
+    },
+    Lint {
+        label: "core_pattern_types",
+        description: r##"# `core_pattern_types`
+
+This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
+
 ------------------------
 "##,
     },
@@ -3863,7 +4036,7 @@ tweaks to the overall design.
 A syntactical example of a coroutine is:
 
 ```rust
-#![feature(coroutines, coroutine_trait)]
+#![feature(coroutines, coroutine_trait, stmt_expr_attributes)]
 
 use std::ops::{Coroutine, CoroutineState};
 use std::pin::Pin;
@@ -3885,7 +4058,8 @@ fn main() {
 }
 ```
 
-Coroutines are closure-like literals which can contain a `yield` statement. The
+Coroutines are closure-like literals which are annotated with `#[coroutine]`
+and can contain a `yield` statement. The
 `yield` statement takes an optional expression of a value to yield out of the
 coroutine. All coroutine literals implement the `Coroutine` trait in the
 `std::ops` module. The `Coroutine` trait has one main method, `resume`, which
@@ -3895,7 +4069,7 @@ An example of the control flow of coroutines is that the following example
 prints all numbers in order:
 
 ```rust
-#![feature(coroutines, coroutine_trait)]
+#![feature(coroutines, coroutine_trait, stmt_expr_attributes)]
 
 use std::ops::Coroutine;
 use std::pin::Pin;
@@ -3915,9 +4089,9 @@ fn main() {
 }
 ```
 
-At this time the main intended use case of coroutines is an implementation
-primitive for async/await syntax, but coroutines will likely be extended to
-ergonomic implementations of iterators and other primitives in the future.
+At this time the main use case of coroutines is an implementation
+primitive for `async`/`await` and `gen` syntax, but coroutines
+will likely be extended to other primitives in the future.
 Feedback on the design and usage is always appreciated!
 
 ### The `Coroutine` trait
@@ -4000,7 +4174,7 @@ which point all state is saved off in the coroutine and a value is returned.
 Let's take a look at an example to see what's going on here:
 
 ```rust
-#![feature(coroutines, coroutine_trait)]
+#![feature(coroutines, coroutine_trait, stmt_expr_attributes)]
 
 use std::ops::Coroutine;
 use std::pin::Pin;
@@ -4020,7 +4194,7 @@ fn main() {
 This coroutine literal will compile down to something similar to:
 
 ```rust
-#![feature(arbitrary_self_types, coroutines, coroutine_trait)]
+#![feature(arbitrary_self_types, coroutine_trait)]
 
 use std::ops::{Coroutine, CoroutineState};
 use std::pin::Pin;
@@ -4140,12 +4314,12 @@ The tracking issue for this feature is: [#44839]
 "##,
     },
     Lint {
-        label: "cstr_count_bytes",
-        description: r##"# `cstr_count_bytes`
+        label: "cstr_bytes",
+        description: r##"# `cstr_bytes`
 
-The tracking issue for this feature is: [#114441]
+The tracking issue for this feature is: [#112115]
 
-[#114441]: https://github.com/rust-lang/rust/issues/114441
+[#112115]: https://github.com/rust-lang/rust/issues/112115
 
 ------------------------
 "##,
@@ -4158,17 +4332,6 @@ The tracking issue for this feature is: [#86369]
 
 [#86369]: https://github.com/rust-lang/rust/issues/86369
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "custom_code_classes_in_docs",
-        description: r##"# `custom_code_classes_in_docs`
-
-The tracking issue for this feature is: [#79483]
-
-[#79483]: https://github.com/rust-lang/rust/issues/79483
-
 ------------------------
 "##,
     },
@@ -4278,15 +4441,6 @@ The tracking issue for this feature is: [#27336]
 
 [#27336]: https://github.com/rust-lang/rust/issues/27336
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "delayed_debug_assertions",
-        description: r##"# `delayed_debug_assertions`
-
-This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
-
 ------------------------
 "##,
     },
@@ -4309,6 +4463,28 @@ The tracking issue for this feature is: [#94785]
 
 [#94785]: https://github.com/rust-lang/rust/issues/94785
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "deref_patterns",
+        description: r##"# `deref_patterns`
+
+The tracking issue for this feature is: [#87121]
+
+[#87121]: https://github.com/rust-lang/rust/issues/87121
+
+------------------------
+"##,
+    },
+    Lint {
+        label: "deref_pure_trait",
+        description: r##"# `deref_pure_trait`
+
+The tracking issue for this feature is: [#87121]
+
+[#87121]: https://github.com/rust-lang/rust/issues/87121
+
 ------------------------
 "##,
     },
@@ -4340,91 +4516,14 @@ This feature is internal to the Rust compiler and is not intended for general us
 "##,
     },
     Lint {
-        label: "diagnostic_namespace",
-        description: r##"# `diagnostic_namespace`
+        label: "derive_smart_pointer",
+        description: r##"# `derive_smart_pointer`
 
-The tracking issue for this feature is: [#111996]
+The tracking issue for this feature is: [#123430]
 
-[#111996]: https://github.com/rust-lang/rust/issues/111996
+[#123430]: https://github.com/rust-lang/rust/issues/123430
 
 ------------------------
-
-The `diagnostic_namespace` feature permits customization of compilation errors.
-
-## diagnostic::on_unimplemented
-
-With [#114452] support for `diagnostic::on_unimplemented` was added.
-
-When used on a trait declaration, the following options are available:
-
-* `message` to customize the primary error message
-* `note` to add a customized note message to an error message
-* `label` to customize the label part of the error message
-
-The attribute will hint to the compiler to use these in error messages:
-```rust
-// some library
-#![feature(diagnostic_namespace)]
-
-#[diagnostic::on_unimplemented(
-    message = "cannot insert element",
-    label = "cannot be put into a table",
-    note = "see <link> for more information about the Table api"
-)]
-pub trait Element {
-    // ...
-}
-```
-
-```rust,compile_fail,E0277
-# #![feature(diagnostic_namespace)]
-#
-# #[diagnostic::on_unimplemented(
-#    message = "cannot insert element",
-#    label = "cannot be put into a table",
-#    note = "see <link> for more information about the Table api"
-# )]
-# pub trait Element {
-#    // ...
-# }
-# struct Table;
-# impl Table {
-#    fn insert<T: Element>(&self, element: T) {
-#        // ..
-#    }
-# }
-# fn main() {
-#    let table = Table;
-#    let element = ();
-// user code
-table.insert(element);
-# }
-```
-
-```text
-error[E0277]: cannot insert element
-  --> src/main.rs:24:18
-   |
-24 |     table.insert(element);
-   |           ------ ^^^^^^^ cannot be put into a table
-   |           |
-   |           required by a bound introduced by this call
-   |
-   = help: the trait `Element` is not implemented for `<type>`
-   = note: see <link> for more information about the Table api
-note: required by a bound in `Table::insert`
-  --> src/main.rs:15:18
-   |
-15 |     fn insert<T: Element>(&self, element: T) {
-   |                  ^^^^^^^ required by this bound in `Table::insert`
-
-For more information about this error, try `rustc --explain E0277`.
-```
-
-See [RFC 3368] for more information.
-
-[#114452]: https://github.com/rust-lang/rust/pull/114452
-[RFC 3368]: https://github.com/rust-lang/rfcs/blob/master/text/3368-diagnostic-attribute-namespace.md
 "##,
     },
     Lint {
@@ -4453,17 +4552,6 @@ This feature has no tracking issue, and is therefore likely internal to the comp
 
 This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "div_duration",
-        description: r##"# `div_duration`
-
-The tracking issue for this feature is: [#63139]
-
-[#63139]: https://github.com/rust-lang/rust/issues/63139
-
 ------------------------
 "##,
     },
@@ -4645,17 +4733,6 @@ The tracking issue for this feature is: [#34761]
 
 [#34761]: https://github.com/rust-lang/rust/issues/34761
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "duration_abs_diff",
-        description: r##"# `duration_abs_diff`
-
-The tracking issue for this feature is: [#117618]
-
-[#117618]: https://github.com/rust-lang/rust/issues/117618
-
 ------------------------
 "##,
     },
@@ -4691,6 +4768,17 @@ The tracking issue for this feature is: [#72440]
 
 [#72440]: https://github.com/rust-lang/rust/issues/72440
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "duration_millis_float",
+        description: r##"# `duration_millis_float`
+
+The tracking issue for this feature is: [#122451]
+
+[#122451]: https://github.com/rust-lang/rust/issues/122451
+
 ------------------------
 "##,
     },
@@ -4722,6 +4810,15 @@ The tracking issue for this feature is: [#102425]
 
 This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "effect_types",
+        description: r##"# `effect_types`
+
+This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
+
 ------------------------
 "##,
     },
@@ -4766,17 +4863,6 @@ The tracking issue for this feature is: [#99301]
 
 [#99301]: https://github.com/rust-lang/rust/issues/99301
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "error_in_core",
-        description: r##"# `error_in_core`
-
-The tracking issue for this feature is: [#103765]
-
-[#103765]: https://github.com/rust-lang/rust/issues/103765
-
 ------------------------
 "##,
     },
@@ -4822,36 +4908,6 @@ The tracking issue for this feature is: [#35428]
 [#35428]: https://github.com/rust-lang/rust/issues/35428
 
 ------------------------
-"##,
-    },
-    Lint {
-        label: "exclusive_range_pattern",
-        description: r##"# `exclusive_range_pattern`
-
-The tracking issue for this feature is: [#37854].
-
-
-[#67264]: https://github.com/rust-lang/rust/issues/67264
-[#37854]: https://github.com/rust-lang/rust/issues/37854
------
-
-The `exclusive_range_pattern` feature allows non-inclusive range
-patterns (`0..10`) to be used in appropriate pattern matching
-contexts. It also can be combined with `#![feature(half_open_range_patterns]`
-to be able to use RangeTo patterns (`..10`).
-
-It also enabled RangeFrom patterns but that has since been
-stabilized.
-
-```rust
-#![feature(exclusive_range_pattern)]
-    let x = 5;
-    match x {
-        0..10 => println!("single digit"),
-        10 => println!("ten isn't part of the above range"),
-        _ => println!("nor is everything else.")
-    }
-```
 "##,
     },
     Lint {
@@ -4917,6 +4973,17 @@ The tracking issue for this feature is: [#95228]
 
 [#95228]: https://github.com/rust-lang/rust/issues/95228
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "expr_fragment_specifier_2024",
+        description: r##"# `expr_fragment_specifier_2024`
+
+The tracking issue for this feature is: [#123742]
+
+[#123742]: https://github.com/rust-lang/rust/issues/123742
+
 ------------------------
 "##,
     },
@@ -4965,6 +5032,32 @@ The tracking issue for this feature is: [#43244]
 [#43244]: https://github.com/rust-lang/rust/issues/43244
 
 ------------------------
+"##,
+    },
+    Lint {
+        label: "f128",
+        description: r##"# `f128`
+
+The tracking issue for this feature is: [#116909]
+
+[#116909]: https://github.com/rust-lang/rust/issues/116909
+
+---
+
+Enable the `f128` type for  IEEE 128-bit floating numbers (quad precision).
+"##,
+    },
+    Lint {
+        label: "f16",
+        description: r##"# `f16`
+
+The tracking issue for this feature is: [#116909]
+
+[#116909]: https://github.com/rust-lang/rust/issues/116909
+
+---
+
+Enable the `f16` type for  IEEE 16-bit floating numbers (half precision).
 "##,
     },
     Lint {
@@ -5250,12 +5343,23 @@ This feature has no tracking issue, and is therefore likely internal to the comp
 "##,
     },
     Lint {
-        label: "fs_try_exists",
-        description: r##"# `fs_try_exists`
+        label: "freeze",
+        description: r##"# `freeze`
 
-The tracking issue for this feature is: [#83186]
+The tracking issue for this feature is: [#121675]
 
-[#83186]: https://github.com/rust-lang/rust/issues/83186
+[#121675]: https://github.com/rust-lang/rust/issues/121675
+
+------------------------
+"##,
+    },
+    Lint {
+        label: "freeze_impls",
+        description: r##"# `freeze_impls`
+
+The tracking issue for this feature is: [#121675]
+
+[#121675]: https://github.com/rust-lang/rust/issues/121675
 
 ------------------------
 "##,
@@ -5365,17 +5469,6 @@ The tracking issue for this feature is: [#113521]
 
 [#113521]: https://github.com/rust-lang/rust/issues/113521
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "generic_nonzero",
-        description: r##"# `generic_nonzero`
-
-The tracking issue for this feature is: [#120257]
-
-[#120257]: https://github.com/rust-lang/rust/issues/120257
-
 ------------------------
 "##,
     },
@@ -5398,6 +5491,17 @@ The tracking issue for this feature is: [#63292]
 
 [#63292]: https://github.com/rust-lang/rust/issues/63292
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "global_registration",
+        description: r##"# `global_registration`
+
+The tracking issue for this feature is: [#125119]
+
+[#125119]: https://github.com/rust-lang/rust/issues/125119
+
 ------------------------
 "##,
     },
@@ -5406,7 +5510,7 @@ The tracking issue for this feature is: [#63292]
         description: r##"# `half_open_range_patterns_in_slices`
 
 The tracking issue for this feature is: [#67264]
-It is part of the `exclusive_range_pattern` feature,
+It is a future part of the `exclusive_range_pattern` feature,
 tracked at [#37854].
 
 [#67264]: https://github.com/rust-lang/rust/issues/67264
@@ -5417,7 +5521,6 @@ This feature allow using top-level half-open range patterns in slices.
 
 ```rust
 #![feature(half_open_range_patterns_in_slices)]
-#![feature(exclusive_range_pattern)]
 
 fn main() {
     let xs = [13, 1, 5, 2, 3, 1, 21, 8];
@@ -5496,17 +5599,6 @@ The tracking issue for this feature is: [#44839]
 
 [#44839]: https://github.com/rust-lang/rust/issues/44839
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "hint_assert_unchecked",
-        description: r##"# `hint_assert_unchecked`
-
-The tracking issue for this feature is: [#119131]
-
-[#119131]: https://github.com/rust-lang/rust/issues/119131
-
 ------------------------
 "##,
     },
@@ -5551,17 +5643,6 @@ The tracking issue for this feature is: [#99697]
 
 [#99697]: https://github.com/rust-lang/rust/issues/99697
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "imported_main",
-        description: r##"# `imported_main`
-
-The tracking issue for this feature is: [#28937]
-
-[#28937]: https://github.com/rust-lang/rust/issues/28937
-
 ------------------------
 "##,
     },
@@ -5574,42 +5655,6 @@ The tracking issue for this feature is: [#8995]
 [#8995]: https://github.com/rust-lang/rust/issues/8995
 
 ------------------------
-"##,
-    },
-    Lint {
-        label: "inline_const",
-        description: r##"# `inline_const`
-
-The tracking issue for this feature is: [#76001]
-
-See also [`inline_const_pat`](inline-const-pat.md)
-
-------
-
-This feature allows you to use inline constant expressions. For example, you can
-turn this code:
-
-```rust
-# fn add_one(x: i32) -> i32 { x + 1 }
-const MY_COMPUTATION: i32 = 1 + 2 * 3 / 4;
-
-fn main() {
-    let x = add_one(MY_COMPUTATION);
-}
-```
-
-into this code:
-
-```rust
-#![feature(inline_const)]
-
-# fn add_one(x: i32) -> i32 { x + 1 }
-fn main() {
-    let x = add_one(const { 1 + 2 * 3 / 4 });
-}
-```
-
-[#76001]: https://github.com/rust-lang/rust/issues/76001
 "##,
     },
     Lint {
@@ -5618,8 +5663,6 @@ fn main() {
 
 The tracking issue for this feature is: [#76001]
 
-See also [`inline_const`](inline-const.md)
-
 ------
 
 This feature allows you to use inline constant expressions in pattern position:
@@ -5668,6 +5711,17 @@ The tracking issue for this feature is: [#99069]
 
 [#99069]: https://github.com/rust-lang/rust/issues/99069
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "integer_sign_cast",
+        description: r##"# `integer_sign_cast`
+
+The tracking issue for this feature is: [#125882]
+
+[#125882]: https://github.com/rust-lang/rust/issues/125882
+
 ------------------------
 "##,
     },
@@ -5730,7 +5784,7 @@ All intrinsic fallback bodies are automatically made cross-crate inlineable (lik
 by the codegen backend, but not the MIR inliner.
 
 ```rust
-#![feature(rustc_attrs, effects)]
+#![feature(rustc_attrs)]
 #![allow(internal_features)]
 
 #[rustc_intrinsic]
@@ -5740,7 +5794,7 @@ const unsafe fn const_deallocate(_ptr: *mut u8, _size: usize, _align: usize) {}
 Since these are just regular functions, it is perfectly ok to create the intrinsic twice:
 
 ```rust
-#![feature(rustc_attrs, effects)]
+#![feature(rustc_attrs)]
 #![allow(internal_features)]
 
 #[rustc_intrinsic]
@@ -5764,12 +5818,23 @@ with any regular function.
 Various intrinsics have native MIR operations that they correspond to. Instead of requiring
 backends to implement both the intrinsic and the MIR operation, the `lower_intrinsics` pass
 will convert the calls to the MIR operation. Backends do not need to know about these intrinsics
-at all.
+at all. These intrinsics only make sense without a body, and can either be declared as a "rust-intrinsic"
+or as a `#[rustc_intrinsic]`. The body is never used, as calls to the intrinsic do not exist
+anymore after MIR analyses.
 
 ## Intrinsics without fallback logic
 
 These must be implemented by all backends.
 
+### `#[rustc_intrinsic]` declarations
+
+These are written like intrinsics with fallback bodies, but the body is irrelevant.
+Use `loop {}` for the body or call the intrinsic recursively and add
+`#[rustc_intrinsic_must_be_overridden]` to the function to ensure that backends don't
+invoke the body.
+
+### Legacy extern ABI based intrinsics
+
 These are imported as if they were FFI functions, with the special
 `rust-intrinsic` ABI. For example, if one was in a freestanding
 context, but wished to be able to `transmute` between types, and
@@ -5790,17 +5855,6 @@ extern "rust-intrinsic" {
 
 As with any other FFI functions, these are by default always `unsafe` to call.
 You can add `#[rustc_safe_intrinsic]` to the intrinsic to make it safe to call.
-"##,
-    },
-    Lint {
-        label: "io_error_downcast",
-        description: r##"# `io_error_downcast`
-
-The tracking issue for this feature is: [#99262]
-
-[#99262]: https://github.com/rust-lang/rust/issues/99262
-
-------------------------
 "##,
     },
     Lint {
@@ -5846,23 +5900,23 @@ The tracking issue for this feature is: [#27709]
 "##,
     },
     Lint {
-        label: "ip_bits",
-        description: r##"# `ip_bits`
+        label: "is_ascii_octdigit",
+        description: r##"# `is_ascii_octdigit`
 
-The tracking issue for this feature is: [#113744]
+The tracking issue for this feature is: [#101288]
 
-[#113744]: https://github.com/rust-lang/rust/issues/113744
+[#101288]: https://github.com/rust-lang/rust/issues/101288
 
 ------------------------
 "##,
     },
     Lint {
-        label: "is_ascii_octdigit",
-        description: r##"# `is_ascii_octdigit`
+        label: "is_none_or",
+        description: r##"# `is_none_or`
 
-The tracking issue for this feature is: [#101288]
+The tracking issue for this feature is: [#126383]
 
-[#101288]: https://github.com/rust-lang/rust/issues/101288
+[#126383]: https://github.com/rust-lang/rust/issues/126383
 
 ------------------------
 "##,
@@ -5932,6 +5986,17 @@ The tracking issue for this feature is: [#100450]
 
 [#100450]: https://github.com/rust-lang/rust/issues/100450
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "iter_chain",
+        description: r##"# `iter_chain`
+
+The tracking issue for this feature is: [#125964]
+
+[#125964]: https://github.com/rust-lang/rust/issues/125964
+
 ------------------------
 "##,
     },
@@ -6053,6 +6118,17 @@ The tracking issue for this feature is: [#87053]
 
 [#87053]: https://github.com/rust-lang/rust/issues/87053
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "junction_point",
+        description: r##"# `junction_point`
+
+The tracking issue for this feature is: [#121709]
+
+[#121709]: https://github.com/rust-lang/rust/issues/121709
+
 ------------------------
 "##,
     },
@@ -6205,17 +6281,6 @@ The tracking issue for this feature is: [#69835]
 
 [#69835]: https://github.com/rust-lang/rust/issues/69835
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "lazy_cell",
-        description: r##"# `lazy_cell`
-
-The tracking issue for this feature is: [#109736]
-
-[#109736]: https://github.com/rust-lang/rust/issues/109736
-
 ------------------------
 "##,
     },
@@ -6223,9 +6288,9 @@ The tracking issue for this feature is: [#109736]
         label: "lazy_cell_consume",
         description: r##"# `lazy_cell_consume`
 
-The tracking issue for this feature is: [#109736]
+The tracking issue for this feature is: [#125623]
 
-[#109736]: https://github.com/rust-lang/rust/issues/109736
+[#125623]: https://github.com/rust-lang/rust/issues/125623
 
 ------------------------
 "##,
@@ -6365,17 +6430,6 @@ The tracking issue for this feature is: [#114135]
 
 [#114135]: https://github.com/rust-lang/rust/issues/114135
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "lint_reasons",
-        description: r##"# `lint_reasons`
-
-The tracking issue for this feature is: [#54503]
-
-[#54503]: https://github.com/rust-lang/rust/issues/54503
-
 ------------------------
 "##,
     },
@@ -6431,6 +6485,17 @@ The tracking issue for this feature is: [#83527]
 
 [#83527]: https://github.com/rust-lang/rust/issues/83527
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "macro_metavar_expr_concat",
+        description: r##"# `macro_metavar_expr_concat`
+
+The tracking issue for this feature is: [#124225]
+
+[#124225]: https://github.com/rust-lang/rust/issues/124225
+
 ------------------------
 "##,
     },
@@ -6536,6 +6601,17 @@ The tracking issue for this feature is: [#93092]
 
 [#93092]: https://github.com/rust-lang/rust/issues/93092
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "maybe_uninit_fill",
+        description: r##"# `maybe_uninit_fill`
+
+The tracking issue for this feature is: [#117428]
+
+[#117428]: https://github.com/rust-lang/rust/issues/117428
+
 ------------------------
 "##,
     },
@@ -6688,6 +6764,17 @@ The tracking issue for this feature is: [#83310]
 
 [#83310]: https://github.com/rust-lang/rust/issues/83310
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "mut_ref",
+        description: r##"# `mut_ref`
+
+The tracking issue for this feature is: [#123076]
+
+[#123076]: https://github.com/rust-lang/rust/issues/123076
+
 ------------------------
 "##,
     },
@@ -6835,6 +6922,17 @@ The tracking issue for this feature is: [#65992]
 
 [#65992]: https://github.com/rust-lang/rust/issues/65992
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "new_range_api",
+        description: r##"# `new_range_api`
+
+The tracking issue for this feature is: [#125687]
+
+[#125687]: https://github.com/rust-lang/rust/issues/125687
+
 ------------------------
 "##,
     },
@@ -6912,17 +7010,6 @@ The tracking issue for this feature is: [#108185]
 
 [#108185]: https://github.com/rust-lang/rust/issues/108185
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "non_null_convenience",
-        description: r##"# `non_null_convenience`
-
-The tracking issue for this feature is: [#117691]
-
-[#117691]: https://github.com/rust-lang/rust/issues/117691
-
 ------------------------
 "##,
     },
@@ -7029,6 +7116,17 @@ The tracking issue for this feature is: [#120140]
 
 [#120140]: https://github.com/rust-lang/rust/issues/120140
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "offset_of_slice",
+        description: r##"# `offset_of_slice`
+
+The tracking issue for this feature is: [#126151]
+
+[#126151]: https://github.com/rust-lang/rust/issues/126151
+
 ------------------------
 "##,
     },
@@ -7038,6 +7136,17 @@ The tracking issue for this feature is: [#120140]
 
 This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "once_cell_get_mut",
+        description: r##"# `once_cell_get_mut`
+
+The tracking issue for this feature is: [#121641]
+
+[#121641]: https://github.com/rust-lang/rust/issues/121641
+
 ------------------------
 "##,
     },
@@ -7093,17 +7202,6 @@ The tracking issue for this feature is: [#82901]
 
 [#82901]: https://github.com/rust-lang/rust/issues/82901
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "option_take_if",
-        description: r##"# `option_take_if`
-
-The tracking issue for this feature is: [#98934]
-
-[#98934]: https://github.com/rust-lang/rust/issues/98934
-
 ------------------------
 "##,
     },
@@ -7137,6 +7235,17 @@ The tracking issue for this feature is: [#118485]
 
 [#118485]: https://github.com/rust-lang/rust/issues/118485
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "os_string_pathbuf_leak",
+        description: r##"# `os_string_pathbuf_leak`
+
+The tracking issue for this feature is: [#125965]
+
+[#125965]: https://github.com/rust-lang/rust/issues/125965
+
 ------------------------
 "##,
     },
@@ -7185,21 +7294,21 @@ The tracking issue for this feature is: [#92988]
 "##,
     },
     Lint {
-        label: "panic_info_message",
-        description: r##"# `panic_info_message`
-
-The tracking issue for this feature is: [#66745]
+        label: "panic_internals",
+        description: r##"# `panic_internals`
 
-[#66745]: https://github.com/rust-lang/rust/issues/66745
+This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
 
 ------------------------
 "##,
     },
     Lint {
-        label: "panic_internals",
-        description: r##"# `panic_internals`
+        label: "panic_payload_as_str",
+        description: r##"# `panic_payload_as_str`
 
-This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
+The tracking issue for this feature is: [#125175]
+
+[#125175]: https://github.com/rust-lang/rust/issues/125175
 
 ------------------------
 "##,
@@ -7234,6 +7343,28 @@ The tracking issue for this feature is: [#92649]
 
 [#92649]: https://github.com/rust-lang/rust/issues/92649
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "patchable_function_entry",
+        description: r##"# `patchable_function_entry`
+
+The tracking issue for this feature is: [#123115]
+
+[#123115]: https://github.com/rust-lang/rust/issues/123115
+
+------------------------
+"##,
+    },
+    Lint {
+        label: "path_add_extension",
+        description: r##"# `path_add_extension`
+
+The tracking issue for this feature is: [#127292]
+
+[#127292]: https://github.com/rust-lang/rust/issues/127292
+
 ------------------------
 "##,
     },
@@ -7265,6 +7396,17 @@ The tracking issue for this feature is: [#27721]
 
 This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "pattern_types",
+        description: r##"# `pattern_types`
+
+The tracking issue for this feature is: [#123646]
+
+[#123646]: https://github.com/rust-lang/rust/issues/123646
+
 ------------------------
 "##,
     },
@@ -7291,8 +7433,8 @@ The tracking issue for this feature is: [#86918]
 "##,
     },
     Lint {
-        label: "pointer_is_aligned",
-        description: r##"# `pointer_is_aligned`
+        label: "pointer_is_aligned_to",
+        description: r##"# `pointer_is_aligned_to`
 
 The tracking issue for this feature is: [#96284]
 
@@ -7319,6 +7461,32 @@ The tracking issue for this feature is: [#86656]
 [#86656]: https://github.com/rust-lang/rust/issues/86656
 
 ------------------------
+"##,
+    },
+    Lint {
+        label: "postfix_match",
+        description: r##"# `postfix-match`
+
+`postfix-match` adds the feature for matching upon values postfix
+the expressions that generate the values.
+
+```rust,edition2021
+#![feature(postfix_match)]
+
+enum Foo {
+    Bar,
+    Baz
+}
+
+fn get_foo() -> Foo {
+    Foo::Bar
+}
+
+get_foo().match {
+    Foo::Bar => {},
+    Foo::Baz => panic!(),
+}
+```
 "##,
     },
     Lint {
@@ -7329,6 +7497,17 @@ The tracking issue for this feature is: [#44839]
 
 [#44839]: https://github.com/rust-lang/rust/issues/44839
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "precise_capturing",
+        description: r##"# `precise_capturing`
+
+The tracking issue for this feature is: [#123432]
+
+[#123432]: https://github.com/rust-lang/rust/issues/123432
+
 ------------------------
 "##,
     },
@@ -7369,28 +7548,6 @@ The tracking issue for this feature is: [#44839]
 
 This feature is internal to the Rust compiler and is not intended for general use.
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "proc_macro_byte_character",
-        description: r##"# `proc_macro_byte_character`
-
-The tracking issue for this feature is: [#115268]
-
-[#115268]: https://github.com/rust-lang/rust/issues/115268
-
-------------------------
-"##,
-    },
-    Lint {
-        label: "proc_macro_c_str_literals",
-        description: r##"# `proc_macro_c_str_literals`
-
-The tracking issue for this feature is: [#119750]
-
-[#119750]: https://github.com/rust-lang/rust/issues/119750
-
 ------------------------
 "##,
     },
@@ -7519,12 +7676,23 @@ This feature is internal to the Rust compiler and is not intended for general us
 "##,
     },
     Lint {
-        label: "ptr_alignment_type",
-        description: r##"# `ptr_alignment_type`
+        label: "ptr_alignment_type",
+        description: r##"# `ptr_alignment_type`
+
+The tracking issue for this feature is: [#102070]
+
+[#102070]: https://github.com/rust-lang/rust/issues/102070
+
+------------------------
+"##,
+    },
+    Lint {
+        label: "ptr_as_ref_unchecked",
+        description: r##"# `ptr_as_ref_unchecked`
 
-The tracking issue for this feature is: [#102070]
+The tracking issue for this feature is: [#122034]
 
-[#102070]: https://github.com/rust-lang/rust/issues/102070
+[#122034]: https://github.com/rust-lang/rust/issues/122034
 
 ------------------------
 "##,
@@ -7579,17 +7747,6 @@ The tracking issue for this feature is: [#95892]
 
 [#95892]: https://github.com/rust-lang/rust/issues/95892
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "ptr_to_from_bits",
-        description: r##"# `ptr_to_from_bits`
-
-The tracking issue for this feature is: [#91126]
-
-[#91126]: https://github.com/rust-lang/rust/issues/91126
-
 ------------------------
 "##,
     },
@@ -7683,6 +7840,28 @@ The tracking issue for this feature is: [#121440]
 
 [#121440]: https://github.com/rust-lang/rust/issues/121440
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "ref_pat_eat_one_layer_2024",
+        description: r##"# `ref_pat_eat_one_layer_2024`
+
+The tracking issue for this feature is: [#123076]
+
+[#123076]: https://github.com/rust-lang/rust/issues/123076
+
+------------------------
+"##,
+    },
+    Lint {
+        label: "ref_pat_eat_one_layer_2024_structural",
+        description: r##"# `ref_pat_eat_one_layer_2024_structural`
+
+The tracking issue for this feature is: [#123076]
+
+[#123076]: https://github.com/rust-lang/rust/issues/123076
+
 ------------------------
 "##,
     },
@@ -7737,6 +7916,24 @@ The tracking issue for this feature is: [#27731]
 This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
 
 ------------------------
+"##,
+    },
+    Lint {
+        label: "result_ffi_guarantees",
+        description: r##"# `result_ffi_guarantees`
+
+The tracking issue for this feature is: [#110503]
+
+[#110503]: https://github.com/rust-lang/rust/issues/110503
+
+------------------------
+
+This feature adds the possibility of using `Result<T, E>` in FFI if T's niche
+value can be used to describe E or vise-versa.
+
+See [RFC 3391] for more information.
+
+[RFC 3391]: https://github.com/rust-lang/rfcs/blob/master/text/3391-result_ffi_guarantees.md
 "##,
     },
     Lint {
@@ -7880,6 +8077,15 @@ error: size: Size { raw: 16 }
 
 error: aborting due to 2 previous errors
 ```
+"##,
+    },
+    Lint {
+        label: "rustc_encodable_decodable",
+        description: r##"# `rustc_encodable_decodable`
+
+This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
+
+------------------------
 "##,
     },
     Lint {
@@ -7921,17 +8127,6 @@ The tracking issue for this feature is: [#101730]
 
 This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "seek_seek_relative",
-        description: r##"# `seek_seek_relative`
-
-The tracking issue for this feature is: [#117374]
-
-[#117374]: https://github.com/rust-lang/rust/issues/117374
-
 ------------------------
 "##,
     },
@@ -7976,6 +8171,17 @@ The tracking issue for this feature is: [#56975]
 
 [#56975]: https://github.com/rust-lang/rust/issues/56975
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "shorter_tail_lifetimes",
+        description: r##"# `shorter_tail_lifetimes`
+
+The tracking issue for this feature is: [#123739]
+
+[#123739]: https://github.com/rust-lang/rust/issues/123739
+
 ------------------------
 "##,
     },
@@ -8029,17 +8235,6 @@ The tracking issue for this feature is: [#27747]
 
 [#27747]: https://github.com/rust-lang/rust/issues/27747
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "slice_flatten",
-        description: r##"# `slice_flatten`
-
-The tracking issue for this feature is: [#95629]
-
-[#95629]: https://github.com/rust-lang/rust/issues/95629
-
 ------------------------
 "##,
     },
@@ -8113,17 +8308,6 @@ The tracking issue for this feature is: [#74265]
 
 [#74265]: https://github.com/rust-lang/rust/issues/74265
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "slice_ptr_len",
-        description: r##"# `slice_ptr_len`
-
-The tracking issue for this feature is: [#71146]
-
-[#71146]: https://github.com/rust-lang/rust/issues/71146
-
 ------------------------
 "##,
     },
@@ -8135,17 +8319,6 @@ The tracking issue for this feature is: [#76393]
 
 [#76393]: https://github.com/rust-lang/rust/issues/76393
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "slice_split_at_unchecked",
-        description: r##"# `slice_split_at_unchecked`
-
-The tracking issue for this feature is: [#76014]
-
-[#76014]: https://github.com/rust-lang/rust/issues/76014
-
 ------------------------
 "##,
     },
@@ -8199,24 +8372,6 @@ The tracking issue for this feature is: [#93396]
 
 [#93396]: https://github.com/rust-lang/rust/issues/93396
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "sort_internals",
-        description: r##"# `sort_internals`
-
-This feature is internal to the Rust compiler and is not intended for general use.
-
-------------------------
-"##,
-    },
-    Lint {
-        label: "spec_option_partial_eq",
-        description: r##"# `spec_option_partial_eq`
-
-This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
-
 ------------------------
 "##,
     },
@@ -8250,17 +8405,6 @@ The tracking issue for this feature is: [#96137]
 
 [#96137]: https://github.com/rust-lang/rust/issues/96137
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "split_at_checked",
-        description: r##"# `split_at_checked`
-
-The tracking issue for this feature is: [#119128]
-
-[#119128]: https://github.com/rust-lang/rust/issues/119128
-
 ------------------------
 "##,
     },
@@ -8697,9 +8841,9 @@ The tracking issue for this feature is: [#96256]
         label: "tcplistener_into_incoming",
         description: r##"# `tcplistener_into_incoming`
 
-The tracking issue for this feature is: [#88339]
+The tracking issue for this feature is: [#88373]
 
-[#88339]: https://github.com/rust-lang/rust/issues/88339
+[#88373]: https://github.com/rust-lang/rust/issues/88373
 
 ------------------------
 "##,
@@ -9319,6 +9463,17 @@ The tracking issue for this feature is: [#96374]
 
 [#96374]: https://github.com/rust-lang/rust/issues/96374
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "try_with_capacity",
+        description: r##"# `try_with_capacity`
+
+The tracking issue for this feature is: [#91913]
+
+[#91913]: https://github.com/rust-lang/rust/issues/91913
+
 ------------------------
 "##,
     },
@@ -9391,12 +9546,10 @@ fn main () {
 "##,
     },
     Lint {
-        label: "type_privacy_lints",
-        description: r##"# `type_privacy_lints`
-
-The tracking issue for this feature is: [#48054]
+        label: "ub_checks",
+        description: r##"# `ub_checks`
 
-[#48054]: https://github.com/rust-lang/rust/issues/48054
+This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
 
 ------------------------
 "##,
@@ -9439,17 +9592,6 @@ extern "rust-call" fn add_args(args: (u32, u32)) -> u32 {
 
 fn main() {}
 ```
-"##,
-    },
-    Lint {
-        label: "unchecked_math",
-        description: r##"# `unchecked_math`
-
-The tracking issue for this feature is: [#85122]
-
-[#85122]: https://github.com/rust-lang/rust/issues/85122
-
-------------------------
 "##,
     },
     Lint {
@@ -9514,72 +9656,6 @@ The tracking issue for this feature is: [#96467]
 [#96467]: https://github.com/rust-lang/rust/issues/96467
 
 ------------------------
-"##,
-    },
-    Lint {
-        label: "unix_sigpipe",
-        description: r##"# `unix_sigpipe`
-
-The tracking issue for this feature is: [#97889]
-
-[#97889]: https://github.com/rust-lang/rust/issues/97889
-
----
-
-The `#[unix_sigpipe = "..."]` attribute on `fn main()` can be used to specify how libstd shall setup `SIGPIPE` on Unix platforms before invoking `fn main()`. This attribute is ignored on non-Unix targets. There are three variants:
-* `#[unix_sigpipe = "inherit"]`
-* `#[unix_sigpipe = "sig_dfl"]`
-* `#[unix_sigpipe = "sig_ign"]`
-
-## `#[unix_sigpipe = "inherit"]`
-
-Leave `SIGPIPE` untouched before entering `fn main()`. Unless the parent process has changed the default `SIGPIPE` handler from `SIG_DFL` to something else, this will behave the same as `#[unix_sigpipe = "sig_dfl"]`.
-
-## `#[unix_sigpipe = "sig_dfl"]`
-
-Set the `SIGPIPE` handler to `SIG_DFL`. This will result in your program getting killed if it tries to write to a closed pipe. This is normally what you want if your program produces textual output.
-
-### Example
-
-```rust,no_run
-#![feature(unix_sigpipe)]
-#[unix_sigpipe = "sig_dfl"]
-fn main() { loop { println!("hello world"); } }
-```
-
-```bash
-% ./main | head -n 1
-hello world
-```
-
-## `#[unix_sigpipe = "sig_ign"]`
-
-Set the `SIGPIPE` handler to `SIG_IGN` before invoking `fn main()`. This will result in `ErrorKind::BrokenPipe` errors if you program tries to write to a closed pipe. This is normally what you want if you for example write socket servers, socket clients, or pipe peers.
-
-This is what libstd has done by default since 2014. (However, see the note on child processes below.)
-
-### Example
-
-```rust,no_run
-#![feature(unix_sigpipe)]
-#[unix_sigpipe = "sig_ign"]
-fn main() { loop { println!("hello world"); } }
-```
-
-```bash
-% ./main | head -n 1
-hello world
-thread 'main' panicked at 'failed printing to stdout: Broken pipe (os error 32)', library/std/src/io/stdio.rs:1016:9
-note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
-```
-
-### Note on child processes
-
-When spawning child processes, the legacy Rust behavior if `#[unix_sigpipe]` is not specified is to
-reset `SIGPIPE` to `SIG_DFL`.
-
-If `#[unix_sigpipe = "..."]` is specified, no matter what its value is, the signal disposition of
-`SIGPIPE` is no longer reset. This means that the child inherits the parent's `SIGPIPE` behavior.
 "##,
     },
     Lint {
@@ -9612,6 +9688,17 @@ The tracking issue for this feature is: [#49804]
 
 [#49804]: https://github.com/rust-lang/rust/issues/49804
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "unsafe_attributes",
+        description: r##"# `unsafe_attributes`
+
+The tracking issue for this feature is: [#123757]
+
+[#123757]: https://github.com/rust-lang/rust/issues/123757
+
 ------------------------
 "##,
     },
@@ -9623,6 +9710,17 @@ The tracking issue for this feature is: [#111645]
 
 [#111645]: https://github.com/rust-lang/rust/issues/111645
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "unsafe_extern_blocks",
+        description: r##"# `unsafe_extern_blocks`
+
+The tracking issue for this feature is: [#123743]
+
+[#123743]: https://github.com/rust-lang/rust/issues/123743
+
 ------------------------
 "##,
     },
@@ -9917,17 +10015,6 @@ The tracking issue for this feature is: [#94919]
 
 [#94919]: https://github.com/rust-lang/rust/issues/94919
 
-------------------------
-"##,
-    },
-    Lint {
-        label: "utf8_chunks",
-        description: r##"# `utf8_chunks`
-
-The tracking issue for this feature is: [#99543]
-
-[#99543]: https://github.com/rust-lang/rust/issues/99543
-
 ------------------------
 "##,
     },
@@ -9950,6 +10037,17 @@ The tracking issue for this feature is: [#65816]
 
 [#65816]: https://github.com/rust-lang/rust/issues/65816
 
+------------------------
+"##,
+    },
+    Lint {
+        label: "vec_pop_if",
+        description: r##"# `vec_pop_if`
+
+The tracking issue for this feature is: [#122741]
+
+[#122741]: https://github.com/rust-lang/rust/issues/122741
+
 ------------------------
 "##,
     },
@@ -10225,18 +10323,12 @@ checked."##,
         description: r##"Checks for usage of the `#[allow]` attribute and suggests replacing it with
 the `#[expect]` (See [RFC 2383](https://rust-lang.github.io/rfcs/2383-lint-reasons.html))
 
-The expect attribute is still unstable and requires the `lint_reasons`
-on nightly. It can be enabled by adding `#![feature(lint_reasons)]` to
-the crate root.
-
 This lint only warns outer attributes (`#[allow]`), as inner attributes
 (`#![allow]`) are usually used to enable or disable lints on a global scale."##,
     },
     Lint {
         label: "clippy::allow_attributes_without_reason",
-        description: r##"Checks for attributes that allow lints without a reason.
-
-(This requires the `lint_reasons` feature)"##,
+        description: r##"Checks for attributes that allow lints without a reason."##,
     },
     Lint {
         label: "clippy::almost_complete_range",
@@ -10309,6 +10401,10 @@ patterns."##,
         label: "clippy::assign_ops",
         description: r##"Nothing. This lint has been deprecated."##,
     },
+    Lint {
+        label: "clippy::assigning_clones",
+        description: r##"Checks for code like `foo = bar.clone();`"##,
+    },
     Lint {
         label: "clippy::async_yields_async",
         description: r##"Checks for async blocks that yield values of types
@@ -10402,8 +10498,8 @@ Check the [Box documentation](https://doc.rust-lang.org/std/boxed/index.html) fo
     },
     Lint {
         label: "clippy::box_default",
-        description: r##"checks for `Box::new(T::default())`, which is better written as
-`Box::<T>::default()`."##,
+        description: r##"checks for `Box::new(Default::default())`, which can be written as
+`Box::default()`."##,
     },
     Lint {
         label: "clippy::boxed_local",
@@ -10419,6 +10515,11 @@ moved out of the blocks."##,
         label: "clippy::builtin_type_shadow",
         description: r##"Warns if a generic shadows a built-in type."##,
     },
+    Lint {
+        label: "clippy::byte_char_slices",
+        description: r##"Checks for hard to read slices of byte characters, that could be more easily expressed as a
+byte string."##,
+    },
     Lint {
         label: "clippy::bytes_count_to_len",
         description: r##"It checks for `str::bytes().count()` and suggests replacing it with
@@ -10507,6 +10608,10 @@ defined, this lint is `Allow` by default."##,
         label: "clippy::cast_slice_from_raw_parts",
         description: r##"Checks for a raw slice being cast to a slice pointer"##,
     },
+    Lint {
+        label: "clippy::cfg_not_test",
+        description: r##"Checks for usage of `cfg` that excludes code from `test` builds. (i.e., `#{cfg(not(test))]`)"##,
+    },
     Lint {
         label: "clippy::char_lit_as_u8",
         description: r##"Checks for expressions where a character literal is cast
@@ -10595,6 +10700,10 @@ rewritten with `match` and `cmp`."##,
         description: r##"Checks for comparing to an empty slice such as `` or `[]`,
 and suggests using `.is_empty()` where applicable."##,
     },
+    Lint {
+        label: "clippy::const_is_empty",
+        description: r##"It identifies calls to `.is_empty()` on constant values."##,
+    },
     Lint {
         label: "clippy::copy_iterator",
         description: r##"Checks for types that implement `Copy` as well as
@@ -10747,6 +10856,13 @@ types are defined in the clippy.toml file."##,
         label: "clippy::diverging_sub_expression",
         description: r##"Checks for diverging calls that are not match arms or
 statements."##,
+    },
+    Lint {
+        label: "clippy::doc_lazy_continuation",
+        description: r##"In CommonMark Markdown, the language used to write doc comments, a
+paragraph nested within a list or block quote does not need any line
+after the first one to be indented or marked. The specification calls
+this a lazy paragraph continuation."##,
     },
     Lint {
         label: "clippy::doc_link_with_quotes",
@@ -10796,6 +10912,10 @@ marked as `#[must_use]`."##,
         description: r##"Checks for function arguments having the similar names
 differing by an underscore."##,
     },
+    Lint {
+        label: "clippy::duplicated_attributes",
+        description: r##"Checks for attributes that appear two or more times."##,
+    },
     Lint {
         label: "clippy::duration_subsec",
         description: r##"Checks for calculation of subsecond microseconds or milliseconds
@@ -10818,11 +10938,11 @@ but without a final `else` branch."##,
     },
     Lint {
         label: "clippy::empty_enum",
-        description: r##"Checks for `enum`s with no variants.
+        description: r##"Checks for `enum`s with no variants, which therefore are uninhabited types
+(cannot be instantiated).
 
-As of this writing, the `never_type` is still a
-nightly-only experimental API. Therefore, this lint is only triggered
-if the `never_type` is enabled."##,
+As of this writing, the `never_type` is still a nightly-only experimental API.
+Therefore, this lint is only triggered if `#![feature(never_type)]` is enabled."##,
     },
     Lint {
         label: "clippy::empty_enum_variants_with_brackets",
@@ -10891,7 +11011,7 @@ than that supported by the underlying type."##,
     },
     Lint {
         label: "clippy::exhaustive_structs",
-        description: r##"Warns on any exported `structs`s that are not tagged `#[non_exhaustive]`"##,
+        description: r##"Warns on any exported `struct`s that are not tagged `#[non_exhaustive]`"##,
     },
     Lint {
         label: "clippy::exit",
@@ -10964,6 +11084,11 @@ anywhere else."##,
         label: "clippy::field_reassign_with_default",
         description: r##"Checks for immediate reassignment of fields initialized
 with Default::default()."##,
+    },
+    Lint {
+        label: "clippy::field_scoped_visibility_modifiers",
+        description: r##"Checks for usage of scoped visibility modifiers, like `pub(crate)`, on fields. These
+make a field visible within a scope between public and private."##,
     },
     Lint {
         label: "clippy::filetype_is_file",
@@ -11297,6 +11422,11 @@ unless the annotated function is empty or simply panics."##,
         description: r##"Checks for usage of `x >= y + 1` or `x - 1 >= y` (and `<=`) in a block"##,
     },
     Lint { label: "clippy::integer_division", description: r##"Checks for division of integers"## },
+    Lint {
+        label: "clippy::integer_division_remainder_used",
+        description: r##"Checks for the usage of division (`/`) and remainder (`%`) operations
+when performed on any integer types using the default `Div` and `Rem` trait implementations."##,
+    },
     Lint {
         label: "clippy::into_iter_on_ref",
         description: r##"Checks for `into_iter` calls on references which should be replaced by `iter`
@@ -11354,12 +11484,12 @@ create a `Vec`."##,
     Lint {
         label: "clippy::iter_filter_is_ok",
         description: r##"Checks for usage of `.filter(Result::is_ok)` that may be replaced with a `.flatten()` call.
-This lint will require additional changes to the follow-up calls as it appects the type."##,
+This lint will require additional changes to the follow-up calls as it affects the type."##,
     },
     Lint {
         label: "clippy::iter_filter_is_some",
         description: r##"Checks for usage of `.filter(Option::is_some)` that may be replaced with a `.flatten()` call.
-This lint will require additional changes to the follow-up calls as it appects the type."##,
+This lint will require additional changes to the follow-up calls as it affects the type."##,
     },
     Lint {
         label: "clippy::iter_kv_map",
@@ -11377,8 +11507,8 @@ ignoring either the keys or values."##,
     },
     Lint {
         label: "clippy::iter_nth",
-        description: r##"Checks for usage of `.iter().nth()` (and the related
-`.iter_mut().nth()`) on standard library types with *O*(1) element access."##,
+        description: r##"Checks for usage of `.iter().nth()`/`.iter_mut().nth()` on standard library types that have
+equivalent `.get()`/`.get_mut()` methods."##,
     },
     Lint {
         label: "clippy::iter_nth_zero",
@@ -11457,7 +11587,7 @@ are too large."##,
     Lint {
         label: "clippy::large_include_file",
         description: r##"Checks for the inclusion of large files via `include_bytes!()`
-and `include_str!()`"##,
+or `include_str!()`."##,
     },
     Lint {
         label: "clippy::large_stack_arrays",
@@ -11480,6 +11610,11 @@ the argument type is `Copy` and large enough to be worth considering
 passing by reference. Does not trigger if the function is being exported,
 because that might induce API breakage, if the parameter is declared as mutable,
 or if the argument is a `self`."##,
+    },
+    Lint {
+        label: "clippy::legacy_numeric_constants",
+        description: r##"Checks for usage of `<integer>::max_value()`, `std::<integer>::MAX`,
+`std::<float>::EPSILON`, etc."##,
     },
     Lint {
         label: "clippy::len_without_is_empty",
@@ -11547,6 +11682,10 @@ is resolved."##,
         description: r##"Checks for whole number float literals that
 cannot be represented as the underlying type without loss."##,
     },
+    Lint {
+        label: "clippy::macro_metavars_in_unsafe",
+        description: r##"Looks for macros that expand metavariables in an unsafe block."##,
+    },
     Lint {
         label: "clippy::macro_use_imports",
         description: r##"Checks for `#[macro_use] use...`."##,
@@ -11568,7 +11707,12 @@ cannot be represented as the underlying type without loss."##,
         description: r##"Checks for usage of `std::mem::size_of::<T>() * 8` when
 `T::BITS` is available."##,
     },
-    Lint { label: "clippy::manual_c_str_literals", description: r##""## },
+    Lint {
+        label: "clippy::manual_c_str_literals",
+        description: r##"Checks for the manual creation of C strings (a string with a `NUL` byte at the end), either
+through one of the `CStr` constructor functions, or more plainly by calling `.as_ptr()`
+on a (byte) string literal with a hardcoded `\\0` byte at the end."##,
+    },
     Lint {
         label: "clippy::manual_clamp",
         description: r##"Identifies good opportunities for a clamp function from std or core, and suggests using it."##,
@@ -11602,6 +11746,10 @@ where only the `Some` or `Ok` variant of the iterator element is used."##,
 
 [`BuildHasher::hash_one`]: https://doc.rust-lang.org/std/hash/trait.BuildHasher.html#method.hash_one"##,
     },
+    Lint {
+        label: "clippy::manual_inspect",
+        description: r##"Checks for uses of `map` which return the original item."##,
+    },
     Lint {
         label: "clippy::manual_instant_elapsed",
         description: r##"Lints subtraction between `Instant::now()` and another `Instant`."##,
@@ -11622,7 +11770,10 @@ ascii range"##,
         description: r##"Checks for manual `is_infinite` reimplementations
 (i.e., `x == <float>::INFINITY || x == <float>::NEG_INFINITY`)."##,
     },
-    Lint { label: "clippy::manual_is_variant_and", description: r##""## },
+    Lint {
+        label: "clippy::manual_is_variant_and",
+        description: r##"Checks for usage of `option.map(f).unwrap_or_default()` and `result.map(f).unwrap_or_default()` where f is a function or closure that returns the `bool` type."##,
+    },
     Lint {
         label: "clippy::manual_let_else",
         description: r##"Warn of cases where `let...else` could be used"##,
@@ -11653,6 +11804,10 @@ slices that could be optimized by having a memcpy."##,
         label: "clippy::manual_ok_or",
         description: r##"Finds patterns that reimplement `Option::ok_or`."##,
     },
+    Lint {
+        label: "clippy::manual_pattern_char_comparison",
+        description: r##"Checks for manual `char` comparison in string patterns"##,
+    },
     Lint {
         label: "clippy::manual_range_contains",
         description: r##"Checks for expressions like `x >= 3 && x < 8` that could
@@ -11672,6 +11827,11 @@ of `x.rem_euclid(4)`."##,
         label: "clippy::manual_retain",
         description: r##"Checks for code to be replaced by `.retain()`."##,
     },
+    Lint {
+        label: "clippy::manual_rotate",
+        description: r##"It detects manual bit rotations that could be rewritten using standard
+functions `rotate_left` or `rotate_right`."##,
+    },
     Lint {
         label: "clippy::manual_saturating_arithmetic",
         description: r##"Checks for `.checked_add/sub(x).unwrap_or(MAX/MIN)`."##,
@@ -11713,6 +11873,11 @@ Note that the lint will not be emitted in const blocks, as the suggestion would
         label: "clippy::manual_unwrap_or",
         description: r##"Finds patterns that reimplement `Option::unwrap_or` or `Result::unwrap_or`."##,
     },
+    Lint {
+        label: "clippy::manual_unwrap_or_default",
+        description: r##"Checks if a `match` or `if let` expression can be simplified using
+`.unwrap_or_default()`."##,
+    },
     Lint {
         label: "clippy::manual_while_let_some",
         description: r##"Looks for loops that check for emptiness of a `Vec` in the condition and pop an element
@@ -11818,10 +11983,7 @@ and take drastic actions like `panic!`."##,
     },
     Lint {
         label: "clippy::maybe_misused_cfg",
-        description: r##"Checks for `#[cfg(features = ...)]` and suggests to replace it with
-`#[cfg(feature = ...)]`.
-
-It also checks if `cfg(test)` was misspelled."##,
+        description: r##"Nothing. This lint has been deprecated."##,
     },
     Lint {
         label: "clippy::mem_forget",
@@ -11845,7 +12007,7 @@ and `mem::replace(&mut _, mem::zeroed())`."##,
     },
     Lint {
         label: "clippy::min_ident_chars",
-        description: r##"Checks for idents which comprise of a single letter.
+        description: r##"Checks for identifiers which consist of a single character (or fewer than the configured threshold).
 
 Note: This lint can be very noisy when enabled; it may be desirable to only enable it
 temporarily."##,
@@ -11861,7 +12023,7 @@ used to clamp values, but switched so that the result is constant."##,
     },
     Lint {
         label: "clippy::mismatched_target_os",
-        description: r##"Checks for cfg attributes having operating systems used in target family position."##,
+        description: r##"Nothing. This lint has been deprecated."##,
     },
     Lint {
         label: "clippy::mismatching_type_param_order",
@@ -11892,9 +12054,13 @@ is greater than the largest index used to index into the slice."##,
         label: "clippy::missing_const_for_fn",
         description: r##"Suggests the use of `const` in functions and methods where possible."##,
     },
+    Lint {
+        label: "clippy::missing_const_for_thread_local",
+        description: r##"Suggests to use `const` in `thread_local!` macro if possible."##,
+    },
     Lint {
         label: "clippy::missing_docs_in_private_items",
-        description: r##"Warns if there is missing doc for any private documentable item"##,
+        description: r##"Warns if there is missing documentation for any private documentable item."##,
     },
     Lint {
         label: "clippy::missing_enforced_import_renames",
@@ -11932,12 +12098,11 @@ unsafe functions and warns if there is no `# Safety` section."##,
     Lint {
         label: "clippy::missing_trait_methods",
         description: r##"Checks if a provided method is used implicitly by a trait
-implementation. A usage example would be a wrapper where every method
-should perform some operation before delegating to the inner type's
-implementation.
-
-This lint should typically be enabled on a specific trait `impl` item
-rather than globally."##,
+implementation."##,
+    },
+    Lint {
+        label: "clippy::missing_transmute_annotations",
+        description: r##"Checks if transmute calls have all generics specified."##,
     },
     Lint {
         label: "clippy::mistyped_literal_suffixes",
@@ -11945,7 +12110,7 @@ rather than globally."##,
     },
     Lint {
         label: "clippy::mixed_attributes_style",
-        description: r##"Checks that an item has only one kind of attributes."##,
+        description: r##"Checks for items that have the same kind of attributes with mixed styles (inner/outer)."##,
     },
     Lint {
         label: "clippy::mixed_case_hex_literals",
@@ -11960,7 +12125,7 @@ order of sub-expressions."##,
     },
     Lint {
         label: "clippy::mod_module_files",
-        description: r##"Checks that module layout uses only self named module files, bans `mod.rs` files."##,
+        description: r##"Checks that module layout uses only self named module files; bans `mod.rs` files."##,
     },
     Lint {
         label: "clippy::module_inception",
@@ -12026,7 +12191,7 @@ reference with the output lifetime, this lint will not trigger."##,
     },
     Lint {
         label: "clippy::mut_range_bound",
-        description: r##"Checks for loops which have a range bound that is a mutable variable"##,
+        description: r##"Checks for loops with a range bound that is a mutable variable."##,
     },
     Lint {
         label: "clippy::mutable_key_type",
@@ -12075,9 +12240,13 @@ value with `&ref`."##,
     },
     Lint {
         label: "clippy::needless_borrows_for_generic_args",
-        description: r##"Checks for borrow operations (`&`) that used as a generic argument to a
+        description: r##"Checks for borrow operations (`&`) that are used as a generic argument to a
 function when the borrowed value could be used."##,
     },
+    Lint {
+        label: "clippy::needless_character_iteration",
+        description: r##"Checks if an iterator is used to check if a string is ascii."##,
+    },
     Lint {
         label: "clippy::needless_collect",
         description: r##"Checks for functions collecting an iterator when collect
@@ -12119,6 +12288,10 @@ relying on lifetime elision."##,
         description: r##"Checks for unnecessary `match` or match-like `if let` returns for `Option` and `Result`
 when function signatures are the same."##,
     },
+    Lint {
+        label: "clippy::needless_maybe_sized",
+        description: r##"Lints `?Sized` bounds applied to type parameters that cannot be unsized"##,
+    },
     Lint {
         label: "clippy::needless_option_as_deref",
         description: r##"Checks for no-op uses of `Option::{as_deref, as_deref_mut}`,
@@ -12138,7 +12311,7 @@ superfluous."##,
         description: r##"Check if a `&mut` function argument is actually used mutably.
 
 Be careful if the function is publicly reexported as it would break compatibility with
-users of this function."##,
+users of this function, when the users pass this function as an argument."##,
     },
     Lint {
         label: "clippy::needless_pass_by_value",
@@ -12370,7 +12543,7 @@ can be eliminated."##,
     Lint { label: "clippy::panic", description: r##"Checks for usage of `panic!`."## },
     Lint {
         label: "clippy::panic_in_result_fn",
-        description: r##"Checks for usage of `panic!` or assertions in a function of type result."##,
+        description: r##"Checks for usage of `panic!` or assertions in a function whose return type is `Result`."##,
     },
     Lint {
         label: "clippy::panicking_unwrap",
@@ -12378,7 +12551,7 @@ can be eliminated."##,
     },
     Lint {
         label: "clippy::partial_pub_fields",
-        description: r##"Checks whether partial fields of a struct are public.
+        description: r##"Checks whether some but not all fields of a `struct` are public.
 
 Either make all fields of a type public, or make none of them public"##,
     },
@@ -12685,6 +12858,11 @@ and suggests `std::ptr::from_ref` and `std::ptr::from_mut` instead."##,
         label: "clippy::regex_macro",
         description: r##"Nothing. This lint has been deprecated."##,
     },
+    Lint {
+        label: "clippy::renamed_function_params",
+        description: r##"Lints when the name of function parameters from trait impl is
+different than its default implementation."##,
+    },
     Lint {
         label: "clippy::repeat_once",
         description: r##"Checks for usage of `.repeat(1)` and suggest the following method for each types.
@@ -12766,8 +12944,8 @@ one from a trait, another not from trait."##,
     },
     Lint {
         label: "clippy::seek_from_current",
-        description: r##"Checks an argument of `seek` method of `Seek` trait
-and if it start seek from `SeekFrom::Current(0)`, suggests `stream_position` instead."##,
+        description: r##"Checks if the `seek` method of the `Seek` trait is called with `SeekFrom::Current(0)`,
+and if it is, suggests using `stream_position` instead."##,
     },
     Lint {
         label: "clippy::seek_to_start_instead_of_rewind",
@@ -12810,6 +12988,11 @@ see the `unseparated_literal_suffix` lint."##,
         label: "clippy::serde_api_misuse",
         description: r##"Checks for misuses of the serde API."##,
     },
+    Lint {
+        label: "clippy::set_contains_or_insert",
+        description: r##"Checks for usage of `contains` to see if a value is not
+present on `HashSet` followed by a `insert`."##,
+    },
     Lint {
         label: "clippy::shadow_reuse",
         description: r##"Checks for bindings that shadow other bindings already in
@@ -13100,10 +13283,6 @@ either `ignore`, `no_run` or `compile_fail`."##,
         description: r##"Triggers when a testing function (marked with the `#[test]` attribute) isn't inside a testing module
 (marked with `#[cfg(test)]`)."##,
     },
-    Lint {
-        label: "clippy::thread_local_initializer_can_be_made_const",
-        description: r##"Suggests to use `const` in `thread_local!` macro if possible."##,
-    },
     Lint {
         label: "clippy::to_digit_is_some",
         description: r##"Checks for `.to_digit(..).is_some()` on `char`s."##,
@@ -13163,7 +13342,7 @@ syntax specifications for trait bounds are used simultaneously."##,
     },
     Lint {
         label: "clippy::transmute_int_to_non_zero",
-        description: r##"Checks for transmutes from integers to `NonZero*` types, and suggests their `new_unchecked`
+        description: r##"Checks for transmutes from `T` to `NonZero<T>`, and suggests the `new_unchecked`
 method instead."##,
     },
     Lint {
@@ -13223,7 +13402,7 @@ declarations above a certain complexity threshold."##,
     },
     Lint {
         label: "clippy::type_id_on_box",
-        description: r##"Looks for calls to `<Box<dyn Any> as Any>::type_id`."##,
+        description: r##"Looks for calls to `.type_id()` on a `Box<dyn _>`."##,
     },
     Lint {
         label: "clippy::type_repetition_in_bounds",
@@ -13235,8 +13414,8 @@ declarations above a certain complexity threshold."##,
     },
     Lint {
         label: "clippy::unconditional_recursion",
-        description: r##"Checks that there isn't an infinite recursion in `PartialEq` trait
-implementation."##,
+        description: r##"Checks that there isn't an infinite recursion in trait
+implementations."##,
     },
     Lint {
         label: "clippy::undocumented_unsafe_blocks",
@@ -13379,6 +13558,12 @@ simpler code:
         label: "clippy::unnecessary_map_on_constructor",
         description: r##"Suggests removing the use of a `map()` (or `map_err()`) method when an `Option` or `Result`
 is being constructed."##,
+    },
+    Lint {
+        label: "clippy::unnecessary_min_or_max",
+        description: r##"Checks for unnecessary calls to `min()` or `max()` in the following cases
+- Either both side is constant
+- One side is clearly larger than the other, like i32::MIN and an i32 variable"##,
     },
     Lint {
         label: "clippy::unnecessary_mut_passed",
@@ -13587,11 +13772,21 @@ lint attributes.
 
 This lint permits lint attributes for lints emitted on the items themself.
 For `use` items these lints are:
+* ambiguous_glob_reexports
+* dead_code
 * deprecated
+* hidden_glob_reexports
 * unreachable_pub
-* unused_imports
+* unused
+* unused_braces
+* unused_import_braces
+* clippy::disallowed_types
 * clippy::enum_glob_use
 * clippy::macro_use_imports
+* clippy::module_name_repetitions
+* clippy::redundant_pub_crate
+* clippy::single_component_path_imports
+* clippy::unsafe_removed_from_name
 * clippy::wildcard_imports
 
 For `extern crate` items these lints are:
@@ -13655,6 +13850,10 @@ to `trailing_zeros`"##,
         label: "clippy::waker_clone_wake",
         description: r##"Checks for usage of `waker.clone().wake()`"##,
     },
+    Lint {
+        label: "clippy::while_float",
+        description: r##"Checks for while loops comparing floating point values."##,
+    },
     Lint {
         label: "clippy::while_immutable_condition",
         description: r##"Checks whether variables used within while loop condition
@@ -13746,6 +13945,11 @@ architecture."##,
         label: "clippy::zero_ptr",
         description: r##"Catch casts from `0` to some pointer type"##,
     },
+    Lint {
+        label: "clippy::zero_repeat_side_effects",
+        description: r##"Checks for array or vec initializations which call a function or method,
+but which have a repeat count of zero."##,
+    },
     Lint {
         label: "clippy::zero_sized_map_values",
         description: r##"Checks for maps with zero-sized value types anywhere in the code."##,
@@ -13773,7 +13977,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
     LintGroup {
         lint: Lint {
             label: "clippy::complexity",
-            description: r##"lint group for: clippy::bind_instead_of_map, clippy::bool_comparison, clippy::borrow_deref_ref, clippy::borrowed_box, clippy::bytes_count_to_len, clippy::char_lit_as_u8, clippy::clone_on_copy, clippy::crosspointer_transmute, clippy::default_constructed_unit_structs, clippy::deprecated_cfg_attr, clippy::deref_addrof, clippy::derivable_impls, clippy::diverging_sub_expression, clippy::double_comparisons, clippy::double_parens, clippy::duration_subsec, clippy::excessive_nesting, clippy::explicit_auto_deref, clippy::explicit_counter_loop, clippy::explicit_write, clippy::extra_unused_lifetimes, clippy::extra_unused_type_parameters, clippy::filter_map_identity, clippy::filter_next, clippy::flat_map_identity, clippy::get_last_with_len, clippy::identity_op, clippy::implied_bounds_in_impls, clippy::inspect_for_each, clippy::int_plus_one, clippy::iter_count, clippy::iter_kv_map, clippy::let_with_type_underscore, clippy::manual_filter, clippy::manual_filter_map, clippy::manual_find, clippy::manual_find_map, clippy::manual_flatten, clippy::manual_hash_one, clippy::manual_main_separator_str, clippy::manual_range_patterns, clippy::manual_rem_euclid, clippy::manual_slice_size_calculation, clippy::manual_split_once, clippy::manual_strip, clippy::manual_swap, clippy::manual_unwrap_or, clippy::map_flatten, clippy::map_identity, clippy::match_as_ref, clippy::match_single_binding, clippy::needless_arbitrary_self_type, clippy::needless_bool, clippy::needless_bool_assign, clippy::needless_borrowed_reference, clippy::needless_if, clippy::needless_lifetimes, clippy::needless_match, clippy::needless_option_as_deref, clippy::needless_option_take, clippy::needless_question_mark, clippy::needless_splitn, clippy::needless_update, clippy::neg_cmp_op_on_partial_ord, clippy::no_effect, clippy::nonminimal_bool, clippy::only_used_in_recursion, clippy::option_as_ref_deref, clippy::option_filter_map, clippy::option_map_unit_fn, clippy::or_then_unwrap, clippy::overflow_check_conditional, clippy::partialeq_ne_impl, clippy::precedence, clippy::ptr_offset_with_cast, clippy::range_zip_with_len, clippy::redundant_as_str, clippy::redundant_async_block, clippy::redundant_at_rest_pattern, clippy::redundant_closure_call, clippy::redundant_guards, clippy::redundant_slicing, clippy::repeat_once, clippy::reserve_after_initialization, clippy::result_filter_map, clippy::result_map_unit_fn, clippy::search_is_some, clippy::seek_from_current, clippy::seek_to_start_instead_of_rewind, clippy::short_circuit_statement, clippy::single_element_loop, clippy::skip_while_next, clippy::string_from_utf8_as_bytes, clippy::strlen_on_c_strings, clippy::temporary_assignment, clippy::too_many_arguments, clippy::transmute_bytes_to_str, clippy::transmute_float_to_int, clippy::transmute_int_to_bool, clippy::transmute_int_to_char, clippy::transmute_int_to_float, clippy::transmute_int_to_non_zero, clippy::transmute_num_to_bytes, clippy::transmute_ptr_to_ref, clippy::transmutes_expressible_as_ptr_casts, clippy::type_complexity, clippy::unit_arg, clippy::unnecessary_cast, clippy::unnecessary_filter_map, clippy::unnecessary_find_map, clippy::unnecessary_literal_unwrap, clippy::unnecessary_map_on_constructor, clippy::unnecessary_operation, clippy::unnecessary_sort_by, clippy::unnecessary_unwrap, clippy::unneeded_wildcard_pattern, clippy::unused_format_specs, clippy::useless_asref, clippy::useless_conversion, clippy::useless_format, clippy::useless_transmute, clippy::vec_box, clippy::while_let_loop, clippy::wildcard_in_or_patterns, clippy::zero_divided_by_zero, clippy::zero_prefixed_literal"##,
+            description: r##"lint group for: clippy::bind_instead_of_map, clippy::bool_comparison, clippy::borrow_deref_ref, clippy::borrowed_box, clippy::bytes_count_to_len, clippy::char_lit_as_u8, clippy::clone_on_copy, clippy::crosspointer_transmute, clippy::default_constructed_unit_structs, clippy::deprecated_cfg_attr, clippy::deref_addrof, clippy::derivable_impls, clippy::diverging_sub_expression, clippy::double_comparisons, clippy::double_parens, clippy::duration_subsec, clippy::excessive_nesting, clippy::explicit_auto_deref, clippy::explicit_counter_loop, clippy::explicit_write, clippy::extra_unused_lifetimes, clippy::extra_unused_type_parameters, clippy::filter_map_identity, clippy::filter_next, clippy::flat_map_identity, clippy::get_last_with_len, clippy::identity_op, clippy::implied_bounds_in_impls, clippy::inspect_for_each, clippy::int_plus_one, clippy::iter_count, clippy::iter_kv_map, clippy::let_with_type_underscore, clippy::manual_clamp, clippy::manual_filter, clippy::manual_filter_map, clippy::manual_find, clippy::manual_find_map, clippy::manual_flatten, clippy::manual_hash_one, clippy::manual_inspect, clippy::manual_main_separator_str, clippy::manual_range_patterns, clippy::manual_rem_euclid, clippy::manual_slice_size_calculation, clippy::manual_split_once, clippy::manual_strip, clippy::manual_swap, clippy::manual_unwrap_or, clippy::map_flatten, clippy::map_identity, clippy::match_as_ref, clippy::match_single_binding, clippy::needless_arbitrary_self_type, clippy::needless_bool, clippy::needless_bool_assign, clippy::needless_borrowed_reference, clippy::needless_if, clippy::needless_lifetimes, clippy::needless_match, clippy::needless_option_as_deref, clippy::needless_option_take, clippy::needless_question_mark, clippy::needless_splitn, clippy::needless_update, clippy::neg_cmp_op_on_partial_ord, clippy::no_effect, clippy::nonminimal_bool, clippy::only_used_in_recursion, clippy::option_as_ref_deref, clippy::option_filter_map, clippy::option_map_unit_fn, clippy::or_then_unwrap, clippy::overflow_check_conditional, clippy::partialeq_ne_impl, clippy::precedence, clippy::ptr_offset_with_cast, clippy::range_zip_with_len, clippy::redundant_as_str, clippy::redundant_async_block, clippy::redundant_at_rest_pattern, clippy::redundant_closure_call, clippy::redundant_guards, clippy::redundant_slicing, clippy::repeat_once, clippy::reserve_after_initialization, clippy::result_filter_map, clippy::result_map_unit_fn, clippy::search_is_some, clippy::seek_from_current, clippy::seek_to_start_instead_of_rewind, clippy::short_circuit_statement, clippy::single_element_loop, clippy::skip_while_next, clippy::string_from_utf8_as_bytes, clippy::strlen_on_c_strings, clippy::temporary_assignment, clippy::too_many_arguments, clippy::transmute_bytes_to_str, clippy::transmute_float_to_int, clippy::transmute_int_to_bool, clippy::transmute_int_to_char, clippy::transmute_int_to_float, clippy::transmute_int_to_non_zero, clippy::transmute_num_to_bytes, clippy::transmute_ptr_to_ref, clippy::transmutes_expressible_as_ptr_casts, clippy::type_complexity, clippy::unit_arg, clippy::unnecessary_cast, clippy::unnecessary_filter_map, clippy::unnecessary_find_map, clippy::unnecessary_literal_unwrap, clippy::unnecessary_map_on_constructor, clippy::unnecessary_min_or_max, clippy::unnecessary_operation, clippy::unnecessary_sort_by, clippy::unnecessary_unwrap, clippy::unneeded_wildcard_pattern, clippy::unused_format_specs, clippy::useless_asref, clippy::useless_conversion, clippy::useless_format, clippy::useless_transmute, clippy::vec_box, clippy::while_let_loop, clippy::wildcard_in_or_patterns, clippy::zero_divided_by_zero, clippy::zero_prefixed_literal"##,
         },
         children: &[
             "clippy::bind_instead_of_map",
@@ -13809,12 +14013,14 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::iter_count",
             "clippy::iter_kv_map",
             "clippy::let_with_type_underscore",
+            "clippy::manual_clamp",
             "clippy::manual_filter",
             "clippy::manual_filter_map",
             "clippy::manual_find",
             "clippy::manual_find_map",
             "clippy::manual_flatten",
             "clippy::manual_hash_one",
+            "clippy::manual_inspect",
             "clippy::manual_main_separator_str",
             "clippy::manual_range_patterns",
             "clippy::manual_rem_euclid",
@@ -13888,6 +14094,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::unnecessary_find_map",
             "clippy::unnecessary_literal_unwrap",
             "clippy::unnecessary_map_on_constructor",
+            "clippy::unnecessary_min_or_max",
             "clippy::unnecessary_operation",
             "clippy::unnecessary_sort_by",
             "clippy::unnecessary_unwrap",
@@ -13907,7 +14114,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
     LintGroup {
         lint: Lint {
             label: "clippy::correctness",
-            description: r##"lint group for: clippy::absurd_extreme_comparisons, clippy::almost_swapped, clippy::approx_constant, clippy::async_yields_async, clippy::bad_bit_mask, clippy::cast_slice_different_sizes, clippy::deprecated_semver, clippy::derive_ord_xor_partial_ord, clippy::derived_hash_with_manual_eq, clippy::eager_transmute, clippy::enum_clike_unportable_variant, clippy::eq_op, clippy::erasing_op, clippy::fn_address_comparisons, clippy::if_let_mutex, clippy::ifs_same_cond, clippy::impl_hash_borrow_with_str_and_bytes, clippy::impossible_comparisons, clippy::ineffective_bit_mask, clippy::infinite_iter, clippy::inherent_to_string_shadow_display, clippy::inline_fn_without_body, clippy::invalid_null_ptr_usage, clippy::invalid_regex, clippy::invisible_characters, clippy::iter_next_loop, clippy::iter_skip_zero, clippy::iterator_step_by_zero, clippy::let_underscore_lock, clippy::lint_groups_priority, clippy::match_str_case_mismatch, clippy::mem_replace_with_uninit, clippy::min_max, clippy::mismatched_target_os, clippy::mistyped_literal_suffixes, clippy::modulo_one, clippy::mut_from_ref, clippy::never_loop, clippy::non_octal_unix_permissions, clippy::nonsensical_open_options, clippy::not_unsafe_ptr_arg_deref, clippy::option_env_unwrap, clippy::out_of_bounds_indexing, clippy::overly_complex_bool_expr, clippy::panicking_unwrap, clippy::possible_missing_comma, clippy::read_line_without_trim, clippy::recursive_format_impl, clippy::redundant_comparisons, clippy::redundant_locals, clippy::reversed_empty_ranges, clippy::self_assignment, clippy::serde_api_misuse, clippy::size_of_in_element_count, clippy::suspicious_splitn, clippy::transmute_null_to_fn, clippy::transmuting_null, clippy::uninit_assumed_init, clippy::uninit_vec, clippy::unit_cmp, clippy::unit_hash, clippy::unit_return_expecting_ord, clippy::unsound_collection_transmute, clippy::unused_io_amount, clippy::useless_attribute, clippy::vec_resize_to_zero, clippy::while_immutable_condition, clippy::wrong_transmute, clippy::zst_offset"##,
+            description: r##"lint group for: clippy::absurd_extreme_comparisons, clippy::almost_swapped, clippy::approx_constant, clippy::async_yields_async, clippy::bad_bit_mask, clippy::cast_slice_different_sizes, clippy::deprecated_semver, clippy::derive_ord_xor_partial_ord, clippy::derived_hash_with_manual_eq, clippy::eager_transmute, clippy::enum_clike_unportable_variant, clippy::eq_op, clippy::erasing_op, clippy::fn_address_comparisons, clippy::if_let_mutex, clippy::ifs_same_cond, clippy::impl_hash_borrow_with_str_and_bytes, clippy::impossible_comparisons, clippy::ineffective_bit_mask, clippy::infinite_iter, clippy::inherent_to_string_shadow_display, clippy::inline_fn_without_body, clippy::invalid_null_ptr_usage, clippy::invalid_regex, clippy::invisible_characters, clippy::iter_next_loop, clippy::iter_skip_zero, clippy::iterator_step_by_zero, clippy::let_underscore_lock, clippy::lint_groups_priority, clippy::match_str_case_mismatch, clippy::mem_replace_with_uninit, clippy::min_max, clippy::mistyped_literal_suffixes, clippy::modulo_one, clippy::mut_from_ref, clippy::never_loop, clippy::non_octal_unix_permissions, clippy::nonsensical_open_options, clippy::not_unsafe_ptr_arg_deref, clippy::option_env_unwrap, clippy::out_of_bounds_indexing, clippy::overly_complex_bool_expr, clippy::panicking_unwrap, clippy::possible_missing_comma, clippy::read_line_without_trim, clippy::recursive_format_impl, clippy::redundant_comparisons, clippy::redundant_locals, clippy::reversed_empty_ranges, clippy::self_assignment, clippy::serde_api_misuse, clippy::size_of_in_element_count, clippy::suspicious_splitn, clippy::transmute_null_to_fn, clippy::transmuting_null, clippy::uninit_assumed_init, clippy::uninit_vec, clippy::unit_cmp, clippy::unit_hash, clippy::unit_return_expecting_ord, clippy::unsound_collection_transmute, clippy::unused_io_amount, clippy::useless_attribute, clippy::vec_resize_to_zero, clippy::while_immutable_condition, clippy::wrong_transmute, clippy::zst_offset"##,
         },
         children: &[
             "clippy::absurd_extreme_comparisons",
@@ -13943,7 +14150,6 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::match_str_case_mismatch",
             "clippy::mem_replace_with_uninit",
             "clippy::min_max",
-            "clippy::mismatched_target_os",
             "clippy::mistyped_literal_suffixes",
             "clippy::modulo_one",
             "clippy::mut_from_ref",
@@ -13984,7 +14190,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
     LintGroup {
         lint: Lint {
             label: "clippy::deprecated",
-            description: r##"lint group for: clippy::assign_ops, clippy::extend_from_slice, clippy::filter_map, clippy::find_map, clippy::if_let_redundant_pattern_matching, clippy::misaligned_transmute, clippy::pub_enum_variant_names, clippy::range_step_by_zero, clippy::regex_macro, clippy::replace_consts, clippy::should_assert_eq, clippy::unsafe_vector_initialization, clippy::unstable_as_mut_slice, clippy::unstable_as_slice, clippy::unused_collect, clippy::wrong_pub_self_convention"##,
+            description: r##"lint group for: clippy::assign_ops, clippy::extend_from_slice, clippy::filter_map, clippy::find_map, clippy::if_let_redundant_pattern_matching, clippy::maybe_misused_cfg, clippy::misaligned_transmute, clippy::mismatched_target_os, clippy::pub_enum_variant_names, clippy::range_step_by_zero, clippy::regex_macro, clippy::replace_consts, clippy::should_assert_eq, clippy::unsafe_vector_initialization, clippy::unstable_as_mut_slice, clippy::unstable_as_slice, clippy::unused_collect, clippy::wrong_pub_self_convention"##,
         },
         children: &[
             "clippy::assign_ops",
@@ -13992,7 +14198,9 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::filter_map",
             "clippy::find_map",
             "clippy::if_let_redundant_pattern_matching",
+            "clippy::maybe_misused_cfg",
             "clippy::misaligned_transmute",
+            "clippy::mismatched_target_os",
             "clippy::pub_enum_variant_names",
             "clippy::range_step_by_zero",
             "clippy::regex_macro",
@@ -14008,7 +14216,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
     LintGroup {
         lint: Lint {
             label: "clippy::nursery",
-            description: r##"lint group for: clippy::as_ptr_cast_mut, clippy::branches_sharing_code, clippy::clear_with_drain, clippy::cognitive_complexity, clippy::collection_is_never_read, clippy::debug_assert_with_mut_call, clippy::derive_partial_eq_without_eq, clippy::empty_line_after_doc_comments, clippy::empty_line_after_outer_attr, clippy::equatable_if_let, clippy::fallible_impl_from, clippy::future_not_send, clippy::imprecise_flops, clippy::iter_on_empty_collections, clippy::iter_on_single_items, clippy::iter_with_drain, clippy::large_stack_frames, clippy::manual_clamp, clippy::missing_const_for_fn, clippy::mutex_integer, clippy::needless_collect, clippy::needless_pass_by_ref_mut, clippy::non_send_fields_in_send_ty, clippy::nonstandard_macro_braces, clippy::option_if_let_else, clippy::or_fun_call, clippy::path_buf_push_overwrite, clippy::read_zero_byte_vec, clippy::readonly_write_lock, clippy::redundant_clone, clippy::redundant_pub_crate, clippy::significant_drop_in_scrutinee, clippy::significant_drop_tightening, clippy::string_lit_as_bytes, clippy::suboptimal_flops, clippy::suspicious_operation_groupings, clippy::trailing_empty_array, clippy::trait_duplication_in_bounds, clippy::transmute_undefined_repr, clippy::trivial_regex, clippy::tuple_array_conversions, clippy::type_repetition_in_bounds, clippy::uninhabited_references, clippy::unnecessary_struct_initialization, clippy::unused_peekable, clippy::unused_rounding, clippy::use_self, clippy::useless_let_if_seq"##,
+            description: r##"lint group for: clippy::as_ptr_cast_mut, clippy::branches_sharing_code, clippy::clear_with_drain, clippy::cognitive_complexity, clippy::collection_is_never_read, clippy::debug_assert_with_mut_call, clippy::derive_partial_eq_without_eq, clippy::empty_line_after_doc_comments, clippy::empty_line_after_outer_attr, clippy::equatable_if_let, clippy::fallible_impl_from, clippy::future_not_send, clippy::imprecise_flops, clippy::iter_on_empty_collections, clippy::iter_on_single_items, clippy::iter_with_drain, clippy::large_stack_frames, clippy::missing_const_for_fn, clippy::mutex_integer, clippy::needless_collect, clippy::needless_pass_by_ref_mut, clippy::non_send_fields_in_send_ty, clippy::nonstandard_macro_braces, clippy::option_if_let_else, clippy::or_fun_call, clippy::path_buf_push_overwrite, clippy::read_zero_byte_vec, clippy::redundant_clone, clippy::redundant_pub_crate, clippy::set_contains_or_insert, clippy::significant_drop_in_scrutinee, clippy::significant_drop_tightening, clippy::string_lit_as_bytes, clippy::suboptimal_flops, clippy::suspicious_operation_groupings, clippy::trailing_empty_array, clippy::trait_duplication_in_bounds, clippy::transmute_undefined_repr, clippy::trivial_regex, clippy::tuple_array_conversions, clippy::type_repetition_in_bounds, clippy::uninhabited_references, clippy::unnecessary_struct_initialization, clippy::unused_peekable, clippy::unused_rounding, clippy::use_self, clippy::useless_let_if_seq, clippy::while_float"##,
         },
         children: &[
             "clippy::as_ptr_cast_mut",
@@ -14028,7 +14236,6 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::iter_on_single_items",
             "clippy::iter_with_drain",
             "clippy::large_stack_frames",
-            "clippy::manual_clamp",
             "clippy::missing_const_for_fn",
             "clippy::mutex_integer",
             "clippy::needless_collect",
@@ -14039,9 +14246,9 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::or_fun_call",
             "clippy::path_buf_push_overwrite",
             "clippy::read_zero_byte_vec",
-            "clippy::readonly_write_lock",
             "clippy::redundant_clone",
             "clippy::redundant_pub_crate",
+            "clippy::set_contains_or_insert",
             "clippy::significant_drop_in_scrutinee",
             "clippy::significant_drop_tightening",
             "clippy::string_lit_as_bytes",
@@ -14059,14 +14266,16 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::unused_rounding",
             "clippy::use_self",
             "clippy::useless_let_if_seq",
+            "clippy::while_float",
         ],
     },
     LintGroup {
         lint: Lint {
             label: "clippy::pedantic",
-            description: r##"lint group for: clippy::bool_to_int_with_if, clippy::borrow_as_ptr, clippy::case_sensitive_file_extension_comparisons, clippy::cast_lossless, clippy::cast_possible_truncation, clippy::cast_possible_wrap, clippy::cast_precision_loss, clippy::cast_ptr_alignment, clippy::cast_sign_loss, clippy::checked_conversions, clippy::cloned_instead_of_copied, clippy::copy_iterator, clippy::default_trait_access, clippy::doc_link_with_quotes, clippy::doc_markdown, clippy::empty_enum, clippy::enum_glob_use, clippy::expl_impl_clone_on_copy, clippy::explicit_deref_methods, clippy::explicit_into_iter_loop, clippy::explicit_iter_loop, clippy::filter_map_next, clippy::flat_map_option, clippy::float_cmp, clippy::fn_params_excessive_bools, clippy::from_iter_instead_of_collect, clippy::if_not_else, clippy::ignored_unit_patterns, clippy::implicit_clone, clippy::implicit_hasher, clippy::inconsistent_struct_constructor, clippy::index_refutable_slice, clippy::inefficient_to_string, clippy::inline_always, clippy::into_iter_without_iter, clippy::invalid_upcast_comparisons, clippy::items_after_statements, clippy::iter_filter_is_ok, clippy::iter_filter_is_some, clippy::iter_not_returning_iterator, clippy::iter_without_into_iter, clippy::large_digit_groups, clippy::large_futures, clippy::large_stack_arrays, clippy::large_types_passed_by_value, clippy::linkedlist, clippy::macro_use_imports, clippy::manual_assert, clippy::manual_c_str_literals, clippy::manual_instant_elapsed, clippy::manual_is_variant_and, clippy::manual_let_else, clippy::manual_ok_or, clippy::manual_string_new, clippy::many_single_char_names, clippy::map_unwrap_or, clippy::match_bool, clippy::match_on_vec_items, clippy::match_same_arms, clippy::match_wild_err_arm, clippy::match_wildcard_for_single_variants, clippy::maybe_infinite_iter, clippy::mismatching_type_param_order, clippy::missing_errors_doc, clippy::missing_fields_in_debug, clippy::missing_panics_doc, clippy::module_name_repetitions, clippy::must_use_candidate, clippy::mut_mut, clippy::naive_bytecount, clippy::needless_bitwise_bool, clippy::needless_continue, clippy::needless_for_each, clippy::needless_pass_by_value, clippy::needless_raw_string_hashes, clippy::no_effect_underscore_binding, clippy::no_mangle_with_rust_abi, clippy::option_as_ref_cloned, clippy::option_option, clippy::ptr_as_ptr, clippy::ptr_cast_constness, clippy::pub_underscore_fields, clippy::range_minus_one, clippy::range_plus_one, clippy::redundant_closure_for_method_calls, clippy::redundant_else, clippy::ref_as_ptr, clippy::ref_binding_to_reference, clippy::ref_option_ref, clippy::return_self_not_must_use, clippy::same_functions_in_if_condition, clippy::semicolon_if_nothing_returned, clippy::should_panic_without_expect, clippy::similar_names, clippy::single_match_else, clippy::stable_sort_primitive, clippy::str_split_at_newline, clippy::string_add_assign, clippy::struct_excessive_bools, clippy::struct_field_names, clippy::too_many_lines, clippy::transmute_ptr_to_ptr, clippy::trivially_copy_pass_by_ref, clippy::unchecked_duration_subtraction, clippy::unicode_not_nfc, clippy::uninlined_format_args, clippy::unnecessary_box_returns, clippy::unnecessary_join, clippy::unnecessary_wraps, clippy::unnested_or_patterns, clippy::unreadable_literal, clippy::unsafe_derive_deserialize, clippy::unused_async, clippy::unused_self, clippy::used_underscore_binding, clippy::verbose_bit_mask, clippy::wildcard_imports, clippy::zero_sized_map_values"##,
+            description: r##"lint group for: clippy::assigning_clones, clippy::bool_to_int_with_if, clippy::borrow_as_ptr, clippy::case_sensitive_file_extension_comparisons, clippy::cast_lossless, clippy::cast_possible_truncation, clippy::cast_possible_wrap, clippy::cast_precision_loss, clippy::cast_ptr_alignment, clippy::cast_sign_loss, clippy::checked_conversions, clippy::cloned_instead_of_copied, clippy::copy_iterator, clippy::default_trait_access, clippy::doc_link_with_quotes, clippy::doc_markdown, clippy::empty_enum, clippy::enum_glob_use, clippy::expl_impl_clone_on_copy, clippy::explicit_deref_methods, clippy::explicit_into_iter_loop, clippy::explicit_iter_loop, clippy::filter_map_next, clippy::flat_map_option, clippy::float_cmp, clippy::fn_params_excessive_bools, clippy::from_iter_instead_of_collect, clippy::if_not_else, clippy::ignored_unit_patterns, clippy::implicit_clone, clippy::implicit_hasher, clippy::inconsistent_struct_constructor, clippy::index_refutable_slice, clippy::inefficient_to_string, clippy::inline_always, clippy::into_iter_without_iter, clippy::invalid_upcast_comparisons, clippy::items_after_statements, clippy::iter_filter_is_ok, clippy::iter_filter_is_some, clippy::iter_not_returning_iterator, clippy::iter_without_into_iter, clippy::large_digit_groups, clippy::large_futures, clippy::large_stack_arrays, clippy::large_types_passed_by_value, clippy::linkedlist, clippy::macro_use_imports, clippy::manual_assert, clippy::manual_c_str_literals, clippy::manual_instant_elapsed, clippy::manual_is_variant_and, clippy::manual_let_else, clippy::manual_ok_or, clippy::manual_string_new, clippy::many_single_char_names, clippy::map_unwrap_or, clippy::match_bool, clippy::match_on_vec_items, clippy::match_same_arms, clippy::match_wild_err_arm, clippy::match_wildcard_for_single_variants, clippy::maybe_infinite_iter, clippy::mismatching_type_param_order, clippy::missing_errors_doc, clippy::missing_fields_in_debug, clippy::missing_panics_doc, clippy::module_name_repetitions, clippy::must_use_candidate, clippy::mut_mut, clippy::naive_bytecount, clippy::needless_bitwise_bool, clippy::needless_continue, clippy::needless_for_each, clippy::needless_pass_by_value, clippy::needless_raw_string_hashes, clippy::no_effect_underscore_binding, clippy::no_mangle_with_rust_abi, clippy::option_as_ref_cloned, clippy::option_option, clippy::ptr_as_ptr, clippy::ptr_cast_constness, clippy::pub_underscore_fields, clippy::range_minus_one, clippy::range_plus_one, clippy::redundant_closure_for_method_calls, clippy::redundant_else, clippy::ref_as_ptr, clippy::ref_binding_to_reference, clippy::ref_option_ref, clippy::return_self_not_must_use, clippy::same_functions_in_if_condition, clippy::semicolon_if_nothing_returned, clippy::should_panic_without_expect, clippy::similar_names, clippy::single_char_pattern, clippy::single_match_else, clippy::stable_sort_primitive, clippy::str_split_at_newline, clippy::string_add_assign, clippy::struct_excessive_bools, clippy::struct_field_names, clippy::too_many_lines, clippy::transmute_ptr_to_ptr, clippy::trivially_copy_pass_by_ref, clippy::unchecked_duration_subtraction, clippy::unicode_not_nfc, clippy::uninlined_format_args, clippy::unnecessary_box_returns, clippy::unnecessary_join, clippy::unnecessary_wraps, clippy::unnested_or_patterns, clippy::unreadable_literal, clippy::unsafe_derive_deserialize, clippy::unused_async, clippy::unused_self, clippy::used_underscore_binding, clippy::verbose_bit_mask, clippy::wildcard_imports, clippy::zero_sized_map_values"##,
         },
         children: &[
+            "clippy::assigning_clones",
             "clippy::bool_to_int_with_if",
             "clippy::borrow_as_ptr",
             "clippy::case_sensitive_file_extension_comparisons",
@@ -14161,6 +14370,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::semicolon_if_nothing_returned",
             "clippy::should_panic_without_expect",
             "clippy::similar_names",
+            "clippy::single_char_pattern",
             "clippy::single_match_else",
             "clippy::stable_sort_primitive",
             "clippy::str_split_at_newline",
@@ -14190,11 +14400,10 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
     LintGroup {
         lint: Lint {
             label: "clippy::perf",
-            description: r##"lint group for: clippy::box_collection, clippy::box_default, clippy::boxed_local, clippy::cmp_owned, clippy::collapsible_str_replace, clippy::drain_collect, clippy::expect_fun_call, clippy::extend_with_drain, clippy::format_collect, clippy::format_in_format_args, clippy::iter_nth, clippy::iter_overeager_cloned, clippy::large_const_arrays, clippy::large_enum_variant, clippy::manual_memcpy, clippy::manual_retain, clippy::manual_str_repeat, clippy::manual_try_fold, clippy::map_entry, clippy::missing_spin_loop, clippy::redundant_allocation, clippy::result_large_err, clippy::single_char_pattern, clippy::slow_vector_initialization, clippy::thread_local_initializer_can_be_made_const, clippy::to_string_in_format_args, clippy::unnecessary_to_owned, clippy::useless_vec, clippy::vec_init_then_push, clippy::waker_clone_wake"##,
+            description: r##"lint group for: clippy::box_collection, clippy::boxed_local, clippy::cmp_owned, clippy::collapsible_str_replace, clippy::drain_collect, clippy::expect_fun_call, clippy::extend_with_drain, clippy::format_collect, clippy::format_in_format_args, clippy::iter_overeager_cloned, clippy::large_const_arrays, clippy::large_enum_variant, clippy::manual_memcpy, clippy::manual_retain, clippy::manual_str_repeat, clippy::manual_try_fold, clippy::map_entry, clippy::missing_const_for_thread_local, clippy::missing_spin_loop, clippy::readonly_write_lock, clippy::redundant_allocation, clippy::result_large_err, clippy::slow_vector_initialization, clippy::to_string_in_format_args, clippy::unnecessary_to_owned, clippy::useless_vec, clippy::vec_init_then_push, clippy::waker_clone_wake"##,
         },
         children: &[
             "clippy::box_collection",
-            "clippy::box_default",
             "clippy::boxed_local",
             "clippy::cmp_owned",
             "clippy::collapsible_str_replace",
@@ -14203,7 +14412,6 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::extend_with_drain",
             "clippy::format_collect",
             "clippy::format_in_format_args",
-            "clippy::iter_nth",
             "clippy::iter_overeager_cloned",
             "clippy::large_const_arrays",
             "clippy::large_enum_variant",
@@ -14212,12 +14420,12 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::manual_str_repeat",
             "clippy::manual_try_fold",
             "clippy::map_entry",
+            "clippy::missing_const_for_thread_local",
             "clippy::missing_spin_loop",
+            "clippy::readonly_write_lock",
             "clippy::redundant_allocation",
             "clippy::result_large_err",
-            "clippy::single_char_pattern",
             "clippy::slow_vector_initialization",
-            "clippy::thread_local_initializer_can_be_made_const",
             "clippy::to_string_in_format_args",
             "clippy::unnecessary_to_owned",
             "clippy::useless_vec",
@@ -14228,7 +14436,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
     LintGroup {
         lint: Lint {
             label: "clippy::restriction",
-            description: r##"lint group for: clippy::absolute_paths, clippy::alloc_instead_of_core, clippy::allow_attributes, clippy::allow_attributes_without_reason, clippy::arithmetic_side_effects, clippy::as_conversions, clippy::as_underscore, clippy::assertions_on_result_states, clippy::big_endian_bytes, clippy::clone_on_ref_ptr, clippy::create_dir, clippy::dbg_macro, clippy::decimal_literal_representation, clippy::default_numeric_fallback, clippy::default_union_representation, clippy::deref_by_slicing, clippy::disallowed_script_idents, clippy::else_if_without_else, clippy::empty_drop, clippy::empty_enum_variants_with_brackets, clippy::empty_structs_with_brackets, clippy::error_impl_error, clippy::exhaustive_enums, clippy::exhaustive_structs, clippy::exit, clippy::expect_used, clippy::filetype_is_file, clippy::float_arithmetic, clippy::float_cmp_const, clippy::fn_to_numeric_cast_any, clippy::format_push_string, clippy::get_unwrap, clippy::host_endian_bytes, clippy::if_then_some_else_none, clippy::impl_trait_in_params, clippy::implicit_return, clippy::indexing_slicing, clippy::infinite_loop, clippy::inline_asm_x86_att_syntax, clippy::inline_asm_x86_intel_syntax, clippy::integer_division, clippy::iter_over_hash_type, clippy::large_include_file, clippy::let_underscore_must_use, clippy::let_underscore_untyped, clippy::little_endian_bytes, clippy::lossy_float_literal, clippy::map_err_ignore, clippy::mem_forget, clippy::min_ident_chars, clippy::missing_assert_message, clippy::missing_asserts_for_indexing, clippy::missing_docs_in_private_items, clippy::missing_inline_in_public_items, clippy::missing_trait_methods, clippy::mixed_read_write_in_expression, clippy::mod_module_files, clippy::modulo_arithmetic, clippy::multiple_inherent_impl, clippy::multiple_unsafe_ops_per_block, clippy::mutex_atomic, clippy::needless_raw_strings, clippy::non_ascii_literal, clippy::panic, clippy::panic_in_result_fn, clippy::partial_pub_fields, clippy::pattern_type_mismatch, clippy::print_stderr, clippy::print_stdout, clippy::pub_use, clippy::pub_with_shorthand, clippy::pub_without_shorthand, clippy::question_mark_used, clippy::rc_buffer, clippy::rc_mutex, clippy::redundant_type_annotations, clippy::ref_patterns, clippy::rest_pat_in_fully_bound_structs, clippy::same_name_method, clippy::self_named_module_files, clippy::semicolon_inside_block, clippy::semicolon_outside_block, clippy::separated_literal_suffix, clippy::shadow_reuse, clippy::shadow_same, clippy::shadow_unrelated, clippy::single_call_fn, clippy::single_char_lifetime_names, clippy::std_instead_of_alloc, clippy::std_instead_of_core, clippy::str_to_string, clippy::string_add, clippy::string_lit_chars_any, clippy::string_slice, clippy::string_to_string, clippy::suspicious_xor_used_as_pow, clippy::tests_outside_test_module, clippy::todo, clippy::try_err, clippy::undocumented_unsafe_blocks, clippy::unimplemented, clippy::unnecessary_safety_comment, clippy::unnecessary_safety_doc, clippy::unnecessary_self_imports, clippy::unneeded_field_pattern, clippy::unreachable, clippy::unseparated_literal_suffix, clippy::unwrap_in_result, clippy::unwrap_used, clippy::use_debug, clippy::verbose_file_reads, clippy::wildcard_enum_match_arm"##,
+            description: r##"lint group for: clippy::absolute_paths, clippy::alloc_instead_of_core, clippy::allow_attributes, clippy::allow_attributes_without_reason, clippy::arithmetic_side_effects, clippy::as_conversions, clippy::as_underscore, clippy::assertions_on_result_states, clippy::big_endian_bytes, clippy::cfg_not_test, clippy::clone_on_ref_ptr, clippy::create_dir, clippy::dbg_macro, clippy::decimal_literal_representation, clippy::default_numeric_fallback, clippy::default_union_representation, clippy::deref_by_slicing, clippy::disallowed_script_idents, clippy::else_if_without_else, clippy::empty_drop, clippy::empty_enum_variants_with_brackets, clippy::empty_structs_with_brackets, clippy::error_impl_error, clippy::exhaustive_enums, clippy::exhaustive_structs, clippy::exit, clippy::expect_used, clippy::field_scoped_visibility_modifiers, clippy::filetype_is_file, clippy::float_arithmetic, clippy::float_cmp_const, clippy::fn_to_numeric_cast_any, clippy::format_push_string, clippy::get_unwrap, clippy::host_endian_bytes, clippy::if_then_some_else_none, clippy::impl_trait_in_params, clippy::implicit_return, clippy::indexing_slicing, clippy::infinite_loop, clippy::inline_asm_x86_att_syntax, clippy::inline_asm_x86_intel_syntax, clippy::integer_division, clippy::integer_division_remainder_used, clippy::iter_over_hash_type, clippy::large_include_file, clippy::let_underscore_must_use, clippy::let_underscore_untyped, clippy::little_endian_bytes, clippy::lossy_float_literal, clippy::map_err_ignore, clippy::mem_forget, clippy::min_ident_chars, clippy::missing_assert_message, clippy::missing_asserts_for_indexing, clippy::missing_docs_in_private_items, clippy::missing_inline_in_public_items, clippy::missing_trait_methods, clippy::mixed_read_write_in_expression, clippy::mod_module_files, clippy::modulo_arithmetic, clippy::multiple_inherent_impl, clippy::multiple_unsafe_ops_per_block, clippy::mutex_atomic, clippy::needless_raw_strings, clippy::non_ascii_literal, clippy::panic, clippy::panic_in_result_fn, clippy::partial_pub_fields, clippy::pattern_type_mismatch, clippy::print_stderr, clippy::print_stdout, clippy::pub_use, clippy::pub_with_shorthand, clippy::pub_without_shorthand, clippy::question_mark_used, clippy::rc_buffer, clippy::rc_mutex, clippy::redundant_type_annotations, clippy::ref_patterns, clippy::renamed_function_params, clippy::rest_pat_in_fully_bound_structs, clippy::same_name_method, clippy::self_named_module_files, clippy::semicolon_inside_block, clippy::semicolon_outside_block, clippy::separated_literal_suffix, clippy::shadow_reuse, clippy::shadow_same, clippy::shadow_unrelated, clippy::single_call_fn, clippy::single_char_lifetime_names, clippy::std_instead_of_alloc, clippy::std_instead_of_core, clippy::str_to_string, clippy::string_add, clippy::string_lit_chars_any, clippy::string_slice, clippy::string_to_string, clippy::suspicious_xor_used_as_pow, clippy::tests_outside_test_module, clippy::todo, clippy::try_err, clippy::undocumented_unsafe_blocks, clippy::unimplemented, clippy::unnecessary_safety_comment, clippy::unnecessary_safety_doc, clippy::unnecessary_self_imports, clippy::unneeded_field_pattern, clippy::unreachable, clippy::unseparated_literal_suffix, clippy::unwrap_in_result, clippy::unwrap_used, clippy::use_debug, clippy::verbose_file_reads, clippy::wildcard_enum_match_arm"##,
         },
         children: &[
             "clippy::absolute_paths",
@@ -14240,6 +14448,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::as_underscore",
             "clippy::assertions_on_result_states",
             "clippy::big_endian_bytes",
+            "clippy::cfg_not_test",
             "clippy::clone_on_ref_ptr",
             "clippy::create_dir",
             "clippy::dbg_macro",
@@ -14257,6 +14466,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::exhaustive_structs",
             "clippy::exit",
             "clippy::expect_used",
+            "clippy::field_scoped_visibility_modifiers",
             "clippy::filetype_is_file",
             "clippy::float_arithmetic",
             "clippy::float_cmp_const",
@@ -14272,6 +14482,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::inline_asm_x86_att_syntax",
             "clippy::inline_asm_x86_intel_syntax",
             "clippy::integer_division",
+            "clippy::integer_division_remainder_used",
             "clippy::iter_over_hash_type",
             "clippy::large_include_file",
             "clippy::let_underscore_must_use",
@@ -14308,6 +14519,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::rc_mutex",
             "clippy::redundant_type_annotations",
             "clippy::ref_patterns",
+            "clippy::renamed_function_params",
             "clippy::rest_pat_in_fully_bound_structs",
             "clippy::same_name_method",
             "clippy::self_named_module_files",
@@ -14348,7 +14560,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
     LintGroup {
         lint: Lint {
             label: "clippy::style",
-            description: r##"lint group for: clippy::assertions_on_constants, clippy::assign_op_pattern, clippy::blocks_in_conditions, clippy::bool_assert_comparison, clippy::borrow_interior_mutable_const, clippy::builtin_type_shadow, clippy::bytes_nth, clippy::chars_last_cmp, clippy::chars_next_cmp, clippy::cmp_null, clippy::collapsible_else_if, clippy::collapsible_if, clippy::collapsible_match, clippy::comparison_chain, clippy::comparison_to_empty, clippy::declare_interior_mutable_const, clippy::default_instead_of_iter_empty, clippy::disallowed_macros, clippy::disallowed_methods, clippy::disallowed_names, clippy::disallowed_types, clippy::double_must_use, clippy::double_neg, clippy::duplicate_underscore_argument, clippy::enum_variant_names, clippy::err_expect, clippy::excessive_precision, clippy::field_reassign_with_default, clippy::filter_map_bool_then, clippy::fn_to_numeric_cast, clippy::fn_to_numeric_cast_with_truncation, clippy::for_kv_map, clippy::from_over_into, clippy::from_str_radix_10, clippy::get_first, clippy::if_same_then_else, clippy::implicit_saturating_add, clippy::implicit_saturating_sub, clippy::inconsistent_digit_grouping, clippy::infallible_destructuring_match, clippy::inherent_to_string, clippy::init_numbered_fields, clippy::into_iter_on_ref, clippy::is_digit_ascii_radix, clippy::items_after_test_module, clippy::iter_cloned_collect, clippy::iter_next_slice, clippy::iter_nth_zero, clippy::iter_skip_next, clippy::just_underscores_and_digits, clippy::len_without_is_empty, clippy::len_zero, clippy::let_and_return, clippy::let_unit_value, clippy::main_recursion, clippy::manual_async_fn, clippy::manual_bits, clippy::manual_is_ascii_check, clippy::manual_is_finite, clippy::manual_is_infinite, clippy::manual_map, clippy::manual_next_back, clippy::manual_non_exhaustive, clippy::manual_range_contains, clippy::manual_saturating_arithmetic, clippy::manual_while_let_some, clippy::map_clone, clippy::map_collect_result_unit, clippy::match_like_matches_macro, clippy::match_overlapping_arm, clippy::match_ref_pats, clippy::match_result_ok, clippy::mem_replace_option_with_none, clippy::mem_replace_with_default, clippy::missing_enforced_import_renames, clippy::missing_safety_doc, clippy::mixed_case_hex_literals, clippy::module_inception, clippy::must_use_unit, clippy::mut_mutex_lock, clippy::needless_borrow, clippy::needless_borrows_for_generic_args, clippy::needless_doctest_main, clippy::needless_else, clippy::needless_late_init, clippy::needless_parens_on_range_literals, clippy::needless_pub_self, clippy::needless_range_loop, clippy::needless_return, clippy::needless_return_with_question_mark, clippy::neg_multiply, clippy::new_ret_no_self, clippy::new_without_default, clippy::non_minimal_cfg, clippy::obfuscated_if_else, clippy::ok_expect, clippy::op_ref, clippy::option_map_or_err_ok, clippy::option_map_or_none, clippy::partialeq_to_none, clippy::print_literal, clippy::print_with_newline, clippy::println_empty_string, clippy::ptr_arg, clippy::ptr_eq, clippy::question_mark, clippy::redundant_closure, clippy::redundant_field_names, clippy::redundant_pattern, clippy::redundant_pattern_matching, clippy::redundant_static_lifetimes, clippy::result_map_or_into_option, clippy::result_unit_err, clippy::same_item_push, clippy::self_named_constructors, clippy::should_implement_trait, clippy::single_char_add_str, clippy::single_component_path_imports, clippy::single_match, clippy::string_extend_chars, clippy::tabs_in_doc_comments, clippy::to_digit_is_some, clippy::to_string_trait_impl, clippy::toplevel_ref_arg, clippy::trim_split_whitespace, clippy::unnecessary_fallible_conversions, clippy::unnecessary_fold, clippy::unnecessary_lazy_evaluations, clippy::unnecessary_mut_passed, clippy::unnecessary_owned_empty_strings, clippy::unsafe_removed_from_name, clippy::unused_enumerate_index, clippy::unused_unit, clippy::unusual_byte_groupings, clippy::unwrap_or_default, clippy::upper_case_acronyms, clippy::while_let_on_iterator, clippy::write_literal, clippy::write_with_newline, clippy::writeln_empty_string, clippy::wrong_self_convention, clippy::zero_ptr"##,
+            description: r##"lint group for: clippy::assertions_on_constants, clippy::assign_op_pattern, clippy::blocks_in_conditions, clippy::bool_assert_comparison, clippy::borrow_interior_mutable_const, clippy::box_default, clippy::builtin_type_shadow, clippy::byte_char_slices, clippy::bytes_nth, clippy::chars_last_cmp, clippy::chars_next_cmp, clippy::cmp_null, clippy::collapsible_else_if, clippy::collapsible_if, clippy::collapsible_match, clippy::comparison_chain, clippy::comparison_to_empty, clippy::declare_interior_mutable_const, clippy::default_instead_of_iter_empty, clippy::disallowed_macros, clippy::disallowed_methods, clippy::disallowed_names, clippy::disallowed_types, clippy::doc_lazy_continuation, clippy::double_must_use, clippy::double_neg, clippy::duplicate_underscore_argument, clippy::enum_variant_names, clippy::err_expect, clippy::excessive_precision, clippy::field_reassign_with_default, clippy::filter_map_bool_then, clippy::fn_to_numeric_cast, clippy::fn_to_numeric_cast_with_truncation, clippy::for_kv_map, clippy::from_over_into, clippy::from_str_radix_10, clippy::get_first, clippy::if_same_then_else, clippy::implicit_saturating_add, clippy::implicit_saturating_sub, clippy::inconsistent_digit_grouping, clippy::infallible_destructuring_match, clippy::inherent_to_string, clippy::init_numbered_fields, clippy::into_iter_on_ref, clippy::is_digit_ascii_radix, clippy::items_after_test_module, clippy::iter_cloned_collect, clippy::iter_next_slice, clippy::iter_nth, clippy::iter_nth_zero, clippy::iter_skip_next, clippy::just_underscores_and_digits, clippy::legacy_numeric_constants, clippy::len_without_is_empty, clippy::len_zero, clippy::let_and_return, clippy::let_unit_value, clippy::main_recursion, clippy::manual_async_fn, clippy::manual_bits, clippy::manual_is_ascii_check, clippy::manual_is_finite, clippy::manual_is_infinite, clippy::manual_map, clippy::manual_next_back, clippy::manual_non_exhaustive, clippy::manual_pattern_char_comparison, clippy::manual_range_contains, clippy::manual_rotate, clippy::manual_saturating_arithmetic, clippy::manual_while_let_some, clippy::map_clone, clippy::map_collect_result_unit, clippy::match_like_matches_macro, clippy::match_overlapping_arm, clippy::match_ref_pats, clippy::match_result_ok, clippy::mem_replace_option_with_none, clippy::mem_replace_with_default, clippy::missing_enforced_import_renames, clippy::missing_safety_doc, clippy::mixed_attributes_style, clippy::mixed_case_hex_literals, clippy::module_inception, clippy::must_use_unit, clippy::mut_mutex_lock, clippy::needless_borrow, clippy::needless_borrows_for_generic_args, clippy::needless_doctest_main, clippy::needless_else, clippy::needless_late_init, clippy::needless_parens_on_range_literals, clippy::needless_pub_self, clippy::needless_range_loop, clippy::needless_return, clippy::needless_return_with_question_mark, clippy::neg_multiply, clippy::new_ret_no_self, clippy::new_without_default, clippy::non_minimal_cfg, clippy::obfuscated_if_else, clippy::ok_expect, clippy::op_ref, clippy::option_map_or_err_ok, clippy::option_map_or_none, clippy::partialeq_to_none, clippy::print_literal, clippy::print_with_newline, clippy::println_empty_string, clippy::ptr_arg, clippy::ptr_eq, clippy::question_mark, clippy::redundant_closure, clippy::redundant_field_names, clippy::redundant_pattern, clippy::redundant_pattern_matching, clippy::redundant_static_lifetimes, clippy::result_map_or_into_option, clippy::result_unit_err, clippy::same_item_push, clippy::self_named_constructors, clippy::should_implement_trait, clippy::single_char_add_str, clippy::single_component_path_imports, clippy::single_match, clippy::string_extend_chars, clippy::tabs_in_doc_comments, clippy::to_digit_is_some, clippy::to_string_trait_impl, clippy::toplevel_ref_arg, clippy::trim_split_whitespace, clippy::unnecessary_fallible_conversions, clippy::unnecessary_fold, clippy::unnecessary_lazy_evaluations, clippy::unnecessary_mut_passed, clippy::unnecessary_owned_empty_strings, clippy::unsafe_removed_from_name, clippy::unused_enumerate_index, clippy::unused_unit, clippy::unusual_byte_groupings, clippy::unwrap_or_default, clippy::upper_case_acronyms, clippy::while_let_on_iterator, clippy::write_literal, clippy::write_with_newline, clippy::writeln_empty_string, clippy::wrong_self_convention, clippy::zero_ptr"##,
         },
         children: &[
             "clippy::assertions_on_constants",
@@ -14356,7 +14568,9 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::blocks_in_conditions",
             "clippy::bool_assert_comparison",
             "clippy::borrow_interior_mutable_const",
+            "clippy::box_default",
             "clippy::builtin_type_shadow",
+            "clippy::byte_char_slices",
             "clippy::bytes_nth",
             "clippy::chars_last_cmp",
             "clippy::chars_next_cmp",
@@ -14372,6 +14586,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::disallowed_methods",
             "clippy::disallowed_names",
             "clippy::disallowed_types",
+            "clippy::doc_lazy_continuation",
             "clippy::double_must_use",
             "clippy::double_neg",
             "clippy::duplicate_underscore_argument",
@@ -14398,9 +14613,11 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::items_after_test_module",
             "clippy::iter_cloned_collect",
             "clippy::iter_next_slice",
+            "clippy::iter_nth",
             "clippy::iter_nth_zero",
             "clippy::iter_skip_next",
             "clippy::just_underscores_and_digits",
+            "clippy::legacy_numeric_constants",
             "clippy::len_without_is_empty",
             "clippy::len_zero",
             "clippy::let_and_return",
@@ -14414,7 +14631,9 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::manual_map",
             "clippy::manual_next_back",
             "clippy::manual_non_exhaustive",
+            "clippy::manual_pattern_char_comparison",
             "clippy::manual_range_contains",
+            "clippy::manual_rotate",
             "clippy::manual_saturating_arithmetic",
             "clippy::manual_while_let_some",
             "clippy::map_clone",
@@ -14427,6 +14646,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::mem_replace_with_default",
             "clippy::missing_enforced_import_renames",
             "clippy::missing_safety_doc",
+            "clippy::mixed_attributes_style",
             "clippy::mixed_case_hex_literals",
             "clippy::module_inception",
             "clippy::must_use_unit",
@@ -14498,7 +14718,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
     LintGroup {
         lint: Lint {
             label: "clippy::suspicious",
-            description: r##"lint group for: clippy::almost_complete_range, clippy::arc_with_non_send_sync, clippy::await_holding_invalid_type, clippy::await_holding_lock, clippy::await_holding_refcell_ref, clippy::blanket_clippy_restriction_lints, clippy::cast_abs_to_unsigned, clippy::cast_enum_constructor, clippy::cast_enum_truncation, clippy::cast_nan_to_int, clippy::cast_slice_from_raw_parts, clippy::crate_in_macro_def, clippy::deprecated_clippy_cfg_attr, clippy::drop_non_drop, clippy::duplicate_mod, clippy::empty_docs, clippy::empty_loop, clippy::float_equality_without_abs, clippy::forget_non_drop, clippy::four_forward_slashes, clippy::from_raw_with_void_ptr, clippy::incompatible_msrv, clippy::ineffective_open_options, clippy::iter_out_of_bounds, clippy::join_absolute_paths, clippy::let_underscore_future, clippy::lines_filter_map_ok, clippy::maybe_misused_cfg, clippy::misnamed_getters, clippy::misrefactored_assign_op, clippy::mixed_attributes_style, clippy::multi_assignments, clippy::multiple_bound_locations, clippy::mut_range_bound, clippy::mutable_key_type, clippy::no_effect_replace, clippy::non_canonical_clone_impl, clippy::non_canonical_partial_ord_impl, clippy::octal_escapes, clippy::path_ends_with_ext, clippy::permissions_set_readonly_false, clippy::print_in_format_impl, clippy::rc_clone_in_vec_init, clippy::repeat_vec_with_capacity, clippy::single_range_in_vec_init, clippy::size_of_ref, clippy::suspicious_arithmetic_impl, clippy::suspicious_assignment_formatting, clippy::suspicious_command_arg_space, clippy::suspicious_doc_comments, clippy::suspicious_else_formatting, clippy::suspicious_map, clippy::suspicious_op_assign_impl, clippy::suspicious_open_options, clippy::suspicious_to_owned, clippy::suspicious_unary_op_formatting, clippy::swap_ptr_to_ref, clippy::test_attr_in_doctest, clippy::type_id_on_box, clippy::unconditional_recursion, clippy::unnecessary_clippy_cfg, clippy::unnecessary_get_then_check, clippy::unnecessary_result_map_or_else"##,
+            description: r##"lint group for: clippy::almost_complete_range, clippy::arc_with_non_send_sync, clippy::await_holding_invalid_type, clippy::await_holding_lock, clippy::await_holding_refcell_ref, clippy::blanket_clippy_restriction_lints, clippy::cast_abs_to_unsigned, clippy::cast_enum_constructor, clippy::cast_enum_truncation, clippy::cast_nan_to_int, clippy::cast_slice_from_raw_parts, clippy::const_is_empty, clippy::crate_in_macro_def, clippy::deprecated_clippy_cfg_attr, clippy::drop_non_drop, clippy::duplicate_mod, clippy::duplicated_attributes, clippy::empty_docs, clippy::empty_loop, clippy::float_equality_without_abs, clippy::forget_non_drop, clippy::four_forward_slashes, clippy::from_raw_with_void_ptr, clippy::incompatible_msrv, clippy::ineffective_open_options, clippy::iter_out_of_bounds, clippy::join_absolute_paths, clippy::let_underscore_future, clippy::lines_filter_map_ok, clippy::macro_metavars_in_unsafe, clippy::manual_unwrap_or_default, clippy::misnamed_getters, clippy::misrefactored_assign_op, clippy::missing_transmute_annotations, clippy::multi_assignments, clippy::multiple_bound_locations, clippy::mut_range_bound, clippy::mutable_key_type, clippy::needless_character_iteration, clippy::needless_maybe_sized, clippy::no_effect_replace, clippy::non_canonical_clone_impl, clippy::non_canonical_partial_ord_impl, clippy::octal_escapes, clippy::path_ends_with_ext, clippy::permissions_set_readonly_false, clippy::print_in_format_impl, clippy::rc_clone_in_vec_init, clippy::repeat_vec_with_capacity, clippy::single_range_in_vec_init, clippy::size_of_ref, clippy::suspicious_arithmetic_impl, clippy::suspicious_assignment_formatting, clippy::suspicious_command_arg_space, clippy::suspicious_doc_comments, clippy::suspicious_else_formatting, clippy::suspicious_map, clippy::suspicious_op_assign_impl, clippy::suspicious_open_options, clippy::suspicious_to_owned, clippy::suspicious_unary_op_formatting, clippy::swap_ptr_to_ref, clippy::test_attr_in_doctest, clippy::type_id_on_box, clippy::unconditional_recursion, clippy::unnecessary_clippy_cfg, clippy::unnecessary_get_then_check, clippy::unnecessary_result_map_or_else, clippy::zero_repeat_side_effects"##,
         },
         children: &[
             "clippy::almost_complete_range",
@@ -14512,10 +14732,12 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::cast_enum_truncation",
             "clippy::cast_nan_to_int",
             "clippy::cast_slice_from_raw_parts",
+            "clippy::const_is_empty",
             "clippy::crate_in_macro_def",
             "clippy::deprecated_clippy_cfg_attr",
             "clippy::drop_non_drop",
             "clippy::duplicate_mod",
+            "clippy::duplicated_attributes",
             "clippy::empty_docs",
             "clippy::empty_loop",
             "clippy::float_equality_without_abs",
@@ -14528,14 +14750,17 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::join_absolute_paths",
             "clippy::let_underscore_future",
             "clippy::lines_filter_map_ok",
-            "clippy::maybe_misused_cfg",
+            "clippy::macro_metavars_in_unsafe",
+            "clippy::manual_unwrap_or_default",
             "clippy::misnamed_getters",
             "clippy::misrefactored_assign_op",
-            "clippy::mixed_attributes_style",
+            "clippy::missing_transmute_annotations",
             "clippy::multi_assignments",
             "clippy::multiple_bound_locations",
             "clippy::mut_range_bound",
             "clippy::mutable_key_type",
+            "clippy::needless_character_iteration",
+            "clippy::needless_maybe_sized",
             "clippy::no_effect_replace",
             "clippy::non_canonical_clone_impl",
             "clippy::non_canonical_partial_ord_impl",
@@ -14564,6 +14789,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::unnecessary_clippy_cfg",
             "clippy::unnecessary_get_then_check",
             "clippy::unnecessary_result_map_or_else",
+            "clippy::zero_repeat_side_effects",
         ],
     },
 ];
diff --git a/crates/ide/src/status.rs b/crates/ide/src/status.rs
index 8e7767c8e5..b998c0bfc6 100644
--- a/crates/ide/src/status.rs
+++ b/crates/ide/src/status.rs
@@ -20,7 +20,6 @@ use ide_db::{
 };
 use itertools::Itertools;
 use profile::{memory_usage, Bytes};
-use std::env;
 use stdx::format_to;
 use syntax::{ast, Parse, SyntaxNode};
 use triomphe::Arc;
@@ -44,9 +43,6 @@ pub(crate) fn status(db: &RootDatabase, file_id: Option<FileId>) -> String {
     format_to!(buf, "{}\n", collect_query(LibrarySymbolsQuery.in_db(db)));
     format_to!(buf, "{}\n", collect_query(ModuleSymbolsQuery.in_db(db)));
     format_to!(buf, "{} in total\n", memory_usage());
-    if env::var("RA_COUNT").is_ok() {
-        format_to!(buf, "\nCounts:\n{}", profile::countme::get_all());
-    }
 
     format_to!(buf, "\nDebug info:\n");
     format_to!(buf, "{}\n", collect_query(AttrsQuery.in_db(db)));
diff --git a/crates/parser/Cargo.toml b/crates/parser/Cargo.toml
index 1f84e3f3af..54b57c201b 100644
--- a/crates/parser/Cargo.toml
+++ b/crates/parser/Cargo.toml
@@ -21,7 +21,6 @@ tracing = { workspace = true, optional = true }
 expect-test = "1.4.0"
 
 stdx.workspace = true
-sourcegen.workspace = true
 
 [features]
 default = ["tracing"]
diff --git a/crates/parser/src/syntax_kind/generated.rs b/crates/parser/src/syntax_kind/generated.rs
index ef83420c52..ad3398453b 100644
--- a/crates/parser/src/syntax_kind/generated.rs
+++ b/crates/parser/src/syntax_kind/generated.rs
@@ -1,4 +1,4 @@
-//! Generated by `sourcegen_ast`, do not edit by hand.
+//! Generated by `cargo codegen grammar`, do not edit by hand.
 
 #![allow(bad_style, missing_docs, unreachable_pub)]
 #[doc = r" The kind of syntax node, e.g. `IDENT`, `USE_KW`, or `STRUCT`."]
diff --git a/crates/profile/Cargo.toml b/crates/profile/Cargo.toml
index 11a8e7af56..5989dc6c96 100644
--- a/crates/profile/Cargo.toml
+++ b/crates/profile/Cargo.toml
@@ -12,12 +12,8 @@ rust-version.workspace = true
 doctest = false
 
 [dependencies]
-once_cell = "1.17.0"
-tracing.workspace = true
 cfg-if = "1.0.0"
-la-arena.workspace = true
 libc.workspace = true
-countme = { version = "3.0.1", features = ["enable"] }
 jemalloc-ctl = { version = "0.5.0", package = "tikv-jemalloc-ctl", optional = true }
 
 [target.'cfg(target_os = "linux")'.dependencies]
diff --git a/crates/profile/src/lib.rs b/crates/profile/src/lib.rs
index c1ae0d43d0..205341f162 100644
--- a/crates/profile/src/lib.rs
+++ b/crates/profile/src/lib.rs
@@ -12,13 +12,6 @@ pub use crate::{
     stop_watch::{StopWatch, StopWatchSpan},
 };
 
-pub use countme;
-/// Include `_c: Count<Self>` field in important structs to count them.
-///
-/// To view the counts, run with `RA_COUNT=1`. The overhead of disabled count is
-/// almost zero.
-pub use countme::Count;
-
 thread_local!(static IN_SCOPE: RefCell<bool> = const { RefCell::new(false) });
 
 /// A wrapper around google_cpu_profiler.
diff --git a/crates/profile/src/stop_watch.rs b/crates/profile/src/stop_watch.rs
index 990b59cad4..0a803959ee 100644
--- a/crates/profile/src/stop_watch.rs
+++ b/crates/profile/src/stop_watch.rs
@@ -29,11 +29,10 @@ impl StopWatch {
             // When debugging rust-analyzer using rr, the perf-related syscalls cause it to abort.
             // We allow disabling perf by setting the env var `RA_DISABLE_PERF`.
 
-            use once_cell::sync::Lazy;
-            static PERF_ENABLED: Lazy<bool> =
-                Lazy::new(|| std::env::var_os("RA_DISABLE_PERF").is_none());
+            use std::sync::OnceLock;
+            static PERF_ENABLED: OnceLock<bool> = OnceLock::new();
 
-            if *PERF_ENABLED {
+            if *PERF_ENABLED.get_or_init(|| std::env::var_os("RA_DISABLE_PERF").is_none()) {
                 let mut counter = perf_event::Builder::new()
                     .build()
                     .map_err(|err| eprintln!("Failed to create perf counter: {err}"))
diff --git a/crates/rust-analyzer/Cargo.toml b/crates/rust-analyzer/Cargo.toml
index c207c42b6d..93fb55ede8 100644
--- a/crates/rust-analyzer/Cargo.toml
+++ b/crates/rust-analyzer/Cargo.toml
@@ -81,7 +81,6 @@ xshell.workspace = true
 
 test-utils.workspace = true
 test-fixture.workspace = true
-sourcegen.workspace = true
 mbe.workspace = true
 
 [features]
diff --git a/crates/rust-analyzer/src/cli/analysis_stats.rs b/crates/rust-analyzer/src/cli/analysis_stats.rs
index a934e14ddb..c9c19806be 100644
--- a/crates/rust-analyzer/src/cli/analysis_stats.rs
+++ b/crates/rust-analyzer/src/cli/analysis_stats.rs
@@ -250,10 +250,6 @@ impl flags::AnalysisStats {
         }
         report_metric("total memory", total_span.memory.allocated.megabytes() as u64, "MB");
 
-        if env::var("RA_COUNT").is_ok() {
-            eprintln!("{}", profile::countme::get_all());
-        }
-
         if self.source_stats {
             let mut total_file_size = Bytes::default();
             for e in ide_db::base_db::ParseQuery.in_db(db).entries::<Vec<_>>() {
diff --git a/crates/sourcegen/Cargo.toml b/crates/sourcegen/Cargo.toml
deleted file mode 100644
index d5ea4c39aa..0000000000
--- a/crates/sourcegen/Cargo.toml
+++ /dev/null
@@ -1,19 +0,0 @@
-[package]
-name = "sourcegen"
-version = "0.0.0"
-description = "TBD"
-publish = false
-
-authors.workspace = true
-edition.workspace = true
-license.workspace = true
-rust-version.workspace = true
-
-[lib]
-doctest = false
-
-[dependencies]
-xshell.workspace = true
-
-[lints]
-workspace = true
\ No newline at end of file
diff --git a/crates/sourcegen/src/lib.rs b/crates/sourcegen/src/lib.rs
deleted file mode 100644
index 307c214c61..0000000000
--- a/crates/sourcegen/src/lib.rs
+++ /dev/null
@@ -1,201 +0,0 @@
-//! rust-analyzer relies heavily on source code generation.
-//!
-//! Things like feature documentation or assist tests are implemented by
-//! processing rust-analyzer's own source code and generating the appropriate
-//! output. See `sourcegen_` tests in various crates.
-//!
-//! This crate contains utilities to make this kind of source-gen easy.
-
-use std::{
-    fmt, fs, mem,
-    path::{Path, PathBuf},
-};
-
-use xshell::{cmd, Shell};
-
-pub fn list_rust_files(dir: &Path) -> Vec<PathBuf> {
-    let mut res = list_files(dir);
-    res.retain(|it| {
-        it.file_name().unwrap_or_default().to_str().unwrap_or_default().ends_with(".rs")
-    });
-    res
-}
-
-pub fn list_files(dir: &Path) -> Vec<PathBuf> {
-    let mut res = Vec::new();
-    let mut work = vec![dir.to_path_buf()];
-    while let Some(dir) = work.pop() {
-        for entry in dir.read_dir().unwrap() {
-            let entry = entry.unwrap();
-            let file_type = entry.file_type().unwrap();
-            let path = entry.path();
-            let is_hidden =
-                path.file_name().unwrap_or_default().to_str().unwrap_or_default().starts_with('.');
-            if !is_hidden {
-                if file_type.is_dir() {
-                    work.push(path);
-                } else if file_type.is_file() {
-                    res.push(path);
-                }
-            }
-        }
-    }
-    res
-}
-
-#[derive(Clone)]
-pub struct CommentBlock {
-    pub id: String,
-    pub line: usize,
-    pub contents: Vec<String>,
-    is_doc: bool,
-}
-
-impl CommentBlock {
-    pub fn extract(tag: &str, text: &str) -> Vec<CommentBlock> {
-        assert!(tag.starts_with(char::is_uppercase));
-
-        let tag = format!("{tag}:");
-        let mut blocks = CommentBlock::extract_untagged(text);
-        blocks.retain_mut(|block| {
-            let first = block.contents.remove(0);
-            let Some(id) = first.strip_prefix(&tag) else {
-                return false;
-            };
-
-            if block.is_doc {
-                panic!("Use plain (non-doc) comments with tags like {tag}:\n    {first}");
-            }
-
-            id.trim().clone_into(&mut block.id);
-            true
-        });
-        blocks
-    }
-
-    pub fn extract_untagged(text: &str) -> Vec<CommentBlock> {
-        let mut res = Vec::new();
-
-        let lines = text.lines().map(str::trim_start);
-
-        let dummy_block =
-            CommentBlock { id: String::new(), line: 0, contents: Vec::new(), is_doc: false };
-        let mut block = dummy_block.clone();
-        for (line_num, line) in lines.enumerate() {
-            match line.strip_prefix("//") {
-                Some(mut contents) => {
-                    if let Some('/' | '!') = contents.chars().next() {
-                        contents = &contents[1..];
-                        block.is_doc = true;
-                    }
-                    if let Some(' ') = contents.chars().next() {
-                        contents = &contents[1..];
-                    }
-                    block.contents.push(contents.to_owned());
-                }
-                None => {
-                    if !block.contents.is_empty() {
-                        let block = mem::replace(&mut block, dummy_block.clone());
-                        res.push(block);
-                    }
-                    block.line = line_num + 2;
-                }
-            }
-        }
-        if !block.contents.is_empty() {
-            res.push(block);
-        }
-        res
-    }
-}
-
-#[derive(Debug)]
-pub struct Location {
-    pub file: PathBuf,
-    pub line: usize,
-}
-
-impl fmt::Display for Location {
-    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
-        let path = self.file.strip_prefix(project_root()).unwrap().display().to_string();
-        let path = path.replace('\\', "/");
-        let name = self.file.file_name().unwrap();
-        write!(
-            f,
-            "https://github.com/rust-lang/rust-analyzer/blob/master/{}#L{}[{}]",
-            path,
-            self.line,
-            name.to_str().unwrap()
-        )
-    }
-}
-
-fn ensure_rustfmt(sh: &Shell) {
-    let version = cmd!(sh, "rustup run stable rustfmt --version").read().unwrap_or_default();
-    if !version.contains("stable") {
-        panic!(
-            "Failed to run rustfmt from toolchain 'stable'. \
-                 Please run `rustup component add rustfmt --toolchain stable` to install it.",
-        );
-    }
-}
-
-pub fn reformat(text: String) -> String {
-    let sh = Shell::new().unwrap();
-    ensure_rustfmt(&sh);
-    let rustfmt_toml = project_root().join("rustfmt.toml");
-    let mut stdout = cmd!(
-        sh,
-        "rustup run stable rustfmt --config-path {rustfmt_toml} --config fn_single_line=true"
-    )
-    .stdin(text)
-    .read()
-    .unwrap();
-    if !stdout.ends_with('\n') {
-        stdout.push('\n');
-    }
-    stdout
-}
-
-pub fn add_preamble(generator: &'static str, mut text: String) -> String {
-    let preamble = format!("//! Generated by `{generator}`, do not edit by hand.\n\n");
-    text.insert_str(0, &preamble);
-    text
-}
-
-/// Checks that the `file` has the specified `contents`. If that is not the
-/// case, updates the file and then fails the test.
-#[allow(clippy::print_stderr)]
-pub fn ensure_file_contents(file: &Path, contents: &str) {
-    if let Ok(old_contents) = fs::read_to_string(file) {
-        if normalize_newlines(&old_contents) == normalize_newlines(contents) {
-            // File is already up to date.
-            return;
-        }
-    }
-
-    let display_path = file.strip_prefix(project_root()).unwrap_or(file);
-    eprintln!(
-        "\n\x1b[31;1merror\x1b[0m: {} was not up-to-date, updating\n",
-        display_path.display()
-    );
-    if std::env::var("CI").is_ok() {
-        eprintln!("    NOTE: run `cargo test` locally and commit the updated files\n");
-    }
-    if let Some(parent) = file.parent() {
-        let _ = fs::create_dir_all(parent);
-    }
-    fs::write(file, contents).unwrap();
-    panic!("some file was not up to date and has been updated, simply re-run the tests");
-}
-
-fn normalize_newlines(s: &str) -> String {
-    s.replace("\r\n", "\n")
-}
-
-pub fn project_root() -> PathBuf {
-    let dir = env!("CARGO_MANIFEST_DIR");
-    let res = PathBuf::from(dir).parent().unwrap().parent().unwrap().to_owned();
-    assert!(res.join("triagebot.toml").exists());
-    res
-}
diff --git a/crates/syntax/src/ast/generated/nodes.rs b/crates/syntax/src/ast/generated/nodes.rs
index bae529a2c8..ce189acd68 100644
--- a/crates/syntax/src/ast/generated/nodes.rs
+++ b/crates/syntax/src/ast/generated/nodes.rs
@@ -1,4 +1,4 @@
-//! Generated by `sourcegen_ast`, do not edit by hand.
+//! Generated by `cargo codegen grammar`, do not edit by hand.
 
 #![allow(non_snake_case)]
 use crate::{
diff --git a/crates/syntax/src/ast/generated/tokens.rs b/crates/syntax/src/ast/generated/tokens.rs
index 651a8ebbf7..85d20c2bd8 100644
--- a/crates/syntax/src/ast/generated/tokens.rs
+++ b/crates/syntax/src/ast/generated/tokens.rs
@@ -1,4 +1,4 @@
-//! Generated by `sourcegen_ast`, do not edit by hand.
+//! Generated by `cargo codegen grammar`, do not edit by hand.
 
 use crate::{
     ast::AstToken,
diff --git a/docs/dev/architecture.md b/docs/dev/architecture.md
index 4303a800a0..f4e7263868 100644
--- a/docs/dev/architecture.md
+++ b/docs/dev/architecture.md
@@ -368,7 +368,7 @@ In particular, we generate:
 
 * Documentation tests for assists
 
-See the `sourcegen` crate for details.
+See the `xtask\src\codegen\assists_doc_tests.rs` module for details.
 
 **Architecture Invariant:** we avoid bootstrapping.
 For codegen we need to parse Rust code.
diff --git a/xtask/src/codegen.rs b/xtask/src/codegen.rs
index b23d700263..acaa65129d 100644
--- a/xtask/src/codegen.rs
+++ b/xtask/src/codegen.rs
@@ -5,12 +5,17 @@ use std::{
 
 use xshell::{cmd, Shell};
 
-use crate::{flags, project_root};
+use crate::{
+    flags::{self, CodegenType},
+    project_root,
+};
 
 pub(crate) mod assists_doc_tests;
 pub(crate) mod diagnostics_docs;
+pub(crate) mod feature_docs;
 mod grammar;
 mod lints;
+mod parser_inline_tests;
 
 impl flags::Codegen {
     pub(crate) fn run(self, _sh: &Shell) -> anyhow::Result<()> {
@@ -18,6 +23,8 @@ impl flags::Codegen {
             flags::CodegenType::All => {
                 diagnostics_docs::generate(self.check);
                 assists_doc_tests::generate(self.check);
+                parser_inline_tests::generate(self.check);
+                // diagnostics_docs::generate(self.check) doesn't generate any tests
                 // lints::generate(self.check) Updating clones the rust repo, so don't run it unless
                 // explicitly asked for
             }
@@ -25,41 +32,13 @@ impl flags::Codegen {
             flags::CodegenType::AssistsDocTests => assists_doc_tests::generate(self.check),
             flags::CodegenType::DiagnosticsDocs => diagnostics_docs::generate(self.check),
             flags::CodegenType::LintDefinitions => lints::generate(self.check),
+            flags::CodegenType::ParserTests => parser_inline_tests::generate(self.check),
+            flags::CodegenType::FeatureDocs => feature_docs::generate(self.check),
         }
         Ok(())
     }
 }
 
-fn list_rust_files(dir: &Path) -> Vec<PathBuf> {
-    let mut res = list_files(dir);
-    res.retain(|it| {
-        it.file_name().unwrap_or_default().to_str().unwrap_or_default().ends_with(".rs")
-    });
-    res
-}
-
-fn list_files(dir: &Path) -> Vec<PathBuf> {
-    let mut res = Vec::new();
-    let mut work = vec![dir.to_path_buf()];
-    while let Some(dir) = work.pop() {
-        for entry in dir.read_dir().unwrap() {
-            let entry = entry.unwrap();
-            let file_type = entry.file_type().unwrap();
-            let path = entry.path();
-            let is_hidden =
-                path.file_name().unwrap_or_default().to_str().unwrap_or_default().starts_with('.');
-            if !is_hidden {
-                if file_type.is_dir() {
-                    work.push(path);
-                } else if file_type.is_file() {
-                    res.push(path);
-                }
-            }
-        }
-    }
-    res
-}
-
 #[derive(Clone)]
 pub(crate) struct CommentBlock {
     pub(crate) id: String,
@@ -174,8 +153,8 @@ fn reformat(text: String) -> String {
     stdout
 }
 
-fn add_preamble(generator: &'static str, mut text: String) -> String {
-    let preamble = format!("//! Generated by `{generator}`, do not edit by hand.\n\n");
+fn add_preamble(cg: CodegenType, mut text: String) -> String {
+    let preamble = format!("//! Generated by `cargo codegen {cg}`, do not edit by hand.\n\n");
     text.insert_str(0, &preamble);
     text
 }
@@ -183,7 +162,7 @@ fn add_preamble(generator: &'static str, mut text: String) -> String {
 /// Checks that the `file` has the specified `contents`. If that is not the
 /// case, updates the file and then fails the test.
 #[allow(clippy::print_stderr)]
-fn ensure_file_contents(file: &Path, contents: &str, check: bool) {
+fn ensure_file_contents(cg: CodegenType, file: &Path, contents: &str, check: bool) {
     if let Ok(old_contents) = fs::read_to_string(file) {
         if normalize_newlines(&old_contents) == normalize_newlines(contents) {
             // File is already up to date.
@@ -197,9 +176,11 @@ fn ensure_file_contents(file: &Path, contents: &str, check: bool) {
             "{} was not up-to-date{}",
             file.display(),
             if std::env::var("CI").is_ok() {
-                "\n    NOTE: run `cargo codegen` locally and commit the updated files\n"
+                format!(
+                    "\n    NOTE: run `cargo codegen {cg}` locally and commit the updated files\n"
+                )
             } else {
-                ""
+                "".to_owned()
             }
         );
     } else {
diff --git a/xtask/src/codegen/diagnostics_docs.rs b/xtask/src/codegen/diagnostics_docs.rs
index dcc9c76a50..4cb8f3f259 100644
--- a/xtask/src/codegen/diagnostics_docs.rs
+++ b/xtask/src/codegen/diagnostics_docs.rs
@@ -3,8 +3,9 @@
 use std::{fmt, fs, io, path::PathBuf};
 
 use crate::{
-    codegen::{add_preamble, list_rust_files, CommentBlock, Location},
+    codegen::{add_preamble, CommentBlock, Location},
     project_root,
+    util::list_rust_files,
 };
 
 pub(crate) fn generate(check: bool) {
@@ -12,7 +13,7 @@ pub(crate) fn generate(check: bool) {
     if !check {
         let contents =
             diagnostics.into_iter().map(|it| it.to_string()).collect::<Vec<_>>().join("\n\n");
-        let contents = add_preamble("sourcegen_diagnostic_docs", contents);
+        let contents = add_preamble(crate::flags::CodegenType::DiagnosticsDocs, contents);
         let dst = project_root().join("docs/user/generated_diagnostic.adoc");
         fs::write(dst, contents).unwrap();
     }
diff --git a/xtask/src/codegen/grammar.rs b/xtask/src/codegen/grammar.rs
index 0fc97ad654..2d492f79f1 100644
--- a/xtask/src/codegen/grammar.rs
+++ b/xtask/src/codegen/grammar.rs
@@ -27,7 +27,12 @@ use self::ast_src::{AstEnumSrc, AstNodeSrc, AstSrc, Cardinality, Field, KindsSrc
 pub(crate) fn generate(check: bool) {
     let syntax_kinds = generate_syntax_kinds(KINDS_SRC);
     let syntax_kinds_file = project_root().join("crates/parser/src/syntax_kind/generated.rs");
-    ensure_file_contents(syntax_kinds_file.as_path(), &syntax_kinds, check);
+    ensure_file_contents(
+        crate::flags::CodegenType::Grammar,
+        syntax_kinds_file.as_path(),
+        &syntax_kinds,
+        check,
+    );
 
     let grammar = fs::read_to_string(project_root().join("crates/syntax/rust.ungram"))
         .unwrap()
@@ -37,11 +42,21 @@ pub(crate) fn generate(check: bool) {
 
     let ast_tokens = generate_tokens(&ast);
     let ast_tokens_file = project_root().join("crates/syntax/src/ast/generated/tokens.rs");
-    ensure_file_contents(ast_tokens_file.as_path(), &ast_tokens, check);
+    ensure_file_contents(
+        crate::flags::CodegenType::Grammar,
+        ast_tokens_file.as_path(),
+        &ast_tokens,
+        check,
+    );
 
     let ast_nodes = generate_nodes(KINDS_SRC, &ast);
     let ast_nodes_file = project_root().join("crates/syntax/src/ast/generated/nodes.rs");
-    ensure_file_contents(ast_nodes_file.as_path(), &ast_nodes, check);
+    ensure_file_contents(
+        crate::flags::CodegenType::Grammar,
+        ast_nodes_file.as_path(),
+        &ast_nodes,
+        check,
+    );
 }
 
 fn generate_tokens(grammar: &AstSrc) -> String {
@@ -69,7 +84,7 @@ fn generate_tokens(grammar: &AstSrc) -> String {
     });
 
     add_preamble(
-        "sourcegen_ast",
+        crate::flags::CodegenType::Grammar,
         reformat(
             quote! {
                 use crate::{SyntaxKind::{self, *}, SyntaxToken, ast::AstToken};
@@ -328,7 +343,7 @@ fn generate_nodes(kinds: KindsSrc<'_>, grammar: &AstSrc) -> String {
         }
     }
 
-    let res = add_preamble("sourcegen_ast", reformat(res));
+    let res = add_preamble(crate::flags::CodegenType::Grammar, reformat(res));
     res.replace("#[derive", "\n#[derive")
 }
 
@@ -458,7 +473,7 @@ fn generate_syntax_kinds(grammar: KindsSrc<'_>) -> String {
         }
     };
 
-    add_preamble("sourcegen_ast", reformat(ast.to_string()))
+    add_preamble(crate::flags::CodegenType::Grammar, reformat(ast.to_string()))
 }
 
 fn to_upper_snake_case(s: &str) -> String {
@@ -875,3 +890,8 @@ impl AstNodeSrc {
         });
     }
 }
+
+#[test]
+fn test() {
+    generate(true);
+}
diff --git a/xtask/src/codegen/lints.rs b/xtask/src/codegen/lints.rs
index 6975f9328e..f097b5817b 100644
--- a/xtask/src/codegen/lints.rs
+++ b/xtask/src/codegen/lints.rs
@@ -6,8 +6,9 @@ use stdx::format_to;
 use xshell::{cmd, Shell};
 
 use crate::{
-    codegen::{add_preamble, ensure_file_contents, list_files, reformat},
+    codegen::{add_preamble, ensure_file_contents, reformat},
     project_root,
+    util::list_files,
 };
 
 const DESTINATION: &str = "crates/ide-db/src/generated/lints.rs";
@@ -28,7 +29,7 @@ pub(crate) fn generate(check: bool) {
     cmd!(
         sh,
         "git -C {rust_repo} submodule update --init --recursive --depth=1 --
-         compiler library src/tools"
+         compiler library src/tools src/doc/book"
     )
     .run()
     .unwrap();
@@ -73,10 +74,15 @@ pub struct LintGroup {
     .unwrap();
     generate_descriptor_clippy(&mut contents, &lints_json);
 
-    let contents = add_preamble("sourcegen_lints", reformat(contents));
+    let contents = add_preamble(crate::flags::CodegenType::LintDefinitions, reformat(contents));
 
     let destination = project_root().join(DESTINATION);
-    ensure_file_contents(destination.as_path(), &contents, check);
+    ensure_file_contents(
+        crate::flags::CodegenType::LintDefinitions,
+        destination.as_path(),
+        &contents,
+        check,
+    );
 }
 
 /// Parses the output of `rustdoc -Whelp` and prints `Lint` and `LintGroup` constants into `buf`.
diff --git a/xtask/src/flags.rs b/xtask/src/flags.rs
index dd7bfd0bda..cf4a22d476 100644
--- a/xtask/src/flags.rs
+++ b/xtask/src/flags.rs
@@ -1,6 +1,6 @@
 #![allow(unreachable_pub)]
 
-use std::str::FromStr;
+use std::{fmt, str::FromStr};
 
 use crate::install::{ClientOpt, ServerOpt};
 
@@ -73,6 +73,8 @@ xflags::xflags! {
             optional codegen_type: CodegenType
             optional --check
         }
+
+        cmd tidy {}
     }
 }
 
@@ -96,8 +98,12 @@ pub enum XtaskCmd {
     Metrics(Metrics),
     Bb(Bb),
     Codegen(Codegen),
+    Tidy(Tidy),
 }
 
+#[derive(Debug)]
+pub struct Tidy {}
+
 #[derive(Debug)]
 pub struct Install {
     pub client: bool,
@@ -185,6 +191,22 @@ pub enum CodegenType {
     AssistsDocTests,
     DiagnosticsDocs,
     LintDefinitions,
+    ParserTests,
+    FeatureDocs,
+}
+
+impl fmt::Display for CodegenType {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        match self {
+            Self::All => write!(f, "all"),
+            Self::Grammar => write!(f, "grammar"),
+            Self::AssistsDocTests => write!(f, "assists-doc-tests"),
+            Self::DiagnosticsDocs => write!(f, "diagnostics-docs"),
+            Self::LintDefinitions => write!(f, "lint-definitions"),
+            Self::ParserTests => write!(f, "parser-tests"),
+            Self::FeatureDocs => write!(f, "feature-docs"),
+        }
+    }
 }
 
 impl FromStr for CodegenType {
@@ -195,7 +217,9 @@ impl FromStr for CodegenType {
             "grammar" => Ok(Self::Grammar),
             "assists-doc-tests" => Ok(Self::AssistsDocTests),
             "diagnostics-docs" => Ok(Self::DiagnosticsDocs),
-            "lints-definitions" => Ok(Self::LintDefinitions),
+            "lint-definitions" => Ok(Self::LintDefinitions),
+            "parser-tests" => Ok(Self::ParserTests),
+            "feature-docs" => Ok(Self::FeatureDocs),
             _ => Err("Invalid option".to_owned()),
         }
     }
diff --git a/xtask/src/main.rs b/xtask/src/main.rs
index e070576303..5c312da1dd 100644
--- a/xtask/src/main.rs
+++ b/xtask/src/main.rs
@@ -19,6 +19,8 @@ mod install;
 mod metrics;
 mod publish;
 mod release;
+mod tidy;
+mod util;
 
 use anyhow::bail;
 use std::{env, path::PathBuf};
@@ -51,6 +53,7 @@ fn main() -> anyhow::Result<()> {
             )?;
             Ok(())
         }
+        flags::XtaskCmd::Tidy(cmd) => cmd.run(sh),
     }
 }
 
diff --git a/xtask/src/release.rs b/xtask/src/release.rs
index b936876b52..3eda2bc027 100644
--- a/xtask/src/release.rs
+++ b/xtask/src/release.rs
@@ -32,6 +32,7 @@ impl flags::Release {
         // Generates bits of manual.adoc.
         codegen::diagnostics_docs::generate(false);
         codegen::assists_doc_tests::generate(false);
+        codegen::feature_docs::generate(false);
 
         let website_root = project_root().join("../rust-analyzer.github.io");
         {
diff --git a/xtask/src/util.rs b/xtask/src/util.rs
new file mode 100644
index 0000000000..39f52938c8
--- /dev/null
+++ b/xtask/src/util.rs
@@ -0,0 +1,31 @@
+use std::path::{Path, PathBuf};
+
+pub(crate) fn list_rust_files(dir: &Path) -> Vec<PathBuf> {
+    let mut res = list_files(dir);
+    res.retain(|it| {
+        it.file_name().unwrap_or_default().to_str().unwrap_or_default().ends_with(".rs")
+    });
+    res
+}
+
+pub(crate) fn list_files(dir: &Path) -> Vec<PathBuf> {
+    let mut res = Vec::new();
+    let mut work = vec![dir.to_path_buf()];
+    while let Some(dir) = work.pop() {
+        for entry in dir.read_dir().unwrap() {
+            let entry = entry.unwrap();
+            let file_type = entry.file_type().unwrap();
+            let path = entry.path();
+            let is_hidden =
+                path.file_name().unwrap_or_default().to_str().unwrap_or_default().starts_with('.');
+            if !is_hidden {
+                if file_type.is_dir() {
+                    work.push(path);
+                } else if file_type.is_file() {
+                    res.push(path);
+                }
+            }
+        }
+    }
+    res
+}


Test patch:
diff --git a/crates/hir-ty/src/consteval/tests/intrinsics.rs b/crates/hir-ty/src/consteval/tests/intrinsics.rs
index 44a4ac27af..543328a57e 100644
--- a/crates/hir-ty/src/consteval/tests/intrinsics.rs
+++ b/crates/hir-ty/src/consteval/tests/intrinsics.rs
@@ -426,6 +426,7 @@ fn floating_point() {
             true,
         )),
     );
+    #[allow(unknown_lints, clippy::unnecessary_min_or_max)]
     check_number(
         r#"
         extern "rust-intrinsic" {
diff --git a/crates/ide-assists/src/tests/generated.rs b/crates/ide-assists/src/tests/generated.rs
index eec1087e2d..a2287b2977 100644
--- a/crates/ide-assists/src/tests/generated.rs
+++ b/crates/ide-assists/src/tests/generated.rs
@@ -1,4 +1,4 @@
-//! Generated by `sourcegen_assists_docs`, do not edit by hand.
+//! Generated by `cargo codegen assists-doc-tests`, do not edit by hand.
 
 use super::check_doc_test;
 
diff --git a/crates/ide/src/hover/tests.rs b/crates/ide/src/hover/tests.rs
index 20d07bf991..8479374647 100644
--- a/crates/ide/src/hover/tests.rs
+++ b/crates/ide/src/hover/tests.rs
@@ -6138,7 +6138,7 @@ fn hover_feature() {
             by the codegen backend, but not the MIR inliner.
 
             ```rust
-            #![feature(rustc_attrs, effects)]
+            #![feature(rustc_attrs)]
             #![allow(internal_features)]
 
             #[rustc_intrinsic]
@@ -6148,7 +6148,7 @@ fn hover_feature() {
             Since these are just regular functions, it is perfectly ok to create the intrinsic twice:
 
             ```rust
-            #![feature(rustc_attrs, effects)]
+            #![feature(rustc_attrs)]
             #![allow(internal_features)]
 
             #[rustc_intrinsic]
@@ -6172,12 +6172,23 @@ fn hover_feature() {
             Various intrinsics have native MIR operations that they correspond to. Instead of requiring
             backends to implement both the intrinsic and the MIR operation, the `lower_intrinsics` pass
             will convert the calls to the MIR operation. Backends do not need to know about these intrinsics
-            at all.
+            at all. These intrinsics only make sense without a body, and can either be declared as a "rust-intrinsic"
+            or as a `#[rustc_intrinsic]`. The body is never used, as calls to the intrinsic do not exist
+            anymore after MIR analyses.
 
             ## Intrinsics without fallback logic
 
             These must be implemented by all backends.
 
+            ### `#[rustc_intrinsic]` declarations
+
+            These are written like intrinsics with fallback bodies, but the body is irrelevant.
+            Use `loop {}` for the body or call the intrinsic recursively and add
+            `#[rustc_intrinsic_must_be_overridden]` to the function to ensure that backends don't
+            invoke the body.
+
+            ### Legacy extern ABI based intrinsics
+
             These are imported as if they were FFI functions, with the special
             `rust-intrinsic` ABI. For example, if one was in a freestanding
             context, but wished to be able to `transmute` between types, and
diff --git a/crates/parser/src/tests.rs b/crates/parser/src/tests.rs
index 0e04096526..a38689791c 100644
--- a/crates/parser/src/tests.rs
+++ b/crates/parser/src/tests.rs
@@ -1,5 +1,4 @@
 mod prefix_entries;
-mod sourcegen_inline_tests;
 mod top_entries;
 
 use std::{
diff --git a/crates/rust-analyzer/tests/slow-tests/main.rs b/crates/rust-analyzer/tests/slow-tests/main.rs
index c6236d8b4f..56f416a0b6 100644
--- a/crates/rust-analyzer/tests/slow-tests/main.rs
+++ b/crates/rust-analyzer/tests/slow-tests/main.rs
@@ -11,11 +11,8 @@
 #![allow(clippy::disallowed_types)]
 
 mod ratoml;
-#[cfg(not(feature = "in-rust-tree"))]
-mod sourcegen;
 mod support;
 mod testdir;
-mod tidy;
 
 use std::{collections::HashMap, path::PathBuf, time::Instant};
 
diff --git a/xtask/src/codegen/assists_doc_tests.rs b/xtask/src/codegen/assists_doc_tests.rs
index b2d89dde76..d06c9d65df 100644
--- a/xtask/src/codegen/assists_doc_tests.rs
+++ b/xtask/src/codegen/assists_doc_tests.rs
@@ -5,10 +5,9 @@ use std::{fmt, fs, path::Path};
 use stdx::format_to_acc;
 
 use crate::{
-    codegen::{
-        add_preamble, ensure_file_contents, list_rust_files, reformat, CommentBlock, Location,
-    },
+    codegen::{add_preamble, ensure_file_contents, reformat, CommentBlock, Location},
     project_root,
+    util::list_rust_files,
 };
 
 pub(crate) fn generate(check: bool) {
@@ -45,8 +44,9 @@ r#####"
                 buf.push_str(&test)
             }
         }
-        let buf = add_preamble("sourcegen_assists_docs", reformat(buf));
+        let buf = add_preamble(crate::flags::CodegenType::AssistsDocTests, reformat(buf));
         ensure_file_contents(
+            crate::flags::CodegenType::AssistsDocTests,
             &project_root().join("crates/ide-assists/src/tests/generated.rs"),
             &buf,
             check,
@@ -59,7 +59,7 @@ r#####"
         // a release.
 
         let contents = add_preamble(
-            "sourcegen_assists_docs",
+            crate::flags::CodegenType::AssistsDocTests,
             assists.into_iter().map(|it| it.to_string()).collect::<Vec<_>>().join("\n\n"),
         );
         let dst = project_root().join("docs/user/generated_assists.adoc");
@@ -195,3 +195,8 @@ fn reveal_hash_comments(text: &str) -> String {
         })
         .fold(String::new(), |mut acc, it| format_to_acc!(acc, "{it}\n"))
 }
+
+#[test]
+fn test() {
+    generate(true);
+}
diff --git a/crates/rust-analyzer/tests/slow-tests/sourcegen.rs b/xtask/src/codegen/feature_docs.rs
similarity index 79%
rename from crates/rust-analyzer/tests/slow-tests/sourcegen.rs
rename to xtask/src/codegen/feature_docs.rs
index 2eafb0da69..c6451d888b 100644
--- a/crates/rust-analyzer/tests/slow-tests/sourcegen.rs
+++ b/xtask/src/codegen/feature_docs.rs
@@ -2,8 +2,13 @@
 
 use std::{fmt, fs, io, path::PathBuf};
 
-#[test]
-fn sourcegen_feature_docs() {
+use crate::{
+    codegen::{CommentBlock, Location},
+    project_root,
+    util::list_rust_files,
+};
+
+pub(crate) fn generate(_check: bool) {
     let features = Feature::collect().unwrap();
     let contents = features.into_iter().map(|it| it.to_string()).collect::<Vec<_>>().join("\n\n");
     let contents = format!(
@@ -13,23 +18,23 @@ fn sourcegen_feature_docs() {
 ",
         contents.trim()
     );
-    let dst = sourcegen::project_root().join("docs/user/generated_features.adoc");
+    let dst = project_root().join("docs/user/generated_features.adoc");
     fs::write(dst, contents).unwrap();
 }
 
 #[derive(Debug)]
 struct Feature {
     id: String,
-    location: sourcegen::Location,
+    location: Location,
     doc: String,
 }
 
 impl Feature {
     fn collect() -> io::Result<Vec<Feature>> {
-        let crates_dir = sourcegen::project_root().join("crates");
+        let crates_dir = project_root().join("crates");
 
         let mut res = Vec::new();
-        for path in sourcegen::list_rust_files(&crates_dir) {
+        for path in list_rust_files(&crates_dir) {
             collect_file(&mut res, path)?;
         }
         res.sort_by(|lhs, rhs| lhs.id.cmp(&rhs.id));
@@ -37,7 +42,7 @@ impl Feature {
 
         fn collect_file(acc: &mut Vec<Feature>, path: PathBuf) -> io::Result<()> {
             let text = std::fs::read_to_string(&path)?;
-            let comment_blocks = sourcegen::CommentBlock::extract("Feature", &text);
+            let comment_blocks = CommentBlock::extract("Feature", &text);
 
             for block in comment_blocks {
                 let id = block.id;
@@ -45,7 +50,7 @@ impl Feature {
                     panic!("invalid feature name: {id:?}:\n  {msg}")
                 }
                 let doc = block.contents.join("\n");
-                let location = sourcegen::Location { file: path.clone(), line: block.line };
+                let location = Location { file: path.clone(), line: block.line };
                 acc.push(Feature { id, location, doc })
             }
 
diff --git a/crates/parser/src/tests/sourcegen_inline_tests.rs b/xtask/src/codegen/parser_inline_tests.rs
similarity index 85%
rename from crates/parser/src/tests/sourcegen_inline_tests.rs
rename to xtask/src/codegen/parser_inline_tests.rs
index 5a71bfd82b..5983b06e1b 100644
--- a/crates/parser/src/tests/sourcegen_inline_tests.rs
+++ b/xtask/src/codegen/parser_inline_tests.rs
@@ -8,16 +8,21 @@ use std::{
     path::{Path, PathBuf},
 };
 
-#[test]
-fn sourcegen_parser_tests() {
-    let grammar_dir = sourcegen::project_root().join(Path::new("crates/parser/src/grammar"));
+use crate::{
+    codegen::{ensure_file_contents, CommentBlock},
+    project_root,
+    util::list_rust_files,
+};
+
+pub(crate) fn generate(check: bool) {
+    let grammar_dir = project_root().join(Path::new("crates/parser/src/grammar"));
     let tests = tests_from_dir(&grammar_dir);
 
-    install_tests(&tests.ok, "crates/parser/test_data/parser/inline/ok");
-    install_tests(&tests.err, "crates/parser/test_data/parser/inline/err");
+    install_tests(&tests.ok, "crates/parser/test_data/parser/inline/ok", check);
+    install_tests(&tests.err, "crates/parser/test_data/parser/inline/err", check);
 
-    fn install_tests(tests: &HashMap<String, Test>, into: &str) {
-        let tests_dir = sourcegen::project_root().join(into);
+    fn install_tests(tests: &HashMap<String, Test>, into: &str, check: bool) {
+        let tests_dir = project_root().join(into);
         if !tests_dir.is_dir() {
             fs::create_dir_all(&tests_dir).unwrap();
         }
@@ -37,7 +42,7 @@ fn sourcegen_parser_tests() {
                     tests_dir.join(file_name)
                 }
             };
-            sourcegen::ensure_file_contents(&path, &test.text);
+            ensure_file_contents(crate::flags::CodegenType::ParserTests, &path, &test.text, check);
         }
     }
 }
@@ -57,7 +62,7 @@ struct Tests {
 
 fn collect_tests(s: &str) -> Vec<Test> {
     let mut res = Vec::new();
-    for comment_block in sourcegen::CommentBlock::extract_untagged(s) {
+    for comment_block in CommentBlock::extract_untagged(s) {
         let first_line = &comment_block.contents[0];
         let (name, ok) = if let Some(name) = first_line.strip_prefix("test ") {
             (name.to_owned(), true)
@@ -80,7 +85,7 @@ fn collect_tests(s: &str) -> Vec<Test> {
 
 fn tests_from_dir(dir: &Path) -> Tests {
     let mut res = Tests::default();
-    for entry in sourcegen::list_rust_files(dir) {
+    for entry in list_rust_files(dir) {
         process_file(&mut res, entry.as_path());
     }
     let grammar_rs = dir.parent().unwrap().join("grammar.rs");
@@ -122,3 +127,8 @@ fn existing_tests(dir: &Path, ok: bool) -> HashMap<String, (PathBuf, Test)> {
     }
     res
 }
+
+#[test]
+fn test() {
+    generate(true);
+}
diff --git a/crates/rust-analyzer/tests/slow-tests/tidy.rs b/xtask/src/tidy.rs
similarity index 92%
rename from crates/rust-analyzer/tests/slow-tests/tidy.rs
rename to xtask/src/tidy.rs
index 8cd5cbf1c7..e85f518286 100644
--- a/crates/rust-analyzer/tests/slow-tests/tidy.rs
+++ b/xtask/src/tidy.rs
@@ -6,23 +6,29 @@ use std::{
 
 use xshell::Shell;
 
-#[cfg(not(feature = "in-rust-tree"))]
 use xshell::cmd;
 
-#[test]
-fn check_lsp_extensions_docs() {
-    let sh = &Shell::new().unwrap();
+use crate::{flags::Tidy, project_root, util::list_files};
+
+impl Tidy {
+    pub(crate) fn run(&self, sh: &Shell) -> anyhow::Result<()> {
+        check_lsp_extensions_docs(sh);
+        files_are_tidy(sh);
+        check_licenses(sh);
+        Ok(())
+    }
+}
 
+fn check_lsp_extensions_docs(sh: &Shell) {
     let expected_hash = {
-        let lsp_ext_rs = sh
-            .read_file(sourcegen::project_root().join("crates/rust-analyzer/src/lsp/ext.rs"))
-            .unwrap();
+        let lsp_ext_rs =
+            sh.read_file(project_root().join("crates/rust-analyzer/src/lsp/ext.rs")).unwrap();
         stable_hash(lsp_ext_rs.as_str())
     };
 
     let actual_hash = {
         let lsp_extensions_md =
-            sh.read_file(sourcegen::project_root().join("docs/dev/lsp-extensions.md")).unwrap();
+            sh.read_file(project_root().join("docs/dev/lsp-extensions.md")).unwrap();
         let text = lsp_extensions_md
             .lines()
             .find_map(|line| line.strip_prefix("lsp/ext.rs hash:"))
@@ -45,11 +51,8 @@ Please adjust docs/dev/lsp-extensions.md.
     }
 }
 
-#[test]
-fn files_are_tidy() {
-    let sh = &Shell::new().unwrap();
-
-    let files = sourcegen::list_files(&sourcegen::project_root().join("crates"));
+fn files_are_tidy(sh: &Shell) {
+    let files = list_files(&project_root().join("crates"));
 
     let mut tidy_docs = TidyDocs::default();
     let mut tidy_marks = TidyMarks::default();
@@ -121,11 +124,7 @@ fn check_cargo_toml(path: &Path, text: String) {
     }
 }
 
-#[cfg(not(feature = "in-rust-tree"))]
-#[test]
-fn check_licenses() {
-    let sh = &Shell::new().unwrap();
-
+fn check_licenses(sh: &Shell) {
     let expected = "
 (MIT OR Apache-2.0) AND Unicode-DFS-2016
 0BSD OR MIT OR Apache-2.0
@@ -277,7 +276,7 @@ impl TidyDocs {
 }
 
 fn is_exclude_dir(p: &Path, dirs_to_exclude: &[&str]) -> bool {
-    p.strip_prefix(sourcegen::project_root())
+    p.strip_prefix(project_root())
         .unwrap()
         .components()
         .rev()
@@ -339,3 +338,8 @@ fn find_marks(set: &mut HashSet<String>, text: &str, mark: &str) {
         }
     }
 }
+
+#[test]
+fn test() {
+    Tidy {}.run(&Shell::new().unwrap()).unwrap();
+}