|
| 1 | +Version 1.70.0 (2023-06-01) |
| 2 | +========================== |
| 3 | + |
| 4 | +<a id="1.70.0-Language"></a> |
| 5 | + |
| 6 | +Language |
| 7 | +-------- |
| 8 | +- [Relax ordering rules for `asm!` operands](https://github.com/rust-lang/rust/pull/105798/) |
| 9 | +- [Properly allow macro expanded `format_args` invocations to uses captures](https://github.com/rust-lang/rust/pull/106505/) |
| 10 | +- [Lint ambiguous glob re-exports](https://github.com/rust-lang/rust/pull/107880/) |
| 11 | +- [Perform const and unsafe checking for expressions in `let _ = expr` position.](https://github.com/rust-lang/rust/pull/102256/) |
| 12 | + |
| 13 | +<a id="1.70.0-Compiler"></a> |
| 14 | + |
| 15 | +Compiler |
| 16 | +-------- |
| 17 | +- [Extend -Cdebuginfo with new options and named aliases](https://github.com/rust-lang/rust/pull/109808/) |
| 18 | + This provides a smaller version of debuginfo for cases that only need line number information |
| 19 | + (`-Cdebuginfo=line-tables-only`), which may eventually become the default for `-Cdebuginfo=1`. |
| 20 | +- [Make `unused_allocation` lint against `Box::new` too](https://github.com/rust-lang/rust/pull/104363/) |
| 21 | +- [Detect uninhabited types early in const eval](https://github.com/rust-lang/rust/pull/109435/) |
| 22 | +- [Switch to LLD as default linker for {arm,thumb}v4t-none-eabi](https://github.com/rust-lang/rust/pull/109721/) |
| 23 | +- [Add tier 3 target `loongarch64-unknown-linux-gnu`](https://github.com/rust-lang/rust/pull/96971) |
| 24 | +- [Add tier 3 target for `i586-pc-nto-qnx700` (QNX Neutrino RTOS, version 7.0)](https://github.com/rust-lang/rust/pull/109173/), |
| 25 | +- [Insert alignment checks for pointer dereferences as debug assertions](https://github.com/rust-lang/rust/pull/98112) |
| 26 | + This catches undefined behavior at runtime, and may cause existing code to fail. |
| 27 | + |
| 28 | +Refer to Rust's [platform support page][platform-support-doc] |
| 29 | +for more information on Rust's tiered platform support. |
| 30 | + |
| 31 | +<a id="1.70.0-Libraries"></a> |
| 32 | + |
| 33 | +Libraries |
| 34 | +--------- |
| 35 | +- [Document NonZeroXxx layout guarantees](https://github.com/rust-lang/rust/pull/94786/) |
| 36 | +- [Windows: make `Command` prefer non-verbatim paths](https://github.com/rust-lang/rust/pull/96391/) |
| 37 | +- [Implement Default for some alloc/core iterators](https://github.com/rust-lang/rust/pull/99929/) |
| 38 | +- [Fix handling of trailing bare CR in str::lines](https://github.com/rust-lang/rust/pull/100311/) |
| 39 | +- [allow negative numeric literals in `concat!`](https://github.com/rust-lang/rust/pull/106844/) |
| 40 | +- [Add documentation about the memory layout of `Cell`](https://github.com/rust-lang/rust/pull/106921/) |
| 41 | +- [Use `partial_cmp` to implement tuple `lt`/`le`/`ge`/`gt`](https://github.com/rust-lang/rust/pull/108157/) |
| 42 | +- [Stabilize `atomic_as_ptr`](https://github.com/rust-lang/rust/pull/108419/) |
| 43 | +- [Stabilize `nonnull_slice_from_raw_parts`](https://github.com/rust-lang/rust/pull/97506/) |
| 44 | +- [Partial stabilization of `once_cell`](https://github.com/rust-lang/rust/pull/105587/) |
| 45 | +- [Stabilize `nonzero_min_max`](https://github.com/rust-lang/rust/pull/106633/) |
| 46 | +- [Flatten/inline format_args!() and (string and int) literal arguments into format_args!()](https://github.com/rust-lang/rust/pull/106824/) |
| 47 | +- [Stabilize movbe target feature](https://github.com/rust-lang/rust/pull/107711/) |
| 48 | +- [don't splice from files into pipes in io::copy](https://github.com/rust-lang/rust/pull/108283/) |
| 49 | +- [Add a builtin unstable `FnPtr` trait that is implemented for all function pointers](https://github.com/rust-lang/rust/pull/108080/) |
| 50 | + This extends `Debug`, `Pointer`, `Hash`, `PartialEq`, `Eq`, `PartialOrd`, and `Ord` |
| 51 | + implementations for function pointers with all ABIs. |
| 52 | + |
| 53 | +<a id="1.70.0-Stabilized-APIs"></a> |
| 54 | + |
| 55 | +Stabilized APIs |
| 56 | +--------------- |
| 57 | + |
| 58 | +- [`NonZero*::MIN/MAX`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroI8.html#associatedconstant.MIN) |
| 59 | +- [`BinaryHeap::retain`](https://doc.rust-lang.org/stable/std/collections/struct.BinaryHeap.html#method.retain) |
| 60 | +- [`Default for std::collections::binary_heap::IntoIter`](https://doc.rust-lang.org/stable/std/collections/binary_heap/struct.IntoIter.html) |
| 61 | +- [`Default for std::collections::btree_map::{IntoIter, Iter, IterMut}`](https://doc.rust-lang.org/stable/std/collections/btree_map/struct.IntoIter.html) |
| 62 | +- [`Default for std::collections::btree_map::{IntoKeys, Keys}`](https://doc.rust-lang.org/stable/std/collections/btree_map/struct.IntoKeys.html) |
| 63 | +- [`Default for std::collections::btree_map::{IntoValues, Values}`](https://doc.rust-lang.org/stable/std/collections/btree_map/struct.IntoKeys.html) |
| 64 | +- [`Default for std::collections::btree_map::Range`](https://doc.rust-lang.org/stable/std/collections/btree_map/struct.Range.html) |
| 65 | +- [`Default for std::collections::btree_set::{IntoIter, Iter}`](https://doc.rust-lang.org/stable/std/collections/btree_set/struct.IntoIter.html) |
| 66 | +- [`Default for std::collections::btree_set::Range`](https://doc.rust-lang.org/stable/std/collections/btree_set/struct.Range.html) |
| 67 | +- [`Default for std::collections::linked_list::{IntoIter, Iter, IterMut}`](https://doc.rust-lang.org/stable/alloc/collections/linked_list/struct.IntoIter.html) |
| 68 | +- [`Default for std::vec::IntoIter`](https://doc.rust-lang.org/stable/alloc/vec/struct.IntoIter.html#impl-Default-for-IntoIter%3CT,+A%3E) |
| 69 | +- [`Default for std::iter::Chain`](https://doc.rust-lang.org/stable/std/iter/struct.Chain.html) |
| 70 | +- [`Default for std::iter::Cloned`](https://doc.rust-lang.org/stable/std/iter/struct.Cloned.html) |
| 71 | +- [`Default for std::iter::Copied`](https://doc.rust-lang.org/stable/std/iter/struct.Copied.html) |
| 72 | +- [`Default for std::iter::Enumerate`](https://doc.rust-lang.org/stable/std/iter/struct.Enumerate.html) |
| 73 | +- [`Default for std::iter::Flatten`](https://doc.rust-lang.org/stable/std/iter/struct.Flatten.html) |
| 74 | +- [`Default for std::iter::Fuse`](https://doc.rust-lang.org/stable/std/iter/struct.Fuse.html) |
| 75 | +- [`Default for std::iter::Rev`](https://doc.rust-lang.org/stable/std/iter/struct.Rev.html) |
| 76 | +- [`Default for std::slice::Iter`](https://doc.rust-lang.org/stable/std/slice/struct.Iter.html) |
| 77 | +- [`Default for std::slice::IterMut`](https://doc.rust-lang.org/stable/std/slice/struct.IterMut.html) |
| 78 | +- [`Rc::into_inner`](https://doc.rust-lang.org/stable/alloc/rc/struct.Rc.html#method.into_inner) |
| 79 | +- [`Arc::into_inner`](https://doc.rust-lang.org/stable/alloc/sync/struct.Arc.html#method.into_inner) |
| 80 | +- [`std::cell::OnceCell`](https://doc.rust-lang.org/stable/std/cell/struct.OnceCell.html) |
| 81 | +- [`Option::is_some_and`](https://doc.rust-lang.org/stable/std/option/enum.Option.html#method.is_some_and) |
| 82 | +- [`NonNull::slice_from_raw_parts`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.slice_from_raw_parts) |
| 83 | +- [`Result::is_ok_and`](https://doc.rust-lang.org/stable/std/result/enum.Result.html#method.is_ok_and) |
| 84 | +- [`Result::is_err_and`](https://doc.rust-lang.org/stable/std/result/enum.Result.html#method.is_err_and) |
| 85 | +- [`std::sync::atomic::Atomic*::as_ptr`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicU8.html#method.as_ptr) |
| 86 | +- [`std::io::IsTerminal`](https://doc.rust-lang.org/stable/std/io/trait.IsTerminal.html) |
| 87 | +- [`std::os::linux::net::SocketAddrExt`](https://doc.rust-lang.org/stable/std/os/linux/net/trait.SocketAddrExt.html) |
| 88 | +- [`std::os::unix::net::UnixDatagram::bind_addr`](https://doc.rust-lang.org/stable/std/os/unix/net/struct.UnixDatagram.html#method.bind_addr) |
| 89 | +- [`std::os::unix::net::UnixDatagram::connect_addr`](https://doc.rust-lang.org/stable/std/os/unix/net/struct.UnixDatagram.html#method.connect_addr) |
| 90 | +- [`std::os::unix::net::UnixDatagram::send_to_addr`](https://doc.rust-lang.org/stable/std/os/unix/net/struct.UnixDatagram.html#method.send_to_addr) |
| 91 | +- [`std::os::unix::net::UnixListener::bind_addr`](https://doc.rust-lang.org/stable/std/os/unix/net/struct.UnixListener.html#method.bind_addr) |
| 92 | +- [`std::path::Path::as_mut_os_str`](https://doc.rust-lang.org/stable/std/path/struct.Path.html#method.as_mut_os_str) |
| 93 | +- [`std::sync::OnceLock`](https://doc.rust-lang.org/stable/std/sync/struct.OnceLock.html) |
| 94 | + |
| 95 | +<a id="1.70.0-Cargo"></a> |
| 96 | + |
| 97 | +Cargo |
| 98 | +----- |
| 99 | + |
| 100 | +- [Add `CARGO_PKG_README`](https://github.com/rust-lang/cargo/pull/11645/) |
| 101 | +- [Make `sparse` the default protocol for crates.io](https://github.com/rust-lang/cargo/pull/11791/) |
| 102 | +- [Accurately show status when downgrading dependencies](https://github.com/rust-lang/cargo/pull/11839/) |
| 103 | +- [Use registry.default for login/logout](https://github.com/rust-lang/cargo/pull/11949/) |
| 104 | +- [Stabilize `cargo logout`](https://github.com/rust-lang/cargo/pull/11950/) |
| 105 | + |
| 106 | +<a id="1.70.0-Misc"></a> |
| 107 | + |
| 108 | +Misc |
| 109 | +---- |
| 110 | + |
| 111 | +- [Stabilize rustdoc `--test-run-directory`](https://github.com/rust-lang/rust/pull/103682/) |
| 112 | + |
| 113 | +<a id="1.70.0-Compatibility-Notes"></a> |
| 114 | + |
| 115 | +Compatibility Notes |
| 116 | +------------------- |
| 117 | + |
| 118 | +- [Prevent stable `libtest` from supporting `-Zunstable-options`](https://github.com/rust-lang/rust/pull/109044/) |
| 119 | +- [Perform const and unsafe checking for expressions in `let _ = expr` position.](https://github.com/rust-lang/rust/pull/102256/) |
| 120 | +- [WebAssembly targets enable `sign-ext` and `mutable-globals` features in codegen](https://github.com/rust-lang/rust/issues/109807) |
| 121 | + This may cause incompatibility with older execution environments. |
| 122 | +- [Insert alignment checks for pointer dereferences as debug assertions](https://github.com/rust-lang/rust/pull/98112) |
| 123 | + This catches undefined behavior at runtime, and may cause existing code to fail. |
| 124 | + |
| 125 | +<a id="1.70.0-Internal-Changes"></a> |
| 126 | + |
| 127 | +Internal Changes |
| 128 | +---------------- |
| 129 | + |
| 130 | +These changes do not affect any public interfaces of Rust, but they represent |
| 131 | +significant improvements to the performance or internals of rustc and related |
| 132 | +tools. |
| 133 | + |
| 134 | +- [Upgrade to LLVM 16](https://github.com/rust-lang/rust/pull/109474/) |
| 135 | +- [Use SipHash-1-3 instead of SipHash-2-4 for StableHasher](https://github.com/rust-lang/rust/pull/107925/) |
| 136 | + |
1 | 137 | Version 1.69.0 (2023-04-20)
|
2 | 138 | ==========================
|
3 | 139 |
|
|
0 commit comments