rust/CHANGELOG.md
Andy Weiss 6c25c3c381 Lint for holding locks across await points
Fixes #4226

This introduces the lint await_holding_lock. For async functions, we iterate
over all types in generator_interior_types and look for types named MutexGuard,
RwLockReadGuard, or RwLockWriteGuard. If we find one then we emit a lint.
2020-04-21 21:07:43 -07:00

92 KiB

Change Log

All notable changes to this project will be documented in this file. See Changelog Update if you want to update this document.

Unreleased / In Rust Beta or Nightly

329923e...master

Rust 1.43

Current beta, release 2020-04-23

4ee1206...329923e

New lints

Moves and Deprecations

Enhancements

False Positive Fixes

Suggestion Improvements

  • Improve suggestion when blocks of code are suggested #5134

ICE Fixes

Documentation

  • Improve documentation of iter_nth_zero
  • Add documentation pages for stable releases #5171

Others

  • Clippy now completely runs on GitHub Actions #5190

Rust 1.42

Current stable, released 2020-03-12

69f99e7...4ee1206

New lints

Moves and Deprecations

Enhancements

False Positive Fixes

Suggestion Improvements

ICE fixes

Documentation

Rust 1.41

Released 2020-01-30

c8e3cfb...69f99e7

Rust 1.40

Released 2019-12-19

4e7e71b...c8e3cfb

Rust 1.39

Released 2019-11-07

3aea860...4e7e71b

  • New Lints:
  • Deprecate unused_collect lint. This is fully covered by rustc's #[must_use] on collect #4348
  • Move type_repetition_in_bounds to pedantic group #4403
  • Move cast_lossless to pedantic group #4539
  • temporary_cstring_as_ptr now catches more cases #4425
  • use_self now works in constructors, too #4525
  • cargo_common_metadata now checks for license files #4518
  • cognitive_complexity now includes the measured complexity in the warning message #4469
  • Fix false positives in block_in_if_* lints #4458
  • Fix false positive in cast_lossless #4473
  • Fix false positive in clone_on_copy #4411
  • Fix false positive in deref_addrof #4487
  • Fix false positive in too_many_lines #4490
  • Fix false positive in new_ret_no_self #4365
  • Fix false positive in manual_swap #4478
  • Fix false positive in missing_const_for_fn #4450
  • Fix false positive in extra_unused_lifetimes #4477
  • Fix false positive in inherent_to_string #4460
  • Fix false positive in map_entry #4495
  • Fix false positive in unused_unit #4445
  • Fix false positive in redundant_pattern #4489
  • Fix false positive in wrong_self_convention #4369
  • Improve various suggestions and tests in preparation for the unstable cargo fix --clippy #4558
  • Improve suggestions for redundant_pattern_matching #4352
  • Improve suggestions for explicit_write #4544
  • Improve suggestion for or_fun_call #4522
  • Improve suggestion for match_as_ref #4446
  • Improve suggestion for unnecessary_fold_span #4382
  • Add suggestions for unseparated_literal_suffix #4401
  • Add suggestions for char_lit_as_u8 #4418

Rust 1.38

Released 2019-09-26

e3cb40e...3aea860

Rust 1.37

Released 2019-08-15

082cfa7...e3cb40e

Rust 1.36

Released 2019-07-04

eb9f9b1...082cfa7

Rust 1.35

Released 2019-05-20

1fac380..37f5c1e

Rust 1.34

Released 2019-04-10

1b89724...1fac380

  • New lint: assertions_on_constants to detect for example assert!(true)
  • New lint: dbg_macro to detect uses of the dbg! macro
  • New lint: missing_const_for_fn that can suggest functions to be made const
  • New lint: too_many_lines to detect functions with excessive LOC. It can be configured using the too-many-lines-threshold configuration.
  • New lint: wildcard_enum_match_arm to check for wildcard enum matches using _
  • Expand redundant_closure to also work for methods (not only functions)
  • Fix ICEs in vec_box, needless_pass_by_value and implicit_hasher
  • Fix false positive in cast_sign_loss
  • Fix false positive in integer_arithmetic
  • Fix false positive in unit_arg
  • Fix false positives in implicit_return
  • Add suggestion to explicit_write
  • Improve suggestions for question_mark lint
  • Fix incorrect suggestion for cast_lossless
  • Fix incorrect suggestion for expect_fun_call
  • Fix incorrect suggestion for needless_bool
  • Fix incorrect suggestion for needless_range_loop
  • Fix incorrect suggestion for use_self
  • Fix incorrect suggestion for while_let_on_iterator
  • Clippy is now slightly easier to invoke in non-cargo contexts. See #3665 for more details.
  • We now have improved documentation on how to add new lints

