X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=RELEASES.md;h=9fd796fd775bf995f9d8a624704a36f1bbbabe7d;hb=87397080b697384a9dfb42993c86a0d17182b85a;hp=3a925e4eabad841c543f63ab155ce71349c6dbc8;hpb=c321d6a9f83d0cb0d932b1f2a22aa55f4c18f4ac;p=rust.git diff --git a/RELEASES.md b/RELEASES.md index 3a925e4eaba..9fd796fd775 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -9,10 +9,11 @@ Language Compiler -------- -- [Stabilised the `-C link-self-contained=`][76158] Which tells `rustc` whether to link - its own C runtime and libraries or to rely on a external linker to find them. (supported only on - `windows-gnu`, `linux-musl`, and `wasi` platforms.) +- [Stabilised the `-C link-self-contained=` compiler flag.][76158] This tells + `rustc` whether to link its own C runtime and libraries or to rely on a external + linker to find them. (Supported only on `windows-gnu`, `linux-musl`, and `wasi` platforms.) - [You can now use `-C target-feature=+crt-static` on `linux-gnu` targets.][77386] + Note: If you're using cargo you must explicitly pass the `--target` flag. - [Added tier 2\* support for `aarch64-unknown-linux-musl`.][76420] \* Refer to Rust's [platform support page][forge-platform-support] for more @@ -22,11 +23,10 @@ Libraries --------- - [`io::Write` is now implemented for `&ChildStdin` `&Sink`, `&Stdout`, and `&Stderr`.][76275] -- [All arrays now implement `TryFrom>`.][76310] +- [All arrays of any length now implement `TryFrom>`.][76310] - [The `matches!` macro now supports having a trailing comma.][74880] - [`Vec` now implements `PartialEq<[B]>` where `A: PartialEq`.][74194] -- [Nearly all of `Cell`'s panicking functions now use the `#[track_caller]` - attribute.][77055] +- [The `RefCell::{replace, replace_with, clone}` methods now all use `#[track_caller]`.][77055] Stabilized APIs --------------- @@ -50,27 +50,25 @@ The following previously stable methods are now `const fn`'s: Cargo ----- -Misc ----- -- [You can now link to different items in `rustdoc` using the intra-doc link +Rustdoc +------- +- [You can now link to items in `rustdoc` using the intra-doc link syntax.][74430] E.g. ``/// Uses [`std::future`]`` will automatically generate a link to `std::future`'s documentation. See ["Linking to items by name"][intradoc-links] for more information. - [You can now specify `#[doc(alias = "")]` on items to add search aliases when searching through `rustdoc`'s UI.][75740] -- [You can now use `rustup install .` to specify installing the - latest available patch of that minor version of the toolchain.][76107] E.g. - `rustup install 1.45` would install `1.45.2`, and `1.46` would install `1.46.0`. Compatibility Notes ------------------- -- [`const fn`s are now implicitly promoted to `const`.][75502] Meaning that it - will only warn if your code fails `const` evaluation, and not produce an error. +- [Promotion of references to `'static` lifetime inside `const fn` now follows the + same rules as inside a `fn` body.][75502] In particular, `&foo()` will not be + promoted to `'static` lifetime any more inside `const fn`s. - [Associated type bindings on trait objects are now verified to meet the bounds declared on the trait when checking that they implement the trait.][27675] - [When trait bounds on associated types or opaque types are ambiguous, the compiler no longer makes an arbitrary choice on which bound to use.][54121] -- [Fixed recursive nonterminals not being expended in macros during +- [Fixed recursive nonterminals not being expanded in macros during pretty-print/reparse check.][77153] This may cause errors if your macro wasn't correctly handling recursive nonterminal tokens. - [`&mut` references to non zero-sized types are no longer promoted.][75585] @@ -78,24 +76,40 @@ Compatibility Notes in places where they have no effect.][73461] - [Updated `_mm256_extract_epi8` and `_mm256_extract_epi16` signatures in `arch::{x86, x86_64}` to return `i32` to match the vendor signatures.][73166] - +- [`mem::uninitialized` will now panic if any inner types inside a struct or enum + disallow zero-initialization.][71274] +- [`#[target_feature]` will now error if used in a place where it has no effect.][78143] +- [Foreign exceptions are now caught by `catch_unwind` and will cause an abort.][70212] + Note: This behaviour is not guaranteed and is still considered undefined behaviour, + see the [`catch_unwind`] documentation for further information. + Internal Only ------------- +These changes provide no direct user facing benefits, but represent significant +improvements to the internals and overall performance of rustc and +related tools. + - [Building `rustc` from source now uses `ninja` by default over `make`.][74922] You can continue building with `make` by setting `ninja=false` in your `config.toml`. +- [cg_llvm: `fewer_names` in `uncached_llvm_type`][76030] +- [Made `ensure_sufficient_stack()` non-generic][76680] +[78143]: https://github.com/rust-lang/rust/issues/78143 +[76680]: https://github.com/rust-lang/rust/pull/76680/ +[76030]: https://github.com/rust-lang/rust/pull/76030/ +[70212]: https://github.com/rust-lang/rust/pull/70212/ [27675]: https://github.com/rust-lang/rust/issues/27675/ -[54121]: https://github.com/rust-lang/rust/issues/54121/ +[54121]: https://github.com/rust-lang/rust/issues/54121/ +[71274]: https://github.com/rust-lang/rust/pull/71274/ [77386]: https://github.com/rust-lang/rust/pull/77386/ [77153]: https://github.com/rust-lang/rust/pull/77153/ [77055]: https://github.com/rust-lang/rust/pull/77055/ [76275]: https://github.com/rust-lang/rust/pull/76275/ [76310]: https://github.com/rust-lang/rust/pull/76310/ [76420]: https://github.com/rust-lang/rust/pull/76420/ -[76107]: https://github.com/rust-lang/rust/pull/76107/ [76158]: https://github.com/rust-lang/rust/pull/76158/ [75857]: https://github.com/rust-lang/rust/pull/75857/ [75585]: https://github.com/rust-lang/rust/pull/75585/ @@ -108,6 +122,7 @@ Internal Only [73461]: https://github.com/rust-lang/rust/pull/73461/ [73166]: https://github.com/rust-lang/rust/pull/73166/ [intradoc-links]: https://doc.rust-lang.org/rustdoc/linking-to-items-by-name.html +[`catch_unwind`]: https://doc.rust-lang.org/std/panic/fn.catch_unwind.html [`Option::is_some`]: https://doc.rust-lang.org/std/option/enum.Option.html#method.is_some [`Option::is_none`]: https://doc.rust-lang.org/std/option/enum.Option.html#method.is_none [`Option::as_ref`]: https://doc.rust-lang.org/std/option/enum.Option.html#method.as_ref @@ -215,6 +230,7 @@ Compatibility Notes Internal Only -------- + - [Improved default settings for bootstrapping in `x.py`.][73964] You can read details about this change in the ["Changes to `x.py` defaults"](https://blog.rust-lang.org/inside-rust/2020/08/30/changes-to-x-py-defaults.html) post on the Inside Rust blog. [1.47.0-cfg]: https://docs.microsoft.com/en-us/windows/win32/secbp/control-flow-guard