|
| 1 | +Version 1.52.0 (2021-05-06) |
| 2 | +============================ |
| 3 | + |
| 4 | +Language |
| 5 | +-------- |
| 6 | +- [Added the `unsafe_op_in_unsafe_fn` lint, which checks whether the unsafe code |
| 7 | + in an `unsafe fn` is wrapped in a `unsafe` block.][79208] This lint |
| 8 | + is allowed by default, and may become a warning or hard error in a |
| 9 | + future edition. |
| 10 | +- [You can now cast mutable references to arrays to a pointer of the same type as |
| 11 | + the element.][81479] |
| 12 | + |
| 13 | +Compiler |
| 14 | +-------- |
| 15 | +- [Upgraded the default LLVM to LLVM 12.][81451] |
| 16 | + |
| 17 | +Added tier 3\* support for the following targets. |
| 18 | + |
| 19 | +- [`s390x-unknown-linux-musl`][82166] |
| 20 | +- [`riscv32gc-unknown-linux-musl` & `riscv64gc-unknown-linux-musl`][82202] |
| 21 | +- [`powerpc-unknown-openbsd`][82733] |
| 22 | + |
| 23 | +\* Refer to Rust's [platform support page][platform-support-doc] for more |
| 24 | +information on Rust's tiered platform support. |
| 25 | + |
| 26 | +Libraries |
| 27 | +--------- |
| 28 | +- [`OsString` now implements `Extend` and `FromIterator`.][82121] |
| 29 | +- [`cmp::Reverse` now has `#[repr(transparent)]` representation.][81879] |
| 30 | +- [`Arc<impl Error>` now implements `error::Error`.][80553] |
| 31 | +- [All integer division and remainder operations are now `const`.][80962] |
| 32 | + |
| 33 | +Stabilised APIs |
| 34 | +------------- |
| 35 | +- [`Arguments::as_str`] |
| 36 | +- [`char::MAX`] |
| 37 | +- [`char::REPLACEMENT_CHARACTER`] |
| 38 | +- [`char::UNICODE_VERSION`] |
| 39 | +- [`char::decode_utf16`] |
| 40 | +- [`char::from_digit`] |
| 41 | +- [`char::from_u32_unchecked`] |
| 42 | +- [`char::from_u32`] |
| 43 | +- [`slice::partition_point`] |
| 44 | +- [`str::rsplit_once`] |
| 45 | +- [`str::split_once`] |
| 46 | + |
| 47 | +The following previously stable APIs are now `const`. |
| 48 | + |
| 49 | +- [`char::len_utf8`] |
| 50 | +- [`char::len_utf16`] |
| 51 | +- [`char::to_ascii_uppercase`] |
| 52 | +- [`char::to_ascii_lowercase`] |
| 53 | +- [`char::eq_ignore_ascii_case`] |
| 54 | +- [`u8::to_ascii_uppercase`] |
| 55 | +- [`u8::to_ascii_lowercase`] |
| 56 | +- [`u8::eq_ignore_ascii_case`] |
| 57 | + |
| 58 | +Rustdoc |
| 59 | +------- |
| 60 | +- [Rustdoc lints are now treated as a tool lint, meaning that |
| 61 | + lints are now prefixed with `rustdoc::` (e.g. `#[warn(rustdoc::non_autolinks)]`).][80527] |
| 62 | + Using the old style is still allowed, and will become a warning in |
| 63 | + a future release. |
| 64 | +- [Rustdoc now supports argument files.][82261] |
| 65 | +- [Rustdoc now generates smart punctuation for documentation.][79423] |
| 66 | +- [You can now use "task lists" in Rustdoc Markdown.][81766] E.g. |
| 67 | + ```markdown |
| 68 | + - [x] Complete |
| 69 | + - [ ] Todo |
| 70 | + ``` |
| 71 | + |
| 72 | +Misc |
| 73 | +---- |
| 74 | +- [You can now pass multiple filters to tests.][81356] E.g. |
| 75 | + `cargo test -- foo bar` will run all tests that match `foo` and `bar`. |
| 76 | +- [Rustup now distributes PDB symbols for the `std` library on Windows, |
| 77 | + allowing you to see `std` symbols when debugging.][82218] |
| 78 | + |
| 79 | +Internal Only |
| 80 | +------------- |
| 81 | +These changes provide no direct user facing benefits, but represent significant |
| 82 | +improvements to the internals and overall performance of rustc and |
| 83 | +related tools. |
| 84 | + |
| 85 | +- [Check the result cache before the DepGraph when ensuring queries][81855] |
| 86 | +- [Try fast_reject::simplify_type in coherence before doing full check][81744] |
| 87 | +- [Only store a LocalDefId in some HIR nodes][81611] |
| 88 | +- [Store HIR attributes in a side table][79519] |
| 89 | + |
| 90 | +Compatibility Notes |
| 91 | +------------------- |
| 92 | +- [Cargo build scripts are now forbidden from setting `RUSTC_BOOTSTRAP`.][cargo/9181] |
| 93 | +- [Removed support for the `x86_64-rumprun-netbsd` target.][82594] |
| 94 | +- [Deprecated the `x86_64-sun-solaris` target in favor of `x86_64-pc-solaris`.][82216] |
| 95 | +- [Rustdoc now only accepts `,`, ` `, and `\t` as delimiters for specifying |
| 96 | + languages in code blocks.][78429] |
| 97 | +- [Rustc now catches more cases of `pub_use_of_private_extern_crate`][80763] |
| 98 | +- [Changes in how proc macros handle whitespace may lead to panics when used |
| 99 | + with older `proc-macro-hack` versions. A `cargo update` should be sufficient to fix this in all cases.][84136] |
| 100 | + |
| 101 | +[84136]: https://github.com/rust-lang/rust/issues/84136 |
| 102 | +[80763]: https://github.com/rust-lang/rust/pull/80763 |
| 103 | +[82166]: https://github.com/rust-lang/rust/pull/82166 |
| 104 | +[82121]: https://github.com/rust-lang/rust/pull/82121 |
| 105 | +[81879]: https://github.com/rust-lang/rust/pull/81879 |
| 106 | +[82261]: https://github.com/rust-lang/rust/pull/82261 |
| 107 | +[82218]: https://github.com/rust-lang/rust/pull/82218 |
| 108 | +[82216]: https://github.com/rust-lang/rust/pull/82216 |
| 109 | +[82202]: https://github.com/rust-lang/rust/pull/82202 |
| 110 | +[81855]: https://github.com/rust-lang/rust/pull/81855 |
| 111 | +[81766]: https://github.com/rust-lang/rust/pull/81766 |
| 112 | +[81744]: https://github.com/rust-lang/rust/pull/81744 |
| 113 | +[81611]: https://github.com/rust-lang/rust/pull/81611 |
| 114 | +[81479]: https://github.com/rust-lang/rust/pull/81479 |
| 115 | +[81451]: https://github.com/rust-lang/rust/pull/81451 |
| 116 | +[81356]: https://github.com/rust-lang/rust/pull/81356 |
| 117 | +[80962]: https://github.com/rust-lang/rust/pull/80962 |
| 118 | +[80553]: https://github.com/rust-lang/rust/pull/80553 |
| 119 | +[80527]: https://github.com/rust-lang/rust/pull/80527 |
| 120 | +[79519]: https://github.com/rust-lang/rust/pull/79519 |
| 121 | +[79423]: https://github.com/rust-lang/rust/pull/79423 |
| 122 | +[79208]: https://github.com/rust-lang/rust/pull/79208 |
| 123 | +[78429]: https://github.com/rust-lang/rust/pull/78429 |
| 124 | +[82733]: https://github.com/rust-lang/rust/pull/82733 |
| 125 | +[82594]: https://github.com/rust-lang/rust/pull/82594 |
| 126 | +[cargo/9181]: https://github.com/rust-lang/cargo/pull/9181 |
| 127 | +[`char::MAX`]: https://doc.rust-lang.org/std/primitive.char.html#associatedconstant.MAX |
| 128 | +[`char::REPLACEMENT_CHARACTER`]: https://doc.rust-lang.org/std/primitive.char.html#associatedconstant.REPLACEMENT_CHARACTER |
| 129 | +[`char::UNICODE_VERSION`]: https://doc.rust-lang.org/std/primitive.char.html#associatedconstant.UNICODE_VERSION |
| 130 | +[`char::decode_utf16`]: https://doc.rust-lang.org/std/primitive.char.html#method.decode_utf16 |
| 131 | +[`char::from_u32`]: https://doc.rust-lang.org/std/primitive.char.html#method.from_u32 |
| 132 | +[`char::from_u32_unchecked`]: https://doc.rust-lang.org/std/primitive.char.html#method.from_u32_unchecked |
| 133 | +[`char::from_digit`]: https://doc.rust-lang.org/std/primitive.char.html#method.from_digit |
| 134 | +[`Peekable::next_if`]: https://doc.rust-lang.org/stable/std/iter/struct.Peekable.html#method.next_if |
| 135 | +[`Peekable::next_if_eq`]: https://doc.rust-lang.org/stable/std/iter/struct.Peekable.html#method.next_if_eq |
| 136 | +[`Arguments::as_str`]: https://doc.rust-lang.org/stable/std/fmt/struct.Arguments.html#method.as_str |
| 137 | +[`str::split_once`]: https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_once |
| 138 | +[`str::rsplit_once`]: https://doc.rust-lang.org/stable/std/primitive.str.html#method.rsplit_once |
| 139 | +[`slice::partition_point`]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.partition_point |
| 140 | +[`char::len_utf8`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.len_utf8 |
| 141 | +[`char::len_utf16`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.len_utf16 |
| 142 | +[`char::to_ascii_uppercase`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.to_ascii_uppercase |
| 143 | +[`char::to_ascii_lowercase`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.to_ascii_lowercase |
| 144 | +[`char::eq_ignore_ascii_case`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.eq_ignore_ascii_case |
| 145 | +[`u8::to_ascii_uppercase`]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.to_ascii_uppercase |
| 146 | +[`u8::to_ascii_lowercase`]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.to_ascii_lowercase |
| 147 | +[`u8::eq_ignore_ascii_case`]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.eq_ignore_ascii_case |
| 148 | + |
1 | 149 | Version 1.51.0 (2021-03-25)
|
2 | 150 | ============================
|
3 | 151 |
|
|
0 commit comments