Rust 1.33

Released 2019-02-26

b2601be...1b89724

  • New lints: implicit_return, vec_box, cast_ref_to_mut
  • The rust-clippy repository is now part of the rust-lang org.
  • Rename stutter to module_name_repetitions
  • Merge new_without_default_derive into new_without_default lint
  • Move large_digit_groups from style group to pedantic
  • Expand bool_comparison to check for <, <=, >, >=, and != comparisons against booleans
  • Expand no_effect to detect writes to constants such as A_CONST.field = 2
  • Expand redundant_clone to work on struct fields
  • Expand suspicious_else_formatting to detect if .. {..} {..}
  • Expand use_self to work on tuple structs and also in local macros
  • Fix ICE in result_map_unit_fn and option_map_unit_fn
  • Fix false positives in implicit_return
  • Fix false positives in use_self
  • Fix false negative in clone_on_copy
  • Fix false positive in doc_markdown
  • Fix false positive in empty_loop
  • Fix false positive in if_same_then_else
  • Fix false positive in infinite_iter
  • Fix false positive in question_mark
  • Fix false positive in useless_asref
  • Fix false positive in wildcard_dependencies
  • Fix false positive in write_with_newline
  • Add suggestion to explicit_write
  • Improve suggestions for question_mark lint
  • Fix incorrect suggestion for get_unwrap

Rust 1.32

Released 2019-01-17

2e26fdc2...b2601be

  • New lints: slow_vector_initialization, mem_discriminant_non_enum, redundant_clone, wildcard_dependencies, into_iter_on_ref, into_iter_on_array, deprecated_cfg_attr, mem_discriminant_non_enum, cargo_common_metadata
  • Add support for u128 and i128 to integer related lints
  • Add float support to mistyped_literal_suffixes
  • Fix false positives in use_self
  • Fix false positives in missing_comma
  • Fix false positives in new_ret_no_self
  • Fix false positives in possible_missing_comma
  • Fix false positive in integer_arithmetic in constant items
  • Fix false positive in needless_borrow
  • Fix false positive in out_of_bounds_indexing
  • Fix false positive in new_without_default_derive
  • Fix false positive in string_lit_as_bytes
  • Fix false negative in out_of_bounds_indexing
  • Fix false negative in use_self. It will now also check existential types
  • Fix incorrect suggestion for redundant_closure_call
  • Fix various suggestions that contained expanded macros
  • Fix bool_comparison triggering 3 times on on on the same code
  • Expand trivially_copy_pass_by_ref to work on trait methods
  • Improve suggestion for needless_range_loop
  • Move needless_pass_by_value from pedantic group to style

Rust 1.31

Released 2018-12-06

125907ad..2e26fdc2

  • Clippy has been relicensed under a dual MIT / Apache license. See #3093 for more information.
  • With Rust 1.31, Clippy is no longer available via crates.io. The recommended installation method is via rustup component add clippy.
  • New lints: redundant_pattern_matching, unnecessary_filter_map, unused_unit, map_flatten, mem_replace_option_with_none
  • Fix ICE in if_let_redundant_pattern_matching
  • Fix ICE in needless_pass_by_value when encountering a generic function argument with a lifetime parameter
  • Fix ICE in needless_range_loop
  • Fix ICE in single_char_pattern when encountering a constant value
  • Fix false positive in assign_op_pattern
  • Fix false positive in boxed_local on trait implementations
  • Fix false positive in cmp_owned
  • Fix false positive in collapsible_if when conditionals have comments
  • Fix false positive in double_parens
  • Fix false positive in excessive_precision
  • Fix false positive in explicit_counter_loop
  • Fix false positive in fn_to_numeric_cast_with_truncation
  • Fix false positive in map_clone
  • Fix false positive in new_ret_no_self
  • Fix false positive in new_without_default when new is unsafe
  • Fix false positive in type_complexity when using extern types
  • Fix false positive in useless_format
  • Fix false positive in wrong_self_convention
  • Fix incorrect suggestion for excessive_precision
  • Fix incorrect suggestion for expect_fun_call
  • Fix incorrect suggestion for get_unwrap
  • Fix incorrect suggestion for useless_format
  • fn_to_numeric_cast_with_truncation lint can be disabled again
  • Improve suggestions for manual_memcpy
  • Improve help message for needless_lifetimes

