|
2 | 2 |
|
3 | 3 | ## [Unreleased]
|
4 | 4 |
|
| 5 | +### Fixed |
| 6 | + |
| 7 | +- Fix an idempotency issue when rewriting where clauses in which rustfmt would continuously add a trailing comma `,` to the end of trailing line comments [#5941](https://github.com/rust-lang/rustfmt/issues/5941). |
| 8 | +- Prevent enum variant attributes from wrapping one character early when using `version=Two` [#5801](https://github.com/rust-lang/rustfmt/issues/5801) |
| 9 | +- Properly wrap macro matchers at the `max_width` when using `version=Two` and `format_macro_matchers=true` [#3805](https://github.com/rust-lang/rustfmt/issues/3805) |
| 10 | +- Prevent panic when formatting trait declaration with non [Unicode Normalization Form] C (NFC) identifiers [#6069](https://github.com/rust-lang/rustfmt/issues/6069) |
| 11 | + ```rust |
| 12 | + // The ó below is two codepoints, ASCII o followed by U+0301 COMBINING ACUTE ACCENT. |
| 13 | + // It NFC-normalizes to ó, U+00F3 LATIN SMALL LETTER O WITH ACUTE. |
| 14 | + trait Foó: Bar {} |
| 15 | + ``` |
| 16 | + [unicode normalization form]: https://unicode.org/reports/tr15/ |
| 17 | +- Ensure a space is added to a range expression, when the right hand side of the range expression is a binary expression that ends with a trailing period [#6059](https://github.com/rust-lang/rustfmt/issues/6059) |
| 18 | + ```rust |
| 19 | + let range = 3. / 2. ..4.; |
| 20 | + ``` |
| 21 | +- When using `version=Two`, comments in match arms that contain `=>` no longer prevent formatting [#5998](https://github.com/rust-lang/rustfmt/issues/5998) |
| 22 | + ```rust |
| 23 | + match a { |
| 24 | + _ => |
| 25 | + // comment with => |
| 26 | + { |
| 27 | + println!("A") |
| 28 | + } |
| 29 | + } |
| 30 | + ``` |
| 31 | +- Prevent panics when formatting input that contains the expanded form of `offset_of!` [#5885](https://github.com/rust-lang/rustfmt/issues/5885) [#6105](https://github.com/rust-lang/rustfmt/issues/6105) |
| 32 | + ```rust |
| 33 | + const _: () = builtin # offset_of(x, x); |
| 34 | + ``` |
| 35 | +- When using `version=Two` inner attributes in `match` expressions are correctly indented [#6147](https://github.com/rust-lang/rustfmt/issues/6147) |
| 36 | + ```rust |
| 37 | + pub fn main() { |
| 38 | + match x { |
| 39 | + #![attr1] |
| 40 | + #![attr2] |
| 41 | + _ => (), |
| 42 | + } |
| 43 | + } |
| 44 | + ``` |
| 45 | +- Output correct syntax for type ascription builtin [#6159](https://github.com/rust-lang/rustfmt/issues/6159) |
| 46 | + ```rust |
| 47 | + fn main() { |
| 48 | + builtin # type_ascribe(10, usize) |
| 49 | + } |
| 50 | + ``` |
| 51 | +- rustfmt no longer removes inner attributes from inline const blocks [#6158](https://github.com/rust-lang/rustfmt/issues/6158) |
| 52 | + ```rust |
| 53 | + fn main() { |
| 54 | + const { |
| 55 | + #![allow(clippy::assertions_on_constants)] |
| 56 | + |
| 57 | + assert!(1 < 2); |
| 58 | + } |
| 59 | + } |
| 60 | + ``` |
| 61 | +- rustfmt no longer removes `safe` and `unsafe` keywords from static items in extern blocks. |
| 62 | + This helps support [`#![feature(unsafe_extern_blocks)]`](https://github.com/rust-lang/rust/issues/123743) [#6204](https://github.com/rust-lang/rustfmt/pull/6204) |
| 63 | + ```rust |
| 64 | + #![feature(unsafe_extern_blocks)] |
| 65 | + |
| 66 | + unsafe extern "C" { |
| 67 | + safe static TEST1: i32; |
| 68 | + unsafe static TEST2: i32; |
| 69 | + } |
| 70 | + ``` |
| 71 | + |
| 72 | + |
| 73 | +### Changed |
| 74 | + |
| 75 | +- `hide_parse_errors` has been soft deprecated and it's been renamed to `show_parse_errors` [#5961](https://github.com/rust-lang/rustfmt/pull/5961). |
| 76 | +- The diff output produced by `rustfmt --check` is more compatable with editors that support navigating directly to line numbers [#5971](https://github.com/rust-lang/rustfmt/pull/5971) |
| 77 | +- When using `version=Two`, the `trace!` macro from the [log crate] is now formatted similarly to `debug!`, `info!`, `warn!`, and `error!` [#5987](https://github.com/rust-lang/rustfmt/issues/5987). |
| 78 | + |
| 79 | + [log crate]: https://crates.io/crates/log |
| 80 | + |
| 81 | + |
| 82 | +### Added |
| 83 | + |
| 84 | +- `generated_marker_line_search_limit` is a new unstable configuration option that allows users to configure how many lines to search for an `@generated` marker when `format_generated_files=false` [#5658](https://github.com/rust-lang/rustfmt/issues/5658) |
| 85 | + |
| 86 | + |
| 87 | +### Misc |
| 88 | + |
5 | 89 | - Updating `dirs 4.0.0 -> 5.0.1` and `cargo_metadata 0.15.4 -> 0.18.0` [#6033] (https://github.com/rust-lang/rustfmt/issues/6033)
|
| 90 | + - For reference, here's the [dirs v5 changelog](https://github.com/dirs-dev/dirs-rs/blob/main/README.md#5) |
| 91 | +- Updated [itertools v0.11 -> v0.12](https://github.com/rust-itertools/itertools/blob/v0.12.1/CHANGELOG.md#0120) [#6093](https://github.com/rust-lang/rustfmt/pull/6093) |
| 92 | +- Addressed clap deprecations output when running `cargo check --features clap/deprecated` [#6101](https://github.com/rust-lang/rustfmt/pull/6101) |
| 93 | +- Bumped bytecount `0.6.4` -> `0.6.8` to fix compilation issues with the `generic-simd` feature. See [bytecount#92] and [bytecount#93] |
| 94 | + |
| 95 | + [bytecount#92]: https://github.com/llogiq/bytecount/pull/92 |
| 96 | + [bytecount#93]: https://github.com/llogiq/bytecount/pull/93 |
| 97 | +- Replace the `lazy_static` dependency with `std::sync::OnceLock` [#6154](https://github.com/rust-lang/rustfmt/pull/6154) |
6 | 98 |
|
7 | 99 | ## [1.7.0] 2023-10-22
|
8 | 100 |
|
|
146 | 238 |
|
147 | 239 | ### Added
|
148 | 240 |
|
149 |
| -- New configuration option (`skip_macro_invocations`)[https://rust-lang.github.io/rustfmt/?version=master&search=#skip_macro_invocations] [#5347](https://github.com/rust-lang/rustfmt/pull/5347) that can be used to globally define a single enumerated list of macro calls that rustfmt should skip formatting. rustfmt [currently also supports this via a custom tool attribute](https://github.com/rust-lang/rustfmt#tips), however, these cannot be used in all contexts because [custom inner attributes are unstable](https://github.com/rust-lang/rust/issues/54726) |
| 241 | +- New configuration option [`skip_macro_invocations`](https://rust-lang.github.io/rustfmt/?version=master&search=#skip_macro_invocations) [#5347](https://github.com/rust-lang/rustfmt/pull/5347) that can be used to globally define a single enumerated list of macro calls that rustfmt should skip formatting. rustfmt [currently also supports this via a custom tool attribute](https://github.com/rust-lang/rustfmt#tips), however, these cannot be used in all contexts because [custom inner attributes are unstable](https://github.com/rust-lang/rust/issues/54726) |
150 | 242 |
|
151 | 243 | ### Misc
|
152 | 244 |
|
|
0 commit comments