<commit_before>## Master

##### Breaking

* `variable_name` rule (`VariableNameRule`) is now `identifier_name`
  (`IdentifierNameRule`) as it validates other identifiers as well.  
  [<NAME>](https://github.com/marcelofabri)
  [#663](https://github.com/realm/SwiftLint/issues/663)

* Fix `sorted_imports` rule to sort ignoring case.  
  [<NAME>](https://github.com/keith)
  [#1185](https://github.com/realm/SwiftLint/issues/1185)

* Temporarily disable cache when linting. This will be reverted on a
  later version, after we fix the issues related to caching.  
  [<NAME>](https://github.com/marcelofabri)

##### Enhancements

* Add `implicitly_unwrapped_optional` opt-in rule
  that warns when using implicitly unwrapped optional,
  except cases when this IUO is IBOutlet.  
  [<NAME>](https://github.com/SiarheiFedartsou/)
  [#56](https://github.com/realm/SwiftLint/issues/56)

* Performance improvements to `generic_type_name`,
  `redundant_nil_coalescing`, `mark`, `first_where` and
  `vertical_whitespace` rules.  
  [<NAME>](https://github.com/marcelofabri)

* Add `discarded_notification_center_observer` rule
  that warns when the result of
  `NotificationCenter.addObserver(forName:object:queue:using:)`
  is not stored so it can be removed later.  
  [<NAME>](https://github.com/marcelofabri)
  [#1062](https://github.com/realm/SwiftLint/issues/1062)

* Add `notification_center_detachment` rule that warns against an object
  removing itself from `NotificationCenter` in an unsafe location.  
  [<NAME>](https://github.com/marcelofabri)
  [#1061](https://github.com/realm/SwiftLint/issues/1061)

* Accept `AnyObject` and `NSObjectProtocol` in `class_delegate_protocol`.  
  [<NAME>](https://github.com/jshier)
  [#1261](https://github.com/realm/SwiftLint/issues/1261)

* Add `ignores_function_declarations` and `ignores_comments` as options
  to `LineLengthRule`.  
  [<NAME>](https://github.com/mlwelles)
  [#598](https://github.com/realm/SwiftLint/issues/598)
  [#975](https://github.com/realm/SwiftLint/issues/975)

* Add `for_where` rule that validates that `where` is used in a `for` loop
  instead of a single `if` expression inside the loop.  
  [<NAME>](https://github.com/marcelofabri)
  [#1228](https://github.com/realm/SwiftLint/issues/1228)

* `unused_enumerated` rule now warns when only the index is being used.
  You should use `.indices` instead of `.enumerated()` in this case.  
  [<NAME>](https://github.com/marcelofabri)
  [#1278](https://github.com/realm/SwiftLint/issues/1278)

* Add `ignores_case_statements` as option to `CyclomaticComplexityRule`.  
  [<NAME>](https://github.com/mlwelles)
  [#1298](https://github.com/realm/SwiftLint/issues/1298)

* Add correctable `redundant_discardable_let` rule that warns when
  `let _ = foo()` is used to discard a result from a function instead of
  `_ = foo()`.  
  [<NAME>](https://github.com/marcelofabri)
  [#1232](https://github.com/realm/SwiftLint/issues/1232)

* Accept global and local variables in `implicit_getter` rule.  
  [<NAME>abri](https://github.com/marcelofabri)

* Add `--enabled` (or `-e`) switch to the `rules` CLI command, to only
  display enabled rules.  
  [<NAME>](https://github.com/NatanRolnik)
  [#1270](https://github.com/realm/SwiftLint/issues/1270)

* Now `nesting` rule can be configured with a type and statement level.  
  [<NAME>](https://github.com/sora0077)
  [#1318](https://github.com/realm/SwiftLint/issues/1318)

* Add `explicit_type_interface` opt-in rule that validates that the properties
  have an explicit type interface.  
  [Kim de Vos](https://github.com/kimdv)

* Add `--lenient` CLI option to `lint` command. Facilitates running a
  lint task that doesn't fail a pipeline of other tasks.  
  [aaroncrespo](https://github.com/aaroncrespo)
  [#1322](https://github.com/realm/SwiftLint/issues/1322)

* Add `fatal_error_message` opt-in rule that validates that `fatalError()` calls
  have a message.  
  [Kim de Vos](https://github.com/kimdv)
  [#1348](https://github.com/realm/SwiftLint/issues/1348)

##### Bug Fixes

* Fix crashes when accessing cached regular expressions when linting in
  parallel.  
  [<NAME>](https://github.com/jpsim)
  [#1344](https://github.com/realm/SwiftLint/issues/1344)

* Fix a false positive on `large_tuple` rule when using closures.  
  [<NAME>](https://github.com/marcelofabri)
  [#1234](https://github.com/realm/SwiftLint/issues/1234)

* Fix `force_unwrap` false positive for bool negation.  
  [<NAME>](https://github.com/aamctustwo)
  [#918](https://github.com/realm/SwiftLint/issues/918)

* Fix false positive and wrong correction on `number_separator` rule.  
  [<NAME>](https://github.com/marcelofabri)
  [#1242](https://github.com/realm/SwiftLint/issues/1242)

* Retain closure parameter types when they are specified during autocorrect.  
  [<NAME>](https://github.com/allen-zeng)
  [#1175](https://github.com/realm/SwiftLint/issues/1175)

* Fix `redundant_void_return` matches if return type starts with Void~.  
  [<NAME>](https://github.com/sora0077)

* Ignore `unused_closure_parameter` rule on closures that are called inline.  
  [<NAME>](https://github.com/marcelofabri)
  [#1161](https://github.com/realm/SwiftLint/issues/1161)

* Disable `valid_docs` and `missing_docs` rules when running in Swift 2.3 or
  later as they have not been updated to work with those versions of Swift.
  Both rules are now opt-in because of this.  
  [<NAME>](https://github.com/jpsim)
  [#728](https://github.com/realm/SwiftLint/issues/728)

* Fix false positive on `large_tuple` rule when using generics inside a tuple.  
  [<NAME>](https://github.com/marcelofabri)
  [#1257](https://github.com/realm/SwiftLint/issues/1257)

* Make `ASTRule` default implementation to navigate through the substructure
  even if its children are from a different kind. This fixes some violations
  not being reported in some contexts.  
  [<NAME>](https://github.com/marcelofabri)
  [#1237](https://github.com/realm/SwiftLint/issues/1237)

* Reimplement `switch_case_on_newline` rule to be an `ASTRule` and be more
  reliable, fixing some false negatives and false positives.  
  [<NAME>](https://github.com/marcelofabri)
  [#1268](https://github.com/realm/SwiftLint/issues/1268)

* Fix `closure_end_indentation` rule false positive when using single-line
  closures.  
  [<NAME>](https://github.com/marcelofabri)
  [#1216](https://github.com/realm/SwiftLint/issues/1216)

* Fix `todo` rule messages when the comment is not on a new line.  
  [<NAME>](https://github.com/marcelofabri)
  [#1304](https://github.com/realm/SwiftLint/issues/1304)

* Fix false negative on `unused_closure_parameter` rule.  
  [<NAME>](https://github.com/sora0077)

* Fix `checkstyle` report format.  
  [<NAME>](https://github.com/YukiOya)

## 0.16.1: Commutative Fabric Sheets

##### Breaking

* None.

##### Enhancements

* Improve `unused_optional_binding` rule on tuples check.  
  [<NAME>](https://github.com/rakaramos/)

* Update `variable_name` to ignore overrides.  
  [<NAME>](https://github.com/aamctustwo)
  [#1169](https://github.com/realm/SwiftLint/issues/1169)

* Update `number_separator` rule to allow for specifying
  minimum length of fraction.  
  [<NAME>](https://github.com/bjarkehs)
  [#1200](https://github.com/realm/SwiftLint/issues/1200)

* Update `legacy_constant` rule to support `CGFloat.pi` and `Float.pi`.  
  [<NAME>](https://github.com/aamctustwo)
  [#1198](https://github.com/realm/SwiftLint/issues/1198)

##### Bug Fixes

* Fix false positives on `shorthand_operator` rule.  
  [<NAME>](https://github.com/marcelofabri)
  [#1156](https://github.com/realm/SwiftLint/issues/1156)
  [#1163](https://github.com/realm/SwiftLint/issues/1163)

* Fix false positive on `redundant_optional_initialization` rule.  
  [<NAME>](https://github.com/marcelofabri)
  [#1159](https://github.com/realm/SwiftLint/issues/1159)

* Fix false positive on `operator_usage_whitespace` rule with decimal
  literals in exponent format.  
  [<NAME>](https://github.com/marcelofabri)
  [#1153](https://github.com/realm/SwiftLint/issues/1153)

* Fix `excluded` configuration not excluding files.  
  [<NAME>](https://github.com/marcelofabri)
  [#1166](https://github.com/realm/SwiftLint/issues/1166)

* Disable commutative operations on `shorthand_operator` rule.  
  [<NAME>](https://github.com/marcelofabri)
  [#1182](https://github.com/realm/SwiftLint/issues/1182)
  [#1183](https://github.com/realm/SwiftLint/issues/1183)
  [#1211](https://github.com/realm/SwiftLint/issues/1211)

* Fix crash when running in a Sandboxed environment, which also fixes Homebrew
  distribution. Set the `SWIFTLINT_SWIFT_VERSION` environment variable to either
  `2` or `3` to force that operation mode, bypassing the Swift version
  determined from SourceKit.  
  [<NAME>](https://github.com/jpsim)

## 0.16.0: Maximum Energy Efficiency Setting

##### Breaking

* Several API breaking changes were made to conform to the Swift 3 API Design
  Guidelines. We apologize for any inconvenience this may have caused.

##### Enhancements

* Speed up linting by caching linter results across invocations.  
  [<NAME>](https://github.com/marcelofabri)
  [#868](https://github.com/realm/SwiftLint/issues/868)

* Speed up linting by processing multiple files and rules concurrently.  
  [<NAME>](https://github.com/jpsim)
  [#1077](https://github.com/realm/SwiftLint/issues/1077)

* Make many operations in SwiftLintFramework safe to call in multithreaded
  scenarios, including accessing `Linter.styleViolations`.  
  [<NAME>](https://github.com/jpsim)
  [#1077](https://github.com/realm/SwiftLint/issues/1077)

* Permit unsigned and explicitly-sized integer types in `valid_ibinspectable`  
  [<NAME>](https://github.com/dduan)

* Make `nimble_operator` rule correctable.  
  [Vojta Stavik](https://github.com/VojtaStavik)

* Add `vertical_parameter_alignment` rule that checks if parameters are
  vertically aligned for multi-line function declarations.  
  [<NAME>](https://github.com/marcelofabri)
  [#1033](https://github.com/realm/SwiftLint/issues/1033)

* Add more helpful reason strings to TrailingCommaRule.  
  [<NAME>](https://github.com/mattrubin)

* Add `class_delegate_protocol` rule that warns against protocol declarations
  that aren't marked as `: class` or `@objc`.  
  [<NAME>](https://github.com/marcelofabri)
  [#1039](https://github.com/realm/SwiftLint/issues/1039)

* Add correctable `redundant_optional_initialization` rule that warns against
  initializing optional variables with `nil`.  
  [<NAME>](https://github.com/marcelofabri)
  [#1052](https://github.com/realm/SwiftLint/issues/1052)

* `redundant_nil_coalescing` rule is now correctable.  
  [<NAME>](https://github.com/marcelofabri)

* Make `number_separator` rule correctable.  
  [<NAME>](https://github.com/marcelofabri)

* `empty_parentheses_with_trailing_closure` rule is now correctable.  
  [<NAME>](https://github.com/marcelofabri)

* Add correctable `redundant_void_return` rule that warns against
  explicitly adding `-> Void` to functions.  
  [<NAME>](https://github.com/marcelofabri)
  [#1066](https://github.com/realm/SwiftLint/issues/1066)

* Add an opt-in rule that enforces alphabetical sorting of imports.  
  [<NAME>](https://github.com/sberrevoets)
  [#900](https://github.com/realm/SwiftLint/issues/900)

* `type_name` rule forces enum values to be UpperCamelCase again
  when used with Swift 2.3.  
  [<NAME>](https://github.com/marcelofabri)
  [#1090](https://github.com/realm/SwiftLint/issues/1090)

* Make `weak_delegate` rule ignore computed properties.  
  [<NAME>](https://github.com/rakaramos/)
  [#1089](https://github.com/realm/SwiftLint/issues/1089)

* Add `object_literal` opt-in rule that warns against using image and color
  inits that can be replaced for `#imageLiteral` or `#colorLiteral` in
  Swift 3.  
  [<NAME>](https://github.com/marcelofabri)
  [#1060](https://github.com/realm/SwiftLint/issues/1060)

* Now `number_separator` rule can be configured with a minimum length.  
  [<NAME>](https://github.com/marcelofabri)
  [#1109](https://github.com/realm/SwiftLint/issues/1109)

* Add `compiler_protocol_init` rule that flags usage of initializers
  declared in protocols used by the compiler such as `ExpressibleByArrayLiteral`
  that shouldn't be called directly. Instead, you should use a literal anywhere
  a concrete type conforming to the protocol is expected by the context.  
  [<NAME>](https://github.com/marcelofabri)
  [#1096](https://github.com/realm/SwiftLint/issues/1096)

* Add `large_tuple` configurable rule that validates that tuples shouldn't
  have too many members.  
  [<NAME>](https://github.com/marcelofabri)
  [#1065](https://github.com/realm/SwiftLint/issues/1065)

* Add `generic_type_name` rule that validates generic constraint type names.  
  [<NAME>](https://github.com/marcelofabri)
  [#51](https://github.com/realm/SwiftLint/issues/51)

* Update `vertical_whitespace` rule to allow configuration of the number of
  consecutive empty lines before a violation using `max_empty_lines`.
  The default value is still 1 line.  
  [<NAME>](https://github.com/aamctustwo)
  [#769](https://github.com/realm/SwiftLint/issues/769)

* Add check to ignore urls in `line_length` rule when `ignores_urls`
  configuration is enabled.  
  [<NAME>](https://github.com/jaherhi)
  [#384](https://github.com/realm/SwiftLint/issues/384)

* Add `shorthand_operator` rule that validates that shorthand operators should
  be used when possible.  
  [<NAME>](https://github.com/marcelofabri)
  [#902](https://github.com/realm/SwiftLint/issues/902)

* Allow specifying a `swiftlint_version` configuration key which will log a
  warning if the current running version of SwiftLint is different than this
  value.  
  [<NAME>](https://github.com/jpsim)
  [#221](https://github.com/realm/SwiftLint/issues/221)

* Add internal support for deprecated rule aliases.  
  [<NAME>](https://github.com/marcelofabri)
  [#973](https://github.com/realm/SwiftLint/issues/973)

* Add `unused_optional_binding` rule that will check for optional bindings
  not being used.  
  [<NAME>](https://github.com/rakaramos/)
  [#1116](https://github.com/realm/SwiftLint/issues/1116)

##### Bug Fixes

* Ignore close parentheses on `vertical_parameter_alignment` rule.  <commit_msg>formatting fixes for changelog<commit_after>## Master

##### Breaking

* `variable_name` rule (`VariableNameRule`) is now `identifier_name`
  (`IdentifierNameRule`) as it validates other identifiers as well.  
  [<NAME>](https://github.com/marcelofabri)
  [#663](https://github.com/realm/SwiftLint/issues/663)

* Fix `sorted_imports` rule to sort ignoring case.  
  [<NAME>](https://github.com/keith)
  [#1185](https://github.com/realm/SwiftLint/issues/1185)

* Temporarily disable cache when linting. This will be re-enabled in a future
  version after important cache-related issues have been addressed.  
  [<NAME>](https://github.com/marcelofabri)

##### Enhancements

* Add `implicitly_unwrapped_optional` opt-in rule that warns against using
  implicitly unwrapped optionals, except cases when this IUO is an IBOutlet.
  [<NAME>](https://github.com/SiarheiFedartsou)
  [#56](https://github.com/realm/SwiftLint/issues/56)

* Performance improvements to `generic_type_name`, `redundant_nil_coalescing`,
  `mark`, `first_where` and `vertical_whitespace` rules.
  [<NAME>](https://github.com/marcelofabri)

* Add `discarded_notification_center_observer` rule that warns when the result
  of `NotificationCenter.addObserver(forName:object:queue:using:)` is not stored
  so it can be removed later.
  [<NAME>](https://github.com/marcelofabri)
  [#1062](https://github.com/realm/SwiftLint/issues/1062)

* Add `notification_center_detachment` rule that warns against an object
  removing itself from `NotificationCenter` in an unsafe location.  
  [<NAME>](https://github.com/marcelofabri)
  [#1061](https://github.com/realm/SwiftLint/issues/1061)

* Accept `AnyObject` and `NSObjectProtocol` in `class_delegate_protocol`.  
  [<NAME>](https://github.com/jshier)
  [#1261](https://github.com/realm/SwiftLint/issues/1261)

* Add `ignores_function_declarations` and `ignores_comments` as options to
  `LineLengthRule`.
  [<NAME>](https://github.com/mlwelles)
  [#598](https://github.com/realm/SwiftLint/issues/598)
  [#975](https://github.com/realm/SwiftLint/issues/975)

* Add `for_where` rule that validates that `where` is used in a `for` loop
  instead of a single `if` expression inside the loop.  
  [<NAME>](https://github.com/marcelofabri)
  [#1228](https://github.com/realm/SwiftLint/issues/1228)

* `unused_enumerated` rule now warns when only the index is being used.
  You should use `.indices` instead of `.enumerated()` in this case.  
  [<NAME>](https://github.com/marcelofabri)
  [#1278](https://github.com/realm/SwiftLint/issues/1278)

* Add `ignores_case_statements` as option to `CyclomaticComplexityRule`.  
  [<NAME>](https://github.com/mlwelles)
  [#1298](https://github.com/realm/SwiftLint/issues/1298)

* Add correctable `redundant_discardable_let` rule that warns when
  `let _ = foo()` is used to discard a result from a function instead of
  `_ = foo()`.  
  [<NAME>](https://github.com/marcelofabri)
  [#1232](https://github.com/realm/SwiftLint/issues/1232)

* Accept global and local variables in `implicit_getter` rule.  
  [<NAME>](https://github.com/marcelofabri)

* Add `--enabled` (or `-e`) switch to the `rules` CLI command, to only display
  enabled rules.
  [<NAME>](https://github.com/NatanRolnik)
  [#1270](https://github.com/realm/SwiftLint/issues/1270)

* Now `nesting` rule can be configured with a type and statement level.  
  [<NAME>](https://github.com/sora0077)
  [#1318](https://github.com/realm/SwiftLint/issues/1318)

* Add `explicit_type_interface` opt-in rule that validates that the properties
  have an explicit type interface.  
  [<NAME>](https://github.com/kimdv)

* Add `--lenient` CLI option to `lint` command. Facilitates running a lint task
  that doesn't fail a pipeline of other tasks.
  [aaroncrespo](https://github.com/aaroncrespo)
  [#1322](https://github.com/realm/SwiftLint/issues/1322)

* Add `fatal_error_message` opt-in rule that validates that `fatalError()` calls
  have a message.  
  [<NAME>](https://github.com/kimdv)
  [#1348](https://github.com/realm/SwiftLint/issues/1348)

##### Bug Fixes

* Fix crashes when accessing cached regular expressions when linting in
  parallel.  
  [<NAME>](https://github.com/jpsim)
  [#1344](https://github.com/realm/SwiftLint/issues/1344)

* Fix a false positive on `large_tuple` rule when using closures.  
  [<NAME>](https://github.com/marcelofabri)
  [#1234](https://github.com/realm/SwiftLint/issues/1234)

* Fix `force_unwrap` false positive for bool negation.  
  [<NAME>](https://github.com/aamctustwo)
  [#918](https://github.com/realm/SwiftLint/issues/918)

* Fix false positive and wrong correction on `number_separator` rule.  
  [<NAME>](https://github.com/marcelofabri)
  [#1242](https://github.com/realm/SwiftLint/issues/1242)

* Retain closure parameter types when they are specified during autocorrect.  
  [<NAME>](https://github.com/allen-zeng)
  [#1175](https://github.com/realm/SwiftLint/issues/1175)

* Fix `redundant_void_return` matches if return type starts with Void~.  
  [<NAME>](https://github.com/sora0077)

* Ignore `unused_closure_parameter` rule on closures that are called inline.  
  [<NAME>](https://github.com/marcelofabri)
  [#1161](https://github.com/realm/SwiftLint/issues/1161)

* Disable `valid_docs` and `missing_docs` rules when running in Swift 2.3 or
  later as they have not been updated to work with those versions of Swift.
  Both rules are now opt-in because of this.  
  [<NAME>](https://github.com/jpsim)
  [#728](https://github.com/realm/SwiftLint/issues/728)

* Fix false positive on `large_tuple` rule when using generics inside a tuple.  
  [<NAME>](https://github.com/marcelofabri)
  [#1257](https://github.com/realm/SwiftLint/issues/1257)

* Make `ASTRule` default implementation to navigate through the substructure
  even if its children are from a different kind. This fixes some violations not
  being reported in some contexts.
  [<NAME>](https://github.com/marcelofabri)
  [#1237](https://github.com/realm/SwiftLint/issues/1237)

* Reimplement `switch_case_on_newline` rule to be an `ASTRule` and be more
  reliable, fixing some false negatives and false positives.  
  [<NAME>](https://github.com/marcelofabri)
  [#1268](https://github.com/realm/SwiftLint/issues/1268)

* Fix `closure_end_indentation` rule false positive when using single-line
  closures.  
  [<NAME>](https://github.com/marcelofabri)
  [#1216](https://github.com/realm/SwiftLint/issues/1216)

* Fix `todo` rule messages when the comment is not on a new line.  
  [<NAME>](https://github.com/marcelofabri)
  [#1304](https://github.com/realm/SwiftLint/issues/1304)

* Fix false negative on `unused_closure_parameter` rule.  
  [<NAME>](https://github.com/sora0077)

* Fix `checkstyle` report format.  
  [Y<NAME>](https://github.com/YukiOya)

## 0.16.1: Commutative Fabric Sheets

##### Breaking

* None.

##### Enhancements

* Improve `unused_optional_binding` rule on tuples check.  
  [<NAME>](https://github.com/rakaramos)

* Update `variable_name` to ignore overrides.  
  [<NAME>](https://github.com/aamctustwo)
  [#1169](https://github.com/realm/SwiftLint/issues/1169)

* Update `number_separator` rule to allow for specifying
  minimum length of fraction.  
  [<NAME>](https://github.com/bjarkehs)
  [#1200](https://github.com/realm/SwiftLint/issues/1200)

* Update `legacy_constant` rule to support `CGFloat.pi` and `Float.pi`.  
  [<NAME>](https://github.com/aamctustwo)
  [#1198](https://github.com/realm/SwiftLint/issues/1198)

##### Bug Fixes

* Fix false positives on `shorthand_operator` rule.  
  [<NAME>](https://github.com/marcelofabri)
  [#1156](https://github.com/realm/SwiftLint/issues/1156)
  [#1163](https://github.com/realm/SwiftLint/issues/1163)

* Fix false positive on `redundant_optional_initialization` rule.  
  [<NAME>](https://github.com/marcelofabri)
  [#1159](https://github.com/realm/SwiftLint/issues/1159)

* Fix false positive on `operator_usage_whitespace` rule with decimal
  literals in exponent format.  
  [<NAME>](https://github.com/marcelofabri)
  [#1153](https://github.com/realm/SwiftLint/issues/1153)

* Fix `excluded` configuration not excluding files.  
  [<NAME>](https://github.com/marcelofabri)
  [#1166](https://github.com/realm/SwiftLint/issues/1166)

* Disable commutative operations on `shorthand_operator` rule.  
  [<NAME>](https://github.com/marcelofabri)
  [#1182](https://github.com/realm/SwiftLint/issues/1182)
  [#1183](https://github.com/realm/SwiftLint/issues/1183)
  [#1211](https://github.com/realm/SwiftLint/issues/1211)

* Fix crash when running in a Sandboxed environment, which also fixes Homebrew
  distribution. Set the `SWIFTLINT_SWIFT_VERSION` environment variable to either
  `2` or `3` to force that operation mode, bypassing the Swift version
  determined from SourceKit.  
  [<NAME>](https://github.com/jpsim)

## 0.16.0: Maximum Energy Efficiency Setting

##### Breaking

* Several API breaking changes were made to conform to the Swift 3 API Design
  Guidelines. We apologize for any inconvenience this may have caused.

##### Enhancements

* Speed up linting by caching linter results across invocations.  
  [<NAME>](https://github.com/marcelofabri)
  [#868](https://github.com/realm/SwiftLint/issues/868)

* Speed up linting by processing multiple files and rules concurrently.  
  [<NAME>](https://github.com/jpsim)
  [#1077](https://github.com/realm/SwiftLint/issues/1077)

* Make many operations in SwiftLintFramework safe to call in multithreaded
  scenarios, including accessing `Linter.styleViolations`.  
  [<NAME>](https://github.com/jpsim)
  [#1077](https://github.com/realm/SwiftLint/issues/1077)

* Permit unsigned and explicitly-sized integer types in `valid_ibinspectable`  
  [<NAME>](https://github.com/dduan)

* Make `nimble_operator` rule correctable.  
  [<NAME>](https://github.com/VojtaStavik)

* Add `vertical_parameter_alignment` rule that checks if parameters are
  vertically aligned for multi-line function declarations.  
  [<NAME>](https://github.com/marcelofabri)
  [#1033](https://github.com/realm/SwiftLint/issues/1033)

* Add more helpful reason strings to TrailingCommaRule.  
  [<NAME>](https://github.com/mattrubin)

* Add `class_delegate_protocol` rule that warns against protocol declarations
  that aren't marked as `: class` or `@objc`.  
  [<NAME>](https://github.com/marcelofabri)
  [#1039](https://github.com/realm/SwiftLint/issues/1039)

* Add correctable `redundant_optional_initialization` rule that warns against
  initializing optional variables with `nil`.  
  [<NAME>](https://github.com/marcelofabri)
  [#1052](https://github.com/realm/SwiftLint/issues/1052)

* `redundant_nil_coalescing` rule is now correctable.  
  [<NAME>](https://github.com/marcelofabri)

* Make `number_separator` rule correctable.  
  [<NAME>](https://github.com/marcelofabri)

* `empty_parentheses_with_trailing_closure` rule is now correctable.  
  [<NAME>](https://github.com/marcelofabri)

* Add correctable `redundant_void_return` rule that warns against
  explicitly adding `-> Void` to functions.  
  [<NAME>](https://github.com/marcelofabri)
  [#1066](https://github.com/realm/SwiftLint/issues/1066)

* Add an opt-in rule that enforces alphabetical sorting of imports.  
  [<NAME>](https://github.com/sberrevoets)
  [#900](https://github.com/realm/SwiftLint/issues/900)

* `type_name` rule forces enum values to be UpperCamelCase again
  when used with Swift 2.3.  
  [<NAME>](https://github.com/marcelofabri)
  [#1090](https://github.com/realm/SwiftLint/issues/1090)

* Make `weak_delegate` rule ignore computed properties.  
  [<NAME>](https://github.com/rakaramos)
  [#1089](https://github.com/realm/SwiftLint/issues/1089)

* Add `object_literal` opt-in rule that warns against using image and color
  inits that can be replaced for `#imageLiteral` or `#colorLiteral` in
  Swift 3.  
  [<NAME>](https://github.com/marcelofabri)
  [#1060](https://github.com/realm/SwiftLint/issues/1060)

* Now `number_separator` rule can be configured with a minimum length.  
  [<NAME>](https://github.com/marcelofabri)
  [#1109](https://github.com/realm/SwiftLint/issues/1109)

* Add `compiler_protocol_init` rule that flags usage of initializers
  declared in protocols used by the compiler such as `ExpressibleByArrayLiteral`
  that shouldn't be called directly. Instead, you should use a literal anywhere
  a concrete type conforming to the protocol is expected by the context.  
  [<NAME>](https://github.com/marcelofabri)
  [#1096](https://github.com/realm/SwiftLint/issues/1096)

* Add `large_tuple` configurable rule that validates that tuples shouldn't
  have too many members.  
  [<NAME>](https://github.com/marcelofabri)
  [#1065](https://github.com/realm/SwiftLint/issues/1065)

* Add `generic_type_name` rule that validates generic constraint type names.  
  [<NAME>](https://github.com/marcelofabri)
  [#51](https://github.com/realm/SwiftLint/issues/51)

* Update `vertical_whitespace` rule to allow configuration of the number of
  consecutive empty lines before a violation using `max_empty_lines`.
  The default value is still 1 line.  
  [<NAME>](https://github.com/aamctustwo)
  [#769](https://github.com/realm/SwiftLint/issues/769)

* Add check to ignore urls in `line_length` rule when `ignores_urls`
  configuration is enabled.  
  [<NAME>](https://github.com/jaherhi)
  [#384](https://github.com/realm/SwiftLint/issues/384)

* Add `shorthand_operator` rule that validates that shorthand operators should
  be used when possible.  
  [<NAME>](https://github.com/marcelofabri)
  [#902](https://github.com/realm/SwiftLint/issues/902)

* Allow specifying a `swiftlint_version` configuration key which will log a
  warning if the current running version of SwiftLint is different than this
  value.  
  [<NAME>](https://github.com/jpsim)
  [#221](https://github.com/realm/SwiftLint/issues/221)

* Add internal support for deprecated rule aliases.  
  [<NAME>](https://github.com/marcelofabri)
  [#973](https://github.com/realm/SwiftLint/issues/973)

* Add `unused_optional_binding` rule that will check for optional bindings
  not being used.  
  [<NAME>](https://github.com/rakaramos)
  [#1116](https://github.com/realm/SwiftLint/issues/1116)

##### Bug Fixes

* Ignore close parentheses on `vertical_parameter_alignment` rule.  
{'fraction_non_alphanumeric': 0.14341695531996781, 'fraction_numerical': 0.03337881809593786, 'mean_word_length': 4.544519883608148, 'pattern_counts': {'":': 0, '<': 140, '<?xml version=': 0, '>': 142, 'https://': 262, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6288571', 'n_tokens_mistral': 10719, 'n_tokens_neox': 9915, 'n_words': 2174}