Rust 1.30

Released 2018-10-25

14207503...125907ad

  • Deprecate assign_ops lint
  • New lints: mistyped_literal_suffixes, ptr_offset_with_cast, needless_collect, copy_iterator
  • cargo clippy -V now includes the Clippy commit hash of the Rust Clippy component
  • Fix ICE in implicit_hasher
  • Fix ICE when encountering println!("{}" a);
  • Fix ICE when encountering a macro call in match statements
  • Fix false positive in default_trait_access
  • Fix false positive in trivially_copy_pass_by_ref
  • Fix false positive in similar_names
  • Fix false positive in redundant_field_name
  • Fix false positive in expect_fun_call
  • Fix false negative in identity_conversion
  • Fix false negative in explicit_counter_loop
  • Fix range_plus_one suggestion and false negative
  • print_with_newline / write_with_newline: don't warn about string with several \ns in them
  • Fix useless_attribute to also whitelist unused_extern_crates
  • Fix incorrect suggestion for single_char_pattern
  • Improve suggestion for identity_conversion lint
  • Move explicit_iter_loop and explicit_into_iter_loop from style group to pedantic
  • Move range_plus_one and range_minus_one from nursery group to complexity
  • Move shadow_unrelated from restriction group to pedantic
  • Move indexing_slicing from pedantic group to restriction

Rust 1.29

Released 2018-09-13

v0.0.212...14207503

  • 🎉 🎉 Rust 1.29 is the first stable Rust that includes a bundled Clippy 🎉 🎉 You can now run rustup component add clippy-preview and then cargo clippy to run Clippy. This should put an end to the continuous nightly upgrades for Clippy users.
  • Clippy now follows the Rust versioning scheme instead of its own
  • Fix ICE when encountering a while let (..) = x.iter() construct
  • Fix false positives in use_self
  • Fix false positive in trivially_copy_pass_by_ref
  • Fix false positive in useless_attribute lint
  • Fix false positive in print_literal
  • Fix use_self regressions
  • Improve lint message for neg_cmp_op_on_partial_ord
  • Improve suggestion highlight for single_char_pattern
  • Improve suggestions for various print/write macro lints
  • Improve website header

0.0.212 (2018-07-10)

  • Rustup to rustc 1.29.0-nightly (e06c87544 2018-07-06)

0.0.211

  • Rustup to rustc 1.28.0-nightly (e3bf634e0 2018-06-28)

0.0.210

  • Rustup to rustc 1.28.0-nightly (01cc982e9 2018-06-24)

0.0.209

  • Rustup to rustc 1.28.0-nightly (523097979 2018-06-18)

0.0.208

  • Rustup to rustc 1.28.0-nightly (86a8f1a63 2018-06-17)

0.0.207

  • Rustup to rustc 1.28.0-nightly (2a0062974 2018-06-09)

0.0.206

  • Rustup to rustc 1.28.0-nightly (5bf68db6e 2018-05-28)

0.0.205

  • Rustup to rustc 1.28.0-nightly (990d8aa74 2018-05-25)
  • Rename unused_lifetimes to extra_unused_lifetimes because of naming conflict with new rustc lint

0.0.204

  • Rustup to rustc 1.28.0-nightly (71e87be38 2018-05-22)

0.0.203

  • Rustup to rustc 1.28.0-nightly (a3085756e 2018-05-19)
  • Clippy attributes are now of the form clippy::cyclomatic_complexity instead of clippy(cyclomatic_complexity)

0.0.202

  • Rustup to rustc 1.28.0-nightly (952f344cd 2018-05-18)

0.0.201

  • Rustup to rustc 1.27.0-nightly (2f2a11dfc 2018-05-16)

0.0.200

  • Rustup to rustc 1.27.0-nightly (9fae15374 2018-05-13)

0.0.199

  • Rustup to rustc 1.27.0-nightly (ff2ac35db 2018-05-12)

