### Bug fixes

* [#15417](https://github.com/rubocop/rubocop/pull/15417): Fix a false negative for `Lint/ToJSON`, which did not flag singleton `def self.to_json` definitions. ([@bbatsov][])
* [#15418](https://github.com/rubocop/rubocop/pull/15418): Fix a false negative for `Lint/UnreachableCode`, which only flagged the first statement after a flow-of-control statement instead of every unreachable statement that followed it. ([@bbatsov][])
* [#15416](https://github.com/rubocop/rubocop/pull/15416): Fix a false negative for `Lint/UselessNumericOperation`, which only flagged bare method-call receivers and ignored local variables, instance/class/global variables, and constants (e.g. `@x + 0`, `CONST * 1`). ([@bbatsov][])
* [#15419](https://github.com/rubocop/rubocop/pull/15419): Fix a false negative for `Lint/Void` where safe-navigation calls to nonmutating methods (e.g. `x&.sort`) were not flagged when `CheckForMethodsWithNoSideEffects` is enabled. ([@bbatsov][])
* [#15421](https://github.com/rubocop/rubocop/pull/15421): Fix a false negative for `Style/ArrayIntersect` with the block form using `include?` (e.g. `array1.any? { |e| array2.include?(e) }`), which was only detected for `member?`. ([@bbatsov][])
* [#15420](https://github.com/rubocop/rubocop/pull/15420): Fix a false negative for `Style/CollectionCompact`, which did not flag `grep_v(nil)`/`grep_v(NilClass)` on a safe-navigation call (e.g. `array&.grep_v(nil)`). ([@bbatsov][])
* [#15422](https://github.com/rubocop/rubocop/pull/15422): Fix a false negative for `Style/DefWithParentheses` with a single-line definition whose body follows a semicolon (e.g. `def foo(); end`), where the parentheses can be safely omitted. ([@bbatsov][])
* [#15388](https://github.com/rubocop/rubocop/pull/15388): Fix a false negative for `Style/MixinUsage` when including multiple modules in one statement. ([@bbatsov][])
* [#15388](https://github.com/rubocop/rubocop/pull/15388): Fix a false negative for `Style/ModuleFunction` when the module body is a single statement. ([@bbatsov][])
* [#15388](https://github.com/rubocop/rubocop/pull/15388): Fix a false negative for `Style/RedundantCurrentDirectoryInPath` with double-quoted strings containing interpolation. ([@bbatsov][])
* [#15395](https://github.com/rubocop/rubocop/pull/15395): Fix a false negative for `Style/RedundantHeredocDelimiterQuotes` with double-quoted delimiters whose body contains interpolation or escapes. ([@bbatsov][])
* [#15409](https://github.com/rubocop/rubocop/pull/15409): Fix a false positive for `Gemspec/DuplicatedAssignment` with multiple specifications. ([@bbatsov][])
* [#15403](https://github.com/rubocop/rubocop/pull/15403): Fix a false positive for `Layout/CommentIndentation` with a comment above an inline access modifier (e.g. `private def foo`) when `Layout/AccessModifierIndentation` is configured with `EnforcedStyle: outdent`. ([@grk][])
* [#15372](https://github.com/rubocop/rubocop/pull/15372): Fix a false positive for `Style/InvertibleUnlessCondition` with a multi-statement begin condition. ([@bbatsov][])
* [#15360](https://github.com/rubocop/rubocop/issues/15360): Fix an incorrect autocorrect for `Style/ArgumentsForwarding` and `Style/MethodDefParentheses` when autocorrection conflicts while adding parentheses to method definition arguments. ([@koic][])
* [#15417](https://github.com/rubocop/rubocop/pull/15417): Fix an incorrect autocorrect for `Lint/ToJSON` that produced invalid Ruby (`def to_json(*_args)()`) when the method had explicit empty parentheses. ([@bbatsov][])
* [#15426](https://github.com/rubocop/rubocop/issues/15426): Fix an incorrect autocorrect for `Style/MethodCallWithoutArgsParentheses` when empty parentheses span multiple lines and the method call has a block. ([@koic][])
* [#15328](https://github.com/rubocop/rubocop/pull/15328): Fix a false positive for `Style/HashConversion` with a splat argument, which previously produced an invalid hash literal. ([@bbatsov][])
* [#15338](https://github.com/rubocop/rubocop/pull/15338): Fix a false positive for `Style/HashLookupMethod` with safe navigation, where the suggested bracket form would be the unreadable `hash&.[](key)`. ([@bbatsov][])
* [#15397](https://github.com/rubocop/rubocop/pull/15397): Fix an incorrect autocorrect for `Style/IdenticalConditionalBranches` that hoisted the moved expression to column zero instead of matching the surrounding indentation. ([@bbatsov][])
* [#15372](https://github.com/rubocop/rubocop/pull/15372): Fix an incorrect autocorrect for `Style/InvertibleUnlessCondition` with mixed `&&`/`||` conditions, which lost the required parentheses when inverting. ([@bbatsov][])
* [#15428](https://github.com/rubocop/rubocop/issues/15428): Fix an incorrect autocorrect for `Style/TrivialAccessors` when `AllowPredicates: false` is set and a trivial reader is defined as a predicate class method. ([@koic][])
* [#15402](https://github.com/rubocop/rubocop/pull/15402): Fix an infinite loop and file corruption for `Layout/LineLength` with `SplitStrings` when an over-long string is indented under a multi-line parent. ([@bbatsov][])
* [#15384](https://github.com/rubocop/rubocop/pull/15384): Fix a false positive and a false negative for `Style/MissingRespondToMissing` when `method_missing` is defined at the top level or alongside sibling classes. ([@bbatsov][])
* [#15432](https://github.com/rubocop/rubocop/issues/15432): Fix false positives in `Layout/ElseAlignment` when using `else` within a block that is part of a larger expression. ([@koic][])
* [#15423](https://github.com/rubocop/rubocop/issues/15423): Fix false positives in `Layout/MultilineMethodCallIndentation` when a method chain is nested inside a parenthesized argument list or a grouped expression within a hash pair value. ([@koic][])
* [#15424](https://github.com/rubocop/rubocop/pull/15424): Fix `Style/StructInheritance` autocorrect dropping leading indentation when class is inside a module or namespace. ([@amckinnie][])
* [#15325](https://github.com/rubocop/rubocop/pull/15325): Fix `Style/DocumentationMethod` ignoring `AllowedMethods` for inline modifier defs. ([@bbatsov][])
* [#15369](https://github.com/rubocop/rubocop/pull/15369): Fix a false positive for `Style/LambdaCall` when the argument list contains a comment, which the autocorrect would have dropped. ([@bbatsov][])

### Changes

* [#15430](https://github.com/rubocop/rubocop/pull/15430): Improve performance of offense reporting by not allocating a new source range per offense outside of embedded sources. ([@bbatsov][])
* [#15430](https://github.com/rubocop/rubocop/pull/15430): Improve investigation performance by dispatching `on_new_investigation`, `on_investigation_end`, and `on_other_file` only to cops that refine them, and by skipping `after_*` dispatch when no cop needs it. ([@bbatsov][])
* [#15430](https://github.com/rubocop/rubocop/pull/15430): Improve performance of the per-file cop relevancy check by skipping gem requirement evaluation for cops without gem requirements. ([@bbatsov][])
* [#15430](https://github.com/rubocop/rubocop/pull/15430): Improve `Lint/Debugger` performance on code without debugger calls. ([@bbatsov][])
* [#15430](https://github.com/rubocop/rubocop/pull/15430): Improve autocorrection performance by keeping corrections in memory across inspection iterations and writing each corrected file only once. ([@bbatsov][])
* [#15415](https://github.com/rubocop/rubocop/pull/15415): Mark `Lint/NumericOperationWithConstantResult` autocorrect as unsafe because it drops the operands, discarding their side effects and silencing cases where the result is not actually constant (e.g. `x / x` raises when `x` is `0`). ([@bbatsov][])
* [#15430](https://github.com/rubocop/rubocop/pull/15430): Improve performance of cops using `AllowedPatterns`, `ForbiddenPatterns`, and `AllowedMethods` by compiling the configured patterns only once. ([@bbatsov][])
* [#15430](https://github.com/rubocop/rubocop/pull/15430): Improve performance of `Style/IfUnlessModifier` and other modifier cops on files with many comments or conditionals. ([@bbatsov][])

[@bbatsov]: https://github.com/bbatsov
[@grk]: https://github.com/grk
[@koic]: https://github.com/koic
[@amckinnie]: https://github.com/amckinnie
