|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: "Announcing Rust 1.52.0" |
| 4 | +author: The Rust Release Team |
| 5 | +release: true |
| 6 | +--- |
| 7 | + |
| 8 | +The Rust team is happy to announce a new version of Rust, 1.52.0. Rust is a |
| 9 | +programming language that is empowering everyone to build reliable and |
| 10 | +efficient software. |
| 11 | + |
| 12 | +If you have a previous version of Rust installed via rustup, getting Rust |
| 13 | +1.52.0 is as easy as: |
| 14 | + |
| 15 | +```console |
| 16 | +rustup update stable |
| 17 | +``` |
| 18 | + |
| 19 | +If you don't have it already, you can [get `rustup`][install] |
| 20 | +from the appropriate page on our website, and check out the |
| 21 | +[detailed release notes for 1.52.0][notes] on GitHub. |
| 22 | + |
| 23 | +[install]: https://www.rust-lang.org/install.html |
| 24 | +[notes]: https://github.com/rust-lang/rust/blob/master/RELEASES.md#version-1510-2021-03-25 |
| 25 | + |
| 26 | +## What's in 1.52.0 stable |
| 27 | + |
| 28 | +This release is fairly small, primarily containing stabilizations of various APIs in the standard library. |
| 29 | + |
| 30 | +This release also closes out a long-standing bug in the Rust compiler: forward progress is no longer assumed by LLVM, which means that some programs which used to compile incorrectly are now properly handled. This is due to changes in LLVM IR semantics, which no longer assume forward progress is guaranteed and optimize for that. |
| 31 | + |
| 32 | +### Stabilized APIs |
| 33 | + |
| 34 | +The following methods were stabilized. |
| 35 | + |
| 36 | +- [`Arguments::as_str`] |
| 37 | +- [`Peekable::next_if_eq`] |
| 38 | +- [`Peekable::next_if`] |
| 39 | +- [`char::MAX`] |
| 40 | +- [`char::REPLACEMENT_CHARACTER`] |
| 41 | +- [`char::UNICODE_VERSION`] |
| 42 | +- [`char::decode_utf16`] |
| 43 | +- [`char::from_digit`] |
| 44 | +- [`char::from_u32_unchecked`] |
| 45 | +- [`char::from_u32`] |
| 46 | +- [`slice::partition_point`] |
| 47 | +- [`str::rsplit_once`] |
| 48 | +- [`str::split_once`] |
| 49 | + |
| 50 | +The following previously stable APIs are now `const`. |
| 51 | + |
| 52 | +- [`char::len_utf8`] |
| 53 | +- [`char::len_utf16`] |
| 54 | +- [`char::to_ascii_uppercase`] |
| 55 | +- [`char::to_ascii_lowercase`] |
| 56 | +- [`char::eq_ignore_ascii_case`] |
| 57 | +- [`u8::to_ascii_uppercase`] |
| 58 | +- [`u8::to_ascii_lowercase`] |
| 59 | +- [`u8::eq_ignore_ascii_case`] |
| 60 | + |
| 61 | +[`char::MAX`]: https://doc.rust-lang.org/std/primitive.char.html#associatedconstant.MAX |
| 62 | +[`char::REPLACEMENT_CHARACTER`]: https://doc.rust-lang.org/std/primitive.char.html#associatedconstant.REPLACEMENT_CHARACTER |
| 63 | +[`char::UNICODE_VERSION`]: https://doc.rust-lang.org/std/primitive.char.html#associatedconstant.UNICODE_VERSION |
| 64 | +[`char::decode_utf16`]: https://doc.rust-lang.org/std/primitive.char.html#method.decode_utf16 |
| 65 | +[`char::from_u32`]: https://doc.rust-lang.org/std/primitive.char.html#method.from_u32 |
| 66 | +[`char::from_u32_unchecked`]: https://doc.rust-lang.org/std/primitive.char.html#method.from_u32_unchecked |
| 67 | +[`char::from_digit`]: https://doc.rust-lang.org/std/primitive.char.html#method.from_digit |
| 68 | +[`Peekable::next_if`]: https://doc.rust-lang.org/stable/std/iter/struct.Peekable.html#method.next_if |
| 69 | +[`Peekable::next_if_eq`]: https://doc.rust-lang.org/stable/std/iter/struct.Peekable.html#method.next_if_eq |
| 70 | +[`Arguments::as_str`]: https://doc.rust-lang.org/stable/std/fmt/struct.Arguments.html#method.as_str |
| 71 | +[`str::split_once`]: https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_once |
| 72 | +[`str::rsplit_once`]: https://doc.rust-lang.org/stable/std/primitive.str.html#method.rsplit_once |
| 73 | +[`slice::partition_point`]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.partition_point |
| 74 | +[`char::len_utf8`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.len_utf8 |
| 75 | +[`char::len_utf16`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.len_utf16 |
| 76 | +[`char::to_ascii_uppercase`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.to_ascii_uppercase |
| 77 | +[`char::to_ascii_lowercase`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.to_ascii_lowercase |
| 78 | +[`char::eq_ignore_ascii_case`]: https://doc.rust-lang.org/stable/std/primitive.char.html#method.eq_ignore_ascii_case |
| 79 | +[`u8::to_ascii_uppercase`]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.to_ascii_uppercase |
| 80 | +[`u8::to_ascii_lowercase`]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.to_ascii_lowercase |
| 81 | +[`u8::eq_ignore_ascii_case`]: https://doc.rust-lang.org/stable/std/primitive.u8.html#method.eq_ignore_ascii_case |
| 82 | + |
| 83 | +### Other changes |
| 84 | + |
| 85 | +There are other changes in the Rust 1.52.0 release: check out what changed in [Rust](https://github.com/rust-lang/rust/blob/master/RELEASES.md#version-1520-2021-05-06), [Cargo](https://github.com/rust-lang/cargo/blob/master/CHANGELOG.md#cargo-152-2021-05-06), and [Clippy](https://github.com/rust-lang/rust-clippy/blob/master/CHANGELOG.md#rust-152). |
| 86 | + |
| 87 | +### Contributors to 1.52.0 |
| 88 | + |
| 89 | +Many people came together to create Rust 1.52.0. We couldn't have done it without all of you. [Thanks!](https://thanks.rust-lang.org/rust/1.52.0/) |
0 commit comments