0.0.198

  • Rustup to rustc 1.27.0-nightly (acd3871ba 2018-05-10)

0.0.197

  • Rustup to rustc 1.27.0-nightly (428ea5f6b 2018-05-06)

0.0.196

  • Rustup to rustc 1.27.0-nightly (e82261dfb 2018-05-03)

0.0.195

  • Rustup to rustc 1.27.0-nightly (ac3c2288f 2018-04-18)

0.0.194

0.0.193

  • Rustup to rustc 1.27.0-nightly (eeea94c11 2018-04-06)

0.0.192

0.0.191

  • Rustup to rustc 1.26.0-nightly (ae544ee1c 2018-03-29)
  • Lint audit; categorize lints as style, correctness, complexity, pedantic, nursery, restriction.

0.0.190

  • Fix a bunch of intermittent cargo bugs

0.0.189

  • Rustup to rustc 1.26.0-nightly (5508b2714 2018-03-18)

0.0.188

0.0.187

0.0.186

  • Rustup to rustc 1.25.0-nightly (0c6091fbd 2018-02-04)
  • Various false positive fixes

0.0.185

0.0.184

0.0.183

0.0.182

0.0.181

0.0.180

  • Rustup to rustc 1.25.0-nightly (3f92e8d89 2018-01-14)

0.0.179

  • Rustup to rustc 1.25.0-nightly (61452e506 2018-01-09)

0.0.178

  • Rustup to rustc 1.25.0-nightly (ee220daca 2018-01-07)

0.0.177

0.0.176

  • Rustup to rustc 1.24.0-nightly (0077d128d 2017-12-14)

0.0.175

  • Rustup to rustc 1.24.0-nightly (bb42071f6 2017-12-01)

0.0.174

  • Rustup to rustc 1.23.0-nightly (63739ab7b 2017-11-21)

0.0.173

  • Rustup to rustc 1.23.0-nightly (33374fa9d 2017-11-20)

0.0.172

  • Rustup to rustc 1.23.0-nightly (d0f8e2913 2017-11-16)

0.0.171

  • Rustup to rustc 1.23.0-nightly (ff0f5de3b 2017-11-14)

0.0.170

  • Rustup to rustc 1.23.0-nightly (d6b06c63a 2017-11-09)

0.0.169

0.0.168

  • Rustup to rustc 1.23.0-nightly (f0fe716db 2017-10-30)

0.0.167

0.0.166

0.0.165

0.0.164

0.0.163

  • Update to rustc 1.22.0-nightly (14039a42a 2017-09-22)

0.0.162

0.0.161

  • Update to rustc 1.22.0-nightly (539f2083d 2017-09-13)

0.0.160

  • Update to rustc 1.22.0-nightly (dd08c3070 2017-09-12)

0.0.159

0.0.158

0.0.157 - 2017-09-04

  • Update to rustc 1.22.0-nightly (981ce7d8d 2017-09-03)
  • New lint: unit_expr

0.0.156 - 2017-09-03

  • Update to rustc 1.22.0-nightly (744dd6c1d 2017-09-02)

0.0.155

0.0.154

  • Update to rustc 1.21.0-nightly (2c0558f63 2017-08-24)
  • Fix use_self triggering inside derives
  • Add support for linting an entire workspace with cargo clippy --all
  • New lint: naive_bytecount

0.0.153

0.0.152

  • Update to rustc 1.21.0-nightly (df511d554 2017-08-14)

0.0.151

  • Update to rustc 1.21.0-nightly (13d94d5fa 2017-08-10)

0.0.150

  • Update to rustc 1.21.0-nightly (215e0b10e 2017-08-08)

0.0.148

0.0.147

  • Update to rustc 1.21.0-nightly (aac223f4f 2017-07-30)

0.0.146

  • Update to rustc 1.21.0-nightly (52a330969 2017-07-27)
  • Fixes false positives in inline_always
  • Fixes false negatives in panic_params

0.0.145

  • Update to rustc 1.20.0-nightly (afe145d22 2017-07-23)

0.0.144

  • Update to rustc 1.20.0-nightly (086eaa78e 2017-07-15)

0.0.143

  • Update to rustc 1.20.0-nightly (d84693b93 2017-07-09)
  • Fix cargo clippy crashing on dylib projects
  • Fix false positives around nested_while_let and never_loop

