]> git.lizzy.rs Git - rust.git/blobdiff - RELEASES.md
Rollup merge of #87385 - Aaron1011:final-enable-semi, r=petrochenkov
[rust.git] / RELEASES.md
index 3a8a20fcca1d4ab4a65691b3b53d51f6f557341f..19fe97deacca691d621f0bd071c560f7a6de6613 100644 (file)
@@ -1,20 +1,28 @@
-Version 1.54.0 (2021-06-29)
+Version 1.54.0 (2021-07-29)
 ============================
 
 Language
 -----------------------
 
-- [You can now use macros for values in key-value attributes.][83366]
+- [You can now use macros for values in built-in attribute macros.][83366]
   While a seemingly minor addition on its own, this enables a lot of
   powerful functionality when combined correctly. Most notably you can
   now include external documentation in your crate by writing the following.
   ```rust
   #![doc = include_str!("README.md")]
   ```
+  You can also use this to include auto-generated modules:
+  ```rust
+  #[path = concat!(env!("OUT_DIR"), "/generated.rs")]
+  mod generated;
+  ```
 
 - [You can now cast between unsized slice types (and types which contain
   unsized slices) in `const fn`.][85078]
-- [TODO: stabilize member constraints][84701]
+- [You can now use multiple generic lifetimes with `impl Trait` where the
+   lifetimes don't explicitly outlive another.][84701] In code this means
+   that you can now have `impl Trait<'a, 'b>` where as before you could
+   only have `impl Trait<'a, 'b> where 'b: 'a`.
 
 Compiler
 -----------------------
@@ -29,17 +37,22 @@ Compiler
 - [Improved debugger output for enums on Windows MSVC platforms.][85292]
 - [Added tier 3\* support for `bpfel-unknown-none`
    and `bpfeb-unknown-none`.][79608]
-- [Added tier 3 support for `powerpc64le-unknown-freebsd`.][83572]
+
+\* Refer to Rust's [platform support page][platform-support-doc] for more
+   information on Rust's tiered platform support.
 
 Libraries
 -----------------------
 
-- [You can now explicitly import the prelude of different editions
-  through `std::prelude`. (e.g. `use std::prelude::rust_2021::*;`)][86294]
 - [`panic::panic_any` will now `#[track_caller]`.][85745]
 - [Added `OutOfMemory` as a variant of `io::ErrorKind`.][84744]
 - [ `proc_macro::Literal` now implements `FromStr`.][84717]
-- [TODO: Bump stdarch submodule][83278]
+- [The implementations of vendor intrinsics in core::arch have been
+   significantly refactored.][83278] The main user-visible changes are
+   a 50% reduction in the size of libcore.rlib and stricter validation
+   of constant operands passed to intrinsics. The latter is technically
+   a breaking change, but allows Rust to more closely match the C vendor
+   intrinsics API.
 
 Stabilized APIs
 ---------------
@@ -48,26 +61,14 @@ Stabilized APIs
 - [`BTreeMap::into_values`]
 - [`HashMap::into_keys`]
 - [`HashMap::into_values`]
-- [`MaybeUninit::assume_init_mut`]
-- [`MaybeUninit::assume_init_ref`]
 - [`arch::wasm32`]
-- [`arch::x86::_bittest`]
-- [`arch::x86::_bittestandcomplement`]
-- [`arch::x86::_bittestandset`]
-- [`arch::x86_64::_bittest`]
-- [`arch::x86_64::_bittestandcomplement64`]
-- [`arch::x86_64::_bittestandcomplement`]
-- [`arch::x86_64::_bittestandreset64`]
-- [`arch::x86_64::_bittestandset64`]
-- [`arch::x86_64::_bittestandset`]
-- [`ops::ControlFlow`]
 - [`VecDeque::binary_search`]
 - [`VecDeque::binary_search_by`]
 - [`VecDeque::binary_search_by_key`]
 - [`VecDeque::partition_point`]
 
 Cargo
------------------------
+-----
 
 - [Added the `--prune <spec>` option to `cargo-tree` to remove a package from
   the dependency graph.][cargo/9520]
@@ -78,14 +79,25 @@ Cargo
 - [A new environment variable named `CARGO_TARGET_TMPDIR` is available.][cargo/9375]
   This variable points to a directory that integration tests and benches
   can use as a "scratchpad" for testing filesystem operations.
-- [Configure hosts separately from targets when --target is specified.][cargo/9322]
-- [Respect Cargo.toml `[package.exclude]` even not in a git repo.][cargo/9186]
 
+Compatibility Notes
+-------------------
+- [Mixing Option and Result via `?` is no longer permitted in closures for inferred types.][86831]
+- [Previously unsound code is no longer permitted where different constructors in branches
+  could require different lifetimes.][85574]
+- As previously mentioned the [`std::arch` instrinsics now uses stricter const checking][83278]
+  than before and may reject some previously accepted code.
+- [`i128` multiplication on Cortex M0+ platforms currently unconditionally causes overflow
+   when compiled with `codegen-units = 1`.][86063]
+
+[85574]: https://github.com/rust-lang/rust/issues/85574
+[86831]: https://github.com/rust-lang/rust/issues/86831
+[86063]: https://github.com/rust-lang/rust/issues/86063
+[86831]: https://github.com/rust-lang/rust/issues/86831
 [79608]: https://github.com/rust-lang/rust/pull/79608
 [84988]: https://github.com/rust-lang/rust/pull/84988
 [84701]: https://github.com/rust-lang/rust/pull/84701
 [84072]: https://github.com/rust-lang/rust/pull/84072
-[86294]: https://github.com/rust-lang/rust/pull/86294
 [85745]: https://github.com/rust-lang/rust/pull/85745
 [84744]: https://github.com/rust-lang/rust/pull/84744
 [85078]: https://github.com/rust-lang/rust/pull/85078
@@ -94,30 +106,15 @@ Cargo
 [83366]: https://github.com/rust-lang/rust/pull/83366
 [83278]: https://github.com/rust-lang/rust/pull/83278
 [85292]: https://github.com/rust-lang/rust/pull/85292
-[83572]: https://github.com/rust-lang/rust/pull/83572
 [cargo/9520]: https://github.com/rust-lang/cargo/pull/9520
 [cargo/9499]: https://github.com/rust-lang/cargo/pull/9499
 [cargo/9488]: https://github.com/rust-lang/cargo/pull/9488
 [cargo/9375]: https://github.com/rust-lang/cargo/pull/9375
-[cargo/9322]: https://github.com/rust-lang/cargo/pull/9322
-[cargo/9186]: https://github.com/rust-lang/cargo/pull/9186
-[`arch::x86::_bittest`]: https://doc.rust-lang.org/stable/core/arch/x86/fn._bittest.html
-[`arch::x86::_bittestandcomplement`]: https://doc.rust-lang.org/stable/core/arch/x86/fn._bittestandcomplement.html
-[`arch::x86::_bittestandset`]: https://doc.rust-lang.org/stable/core/arch/x86/fn._bittestandset.html
-[`arch::x86_64::_bittest`]: https://doc.rust-lang.org/stable/core/arch/x86_64/fn._bittest.html
-[`arch::x86_64::_bittestandcomplement64`]: https://doc.rust-lang.org/stable/core/arch/x86_64/fn._bittestandcomplement64.html
-[`arch::x86_64::_bittestandcomplement`]: https://doc.rust-lang.org/stable/core/arch/x86_64/fn._bittestandcomplement.html
-[`arch::x86_64::_bittestandreset64`]: https://doc.rust-lang.org/stable/core/arch/x86_64/fn._bittestandreset64.html
-[`arch::x86_64::_bittestandset64`]: https://doc.rust-lang.org/stable/core/arch/x86_64/fn._bittestandset64.html
-[`arch::x86_64::_bittestandset`]: https://doc.rust-lang.org/stable/core/arch/x86_64/fn._bittestandset.html
 [`BTreeMap::into_keys`]: https://doc.rust-lang.org/std/collections/struct.BTreeMap.html#method.into_keys
 [`BTreeMap::into_values`]: https://doc.rust-lang.org/std/collections/struct.BTreeMap.html#method.into_values
 [`HashMap::into_keys`]: https://doc.rust-lang.org/std/collections/struct.HashMap.html#method.into_keys
 [`HashMap::into_values`]: https://doc.rust-lang.org/std/collections/struct.HashMap.html#method.into_values
-[`MaybeUninit::assume_init_ref`]: https://doc.rust-lang.org/std/mem/union.MaybeUninit.html#method.assume_init_ref
-[`MaybeUninit::assume_init_mut`]: https://doc.rust-lang.org/std/mem/union.MaybeUninit.html#method.assume_init_mut
 [`arch::wasm32`]: https://doc.rust-lang.org/core/arch/wasm32/index.html
-[`ops::ControlFlow`]: https://doc.rust-lang.org/std/ops/enum.ControlFlow.html
 [`VecDeque::binary_search`]: https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.binary_search
 [`VecDeque::binary_search_by`]: https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.binary_search_by
 
@@ -171,7 +168,7 @@ Libraries
 - [`leading_zeros`, and `trailing_zeros` are now available on all
   `NonZero` integer types.][84082]
 - [`{f32, f64}::from_str` now parse and print special values
-  (`NaN`, `-0`) according to IEEE RFC 754.][78618]
+  (`NaN`, `-0`) according to IEEE 754.][78618]
 - [You can now index into slices using `(Bound<usize>, Bound<usize>)`.][77704]
 - [Add the `BITS` associated constant to all numeric types.][82565]