@@ -6,7 +6,101 @@ document.
66
77## Unreleased / Beta / In Rust Nightly
88
9- [ df995e...master] ( https://github.com/rust-lang/rust-clippy/compare/df995e...master )
9+ [ 88f787...master] ( https://github.com/rust-lang/rust-clippy/compare/88f787...master )
10+
11+ ## Rust 1.96
12+
13+ Current stable, released 2026-05-28
14+
15+ [ View all 48 merged pull requests] ( https://github.com/rust-lang/rust-clippy/pulls?q=merged%3A2026-02-24T12%3A30%3A17Z..2026-04-03T17%3A32%3A48Z+base%3Amaster )
16+
17+ ### New Lints
18+
19+ * Added [ ` manual_noop_waker ` ] to ` complexity `
20+ [ #16687 ] ( https://github.com/rust-lang/rust-clippy/pull/16687 )
21+ * Added [ ` manual_option_zip ` ] to ` complexity `
22+ [ #16600 ] ( https://github.com/rust-lang/rust-clippy/pull/16600 )
23+ * Added [ ` manual_pop_if ` ] to ` complexity `
24+ [ #16582 ] ( https://github.com/rust-lang/rust-clippy/pull/16582 )
25+
26+ ### Enhancements
27+
28+ * [ ` explicit_counter_loop ` ] suggest ` (init..).take(n) ` when loop variable is unused and range is
29+ ` 0..n `
30+ [ #16658 ] ( https://github.com/rust-lang/rust-clippy/pull/16658 )
31+ * [ ` iter_kv_map ` ] handle identity map for ` map ` and ` flat_map `
32+ [ #16743 ] ( https://github.com/rust-lang/rust-clippy/pull/16743 )
33+ * [ ` manual_noop_waker ` ] add an MSRV check
34+ [ #16850 ] ( https://github.com/rust-lang/rust-clippy/pull/16850 )
35+ * [ ` manual_pop_if ` ] in case the popped value is used, just emit the lint with no suggestion
36+ [ #16683 ] ( https://github.com/rust-lang/rust-clippy/pull/16683 )
37+ * [ ` manual_pop_if ` ] also cover ` .pop().unwrap_unchecked() `
38+ [ #16683 ] ( https://github.com/rust-lang/rust-clippy/pull/16683 )
39+ * [ ` manual_pop_if ` ] detect manual implementations of ` BinaryHeap::pop_if() `
40+ [ #16734 ] ( https://github.com/rust-lang/rust-clippy/pull/16734 )
41+ * [ ` unnecessary_option_map_or_else ` ] function definitions are no longer traversed when checking if
42+ an expression is the identity
43+ [ #15889 ] ( https://github.com/rust-lang/rust-clippy/pull/15889 )
44+ * [ ` unnecessary_result_map_or_else ` ] function definitions are no longer traversed when checking if
45+ an expression is the identity
46+ [ #15889 ] ( https://github.com/rust-lang/rust-clippy/pull/15889 )
47+ * [ ` question_mark ` ] fix suggestion-caused error caused by semicolon inference relying only on
48+ parent-node shape
49+ [ #16656 ] ( https://github.com/rust-lang/rust-clippy/pull/16656 )
50+ * Format-related lints now handle ` core::panic! `
51+ [ #16597 ] ( https://github.com/rust-lang/rust-clippy/pull/16597 )
52+ * [ ` explicit_counter_loop ` ] fix FN when the initializer is not integral
53+ [ #16647 ] ( https://github.com/rust-lang/rust-clippy/pull/16647 )
54+ * [ ` suboptimal_flops ` ] fix FN on add and sub assign
55+ [ #16625 ] ( https://github.com/rust-lang/rust-clippy/pull/16625 )
56+ * [ ` infinite_loop ` ] fix wrong suggestion to add ` -> ! ` when the loop is inside a conditional branch
57+ [ #16619 ] ( https://github.com/rust-lang/rust-clippy/pull/16619 )
58+ * [ ` unnecessary_cast ` ] preserve parentheses in presence of cascaded casts
59+ [ #16483 ] ( https://github.com/rust-lang/rust-clippy/pull/16483 )
60+ * [ ` cmp_owned ` ] fix wrong suggestions on ` PathBuf `
61+ [ #16628 ] ( https://github.com/rust-lang/rust-clippy/pull/16628 )
62+ * [ ` redundant_closure ` ] fix wrong suggestions when local is dereferenced to callable
63+ [ #16648 ] ( https://github.com/rust-lang/rust-clippy/pull/16648 )
64+
65+ ### False Positive Fixes
66+
67+ * [ ` collapsible_if ` ] fix FP when the inner if contains cfg
68+ [ #16757 ] ( https://github.com/rust-lang/rust-clippy/pull/16757 )
69+ * [ ` collapsible_match ` ] fix FP when the pat binding is moved or mutated
70+ [ #16708 ] ( https://github.com/rust-lang/rust-clippy/pull/16708 )
71+ * [ ` collapsible_match ` ] fix a case where a suggested transformation changes runtime behavior
72+ [ #16878 ] ( https://github.com/rust-lang/rust-clippy/pull/16878 )
73+ * [ ` match_same_arms ` ] fix FP with associated consts
74+ [ #16701 ] ( https://github.com/rust-lang/rust-clippy/pull/16701 )
75+ * [ ` semicolon_inside_block ` ] fix FP in ` try ` blocks where moving ` ; ` changes the block's return
76+ type and causes type errors
77+ [ #16697 ] ( https://github.com/rust-lang/rust-clippy/pull/16697 )
78+ * [ ` unnecessary_safety_comment ` ] fix FP on code blocks inside inner docs
79+ [ #16559 ] ( https://github.com/rust-lang/rust-clippy/pull/16559 )
80+ * [ ` doc_paragraphs_missing_punctuation ` ] no longer lints punctuated paragraphs with a trailing
81+ emoji
82+ [ #16514 ] ( https://github.com/rust-lang/rust-clippy/pull/16514 )
83+
84+ ### ICE Fixes
85+
86+ * [ ` match_same_arms ` ] fix ICE in ` match_same_arms `
87+ [ #16685 ] ( https://github.com/rust-lang/rust-clippy/pull/16685 )
88+ * [ ` nonminimal_bool ` ] fix ICE in ` swap_binop() ` by using the proper ` TypeckResults `
89+ [ #16659 ] ( https://github.com/rust-lang/rust-clippy/pull/16659 )
90+ * Fix ICE when using the ` min_generic_const_args ` incomplete feature
91+ [ #16692 ] ( https://github.com/rust-lang/rust-clippy/pull/16692 )
92+
93+ ### Documentation Improvements
94+
95+ * [ ` similar_names ` ] changed the lint docs to reflect its actual behavior
96+ [ #16300 ] ( https://github.com/rust-lang/rust-clippy/pull/16300 )
97+
98+ ### Performance Improvements
99+
100+ * [ ` repeat_vec_with_capacity ` ] optimized by 96.876% (784M -> 24M instructions)
101+ [ #16756 ] ( https://github.com/rust-lang/rust-clippy/pull/16756 )
102+ * [ ` manual_is_ascii_check ` ] optimized by 97.125% (822M -> 23M instructions)
103+ [ #16755 ] ( https://github.com/rust-lang/rust-clippy/pull/16755 )
10104
11105## Rust 1.95
12106
@@ -6746,6 +6840,7 @@ Released 2018-09-13
67466840[ `for_loop_over_option` ] : https://rust-lang.github.io/rust-clippy/master/index.html#for_loop_over_option
67476841[ `for_loop_over_result` ] : https://rust-lang.github.io/rust-clippy/master/index.html#for_loop_over_result
67486842[ `for_loops_over_fallibles` ] : https://rust-lang.github.io/rust-clippy/master/index.html#for_loops_over_fallibles
6843+ [ `for_unbounded_range` ] : https://rust-lang.github.io/rust-clippy/master/index.html#for_unbounded_range
67496844[ `forget_copy` ] : https://rust-lang.github.io/rust-clippy/master/index.html#forget_copy
67506845[ `forget_non_drop` ] : https://rust-lang.github.io/rust-clippy/master/index.html#forget_non_drop
67516846[ `forget_ref` ] : https://rust-lang.github.io/rust-clippy/master/index.html#forget_ref
@@ -6906,6 +7001,7 @@ Released 2018-09-13
69067001[ `manual_is_multiple_of` ] : https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of
69077002[ `manual_is_power_of_two` ] : https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_power_of_two
69087003[ `manual_is_variant_and` ] : https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_variant_and
7004+ [ `manual_isolate_lowest_one` ] : https://rust-lang.github.io/rust-clippy/master/index.html#manual_isolate_lowest_one
69097005[ `manual_let_else` ] : https://rust-lang.github.io/rust-clippy/master/index.html#manual_let_else
69107006[ `manual_main_separator_str` ] : https://rust-lang.github.io/rust-clippy/master/index.html#manual_main_separator_str
69117007[ `manual_map` ] : https://rust-lang.github.io/rust-clippy/master/index.html#manual_map
@@ -7376,6 +7472,7 @@ Released 2018-09-13
73767472[ `unstable_as_mut_slice` ] : https://rust-lang.github.io/rust-clippy/master/index.html#unstable_as_mut_slice
73777473[ `unstable_as_slice` ] : https://rust-lang.github.io/rust-clippy/master/index.html#unstable_as_slice
73787474[ `unused_async` ] : https://rust-lang.github.io/rust-clippy/master/index.html#unused_async
7475+ [ `unused_async_trait_impl` ] : https://rust-lang.github.io/rust-clippy/master/index.html#unused_async_trait_impl
73797476[ `unused_collect` ] : https://rust-lang.github.io/rust-clippy/master/index.html#unused_collect
73807477[ `unused_enumerate_index` ] : https://rust-lang.github.io/rust-clippy/master/index.html#unused_enumerate_index
73817478[ `unused_format_specs` ] : https://rust-lang.github.io/rust-clippy/master/index.html#unused_format_specs
0 commit comments