0.0.142

  • Update to rustc 1.20.0-nightly (067971139 2017-07-02)

0.0.141

0.0.140 - 2017-06-16

  • Update to rustc 1.19.0-nightly (258ae6dd9 2017-06-15)

0.0.139 — 2017-06-10

0.0.138 — 2017-06-05

  • Update to rustc 1.19.0-nightly (0418fa9d3 2017-06-04)

0.0.137 — 2017-06-05

  • Update to rustc 1.19.0-nightly (6684d176c 2017-06-03)

0.0.136 — 2017—05—26

  • Update to rustc 1.19.0-nightly (557967766 2017-05-26)

0.0.135 — 2017—05—24

  • Update to rustc 1.19.0-nightly (5b13bff52 2017-05-23)

0.0.134 — 2017—05—19

  • Update to rustc 1.19.0-nightly (0ed1ec9f9 2017-05-18)

0.0.133 — 2017—05—14

  • Update to rustc 1.19.0-nightly (826d8f385 2017-05-13)

0.0.132 — 2017—05—05

  • Fix various bugs and some ices

0.0.131 — 2017—05—04

  • Update to rustc 1.19.0-nightly (2d4ed8e0c 2017-05-03)

0.0.130 — 2017—05—03

  • Update to rustc 1.19.0-nightly (6a5fc9eec 2017-05-02)

0.0.129 — 2017-05-01

  • Update to rustc 1.19.0-nightly (06fb4d256 2017-04-30)

0.0.128 — 2017-04-28

  • Update to rustc 1.18.0-nightly (94e884b63 2017-04-27)

0.0.127 — 2017-04-27

0.0.126 — 2017-04-24

  • Update to rustc 1.18.0-nightly (2bd4b5c6d 2017-04-23)

0.0.125 — 2017-04-19

  • Update to rustc 1.18.0-nightly (9f2abadca 2017-04-18)

0.0.124 — 2017-04-16

  • Update to rustc 1.18.0-nightly (d5cf1cb64 2017-04-15)

0.0.123 — 2017-04-07

  • Fix various false positives

0.0.122 — 2017-04-07

0.0.121 — 2017-03-21

  • Rustup to rustc 1.17.0-nightly (134c4a0f0 2017-03-20)

0.0.120 — 2017-03-17

  • Rustup to rustc 1.17.0-nightly (0aeb9c129 2017-03-15)

0.0.119 — 2017-03-13

  • Rustup to rustc 1.17.0-nightly (824c9ebbd 2017-03-12)

0.0.118 — 2017-03-05

  • Rustup to rustc 1.17.0-nightly (b1e31766d 2017-03-03)

0.0.117 — 2017-03-01

  • Rustup to rustc 1.17.0-nightly (be760566c 2017-02-28)

0.0.116 — 2017-02-28

  • Fix cargo clippy on 64 bit windows systems

0.0.115 — 2017-02-27

0.0.114 — 2017-02-08

  • Rustup to rustc 1.17.0-nightly (c49d10207 2017-02-07)
  • Tests are now ui tests (testing the exact output of rustc)

0.0.113 — 2017-02-04

0.0.112 — 2017-01-27

  • Rustup to rustc 1.16.0-nightly (df8debf6d 2017-01-25)

0.0.111 — 2017-01-21

  • Rustup to rustc 1.16.0-nightly (a52da95ce 2017-01-20)

0.0.110 — 2017-01-20

  • Add badges and categories to Cargo.toml

0.0.109 — 2017-01-19

  • Update to rustc 1.16.0-nightly (c07a6ae77 2017-01-17)

0.0.108 — 2017-01-12

  • Update to rustc 1.16.0-nightly (2782e8f8f 2017-01-12)

0.0.107 — 2017-01-11

0.0.106 — 2017-01-04

0.0.105 — 2017-01-04

0.0.104 — 2016-12-15

  • Update to rustc 1.15.0-nightly (8f02c429a 2016-12-15)

0.0.103 — 2016-11-25

  • Update to rustc 1.15.0-nightly (d5814b03e 2016-11-23)

0.0.102 — 2016-11-24

  • Update to rustc 1.15.0-nightly (3bf2be9ce 2016-11-22)

0.0.101 — 2016-11-23

0.0.100 — 2016-11-20

  • Update to rustc 1.15.0-nightly (ac635aa95 2016-11-18)

0.0.99 — 2016-11-18

0.0.98 — 2016-11-08

  • Fixes an issue due to a change in how cargo handles --sysroot, which broke cargo clippy

0.0.97 — 2016-11-03

  • For convenience, cargo clippy defines a cargo-clippy feature. This was previously added for a short time under the name clippy but removed for compatibility.
  • cargo clippy --help is more helping (and less helpful 😄)
  • Rustup to rustc 1.14.0-nightly (5665bdf3e 2016-11-02)
  • New lints: if_let_redundant_pattern_matching, partialeq_ne_impl

0.0.96 — 2016-10-22

0.0.95 — 2016-10-06

  • Rustup to rustc 1.14.0-nightly (3210fd5c2 2016-10-05)

0.0.94 — 2016-10-04

  • Fixes bustage on Windows due to forbidden directory name

0.0.93 — 2016-10-03

0.0.92 — 2016-09-30

  • Rustup to rustc 1.14.0-nightly (289f3a4ca 2016-09-29)

0.0.91 — 2016-09-28

  • Rustup to rustc 1.13.0-nightly (d0623cf7b 2016-09-26)

0.0.90 — 2016-09-09

  • Rustup to rustc 1.13.0-nightly (f1f40f850 2016-09-09)

0.0.89 — 2016-09-06

  • Rustup to rustc 1.13.0-nightly (cbe4de78e 2016-09-05)

0.0.88 — 2016-09-04

0.0.87 — 2016-08-31

0.0.86 — 2016-08-28

0.0.85 — 2016-08-19

0.0.84 — 2016-08-18

  • Rustup to rustc 1.13.0-nightly (aef6971ca 2016-08-17)

0.0.83 — 2016-08-17

0.0.82 — 2016-08-17

0.0.81 — 2016-08-14

0.0.80 — 2016-07-31

0.0.79 — 2016-07-10

  • Rustup to rustc 1.12.0-nightly (f93aaf84c 2016-07-09)
  • Major suggestions refactoring

0.0.78 — 2016-07-02

0.0.77 — 2016-06-21

  • Rustup to rustc 1.11.0-nightly (5522e678b 2016-06-20)
  • New lints: stutter and iter_nth

0.0.76 — 2016-06-10

0.0.75 — 2016-06-08

  • Rustup to rustc 1.11.0-nightly (763f9234b 2016-06-06)

0.0.74 — 2016-06-07

  • Fix bug with cargo-clippy JSON parsing
  • Add the CLIPPY_DISABLE_DOCS_LINKS environment variable to deactivate the “for further information visit lint-link” message.

0.0.73 — 2016-06-05

0.0.72 — 2016-06-04

0.0.71 — 2016-05-31

0.0.70 — 2016-05-28

0.0.69 — 2016-05-20

0.0.68 — 2016-05-17

0.0.67 — 2016-05-12

  • Rustup to rustc 1.10.0-nightly (22ac88f1a 2016-05-11)

0.0.66 — 2016-05-11

0.0.65 — 2016-05-08

0.0.64 — 2016-04-26

0.0.63 — 2016-04-08

  • Rustup to rustc 1.9.0-nightly (7979dd608 2016-04-07)

0.0.62 — 2016-04-07

  • Rustup to rustc 1.9.0-nightly (bf5da36f1 2016-04-06)

0.0.61 — 2016-04-03

0.0.60 — 2016-04-01

  • Rustup to rustc 1.9.0-nightly (e1195c24b 2016-03-31)

0.0.59 — 2016-03-31

0.0.58 — 2016-03-27

0.0.57 — 2016-03-27

0.0.56 — 2016-03-23

0.0.55 — 2016-03-21

  • Update to rustc 1.9.0-nightly (02310fd31 2016-03-19)

0.0.54 — 2016-03-16

  • Update to rustc 1.9.0-nightly (c66d2380a 2016-03-15)

0.0.53 — 2016-03-15

0.0.52

0.0.51 — 2016-03-13

0.0.50 — 2016-03-11

  • Update to rustc 1.9.0-nightly (c9629d61c 2016-03-10)

0.0.49 — 2016-03-09

0.0.48 — 2016-03-07

0.0.47 — 2016-03-07