Auto merge of #41548 - brson:relnotes, r=brson
Update release notes for 1.17 [Rendered](https://github.com/brson/rust/blob/relnotes/RELEASES.md). cc @steveklabnik
This commit is contained in:
commit
db1c9eb2bd
258
RELEASES.md
258
RELEASES.md
@ -1,3 +1,261 @@
|
||||
Version 1.17.0 (2017-04-27)
|
||||
===========================
|
||||
|
||||
Language
|
||||
--------
|
||||
|
||||
* [The lifetime of statics and consts defaults to `'static`][39265]. [RFC 1623]
|
||||
* [Fields of structs may be initialized without duplicating the field/variable
|
||||
names][39761]. [RFC 1682]
|
||||
* [`Self` may be included in the `where` clause of `impls`][38864]. [RFC 1647]
|
||||
* [When coercing to an unsized type lifetimes must be equal][40319]. That is,
|
||||
there is no subtyping between `T` and `U` when `T: Unsize<U>`. For example,
|
||||
coercing `&mut [&'a X; N]` to `&mut [&'b X]` requires `'a` be equal to
|
||||
`'b`. Soundness fix.
|
||||
* [Values passed to the indexing operator, `[]`, automatically coerce][40166]
|
||||
* [Static variables may contain references to other statics][40027]
|
||||
|
||||
Compiler
|
||||
--------
|
||||
|
||||
* [Exit quickly on only `--emit dep-info`][40336]
|
||||
* [Make `-C relocation-model` more correctly determine whether the linker
|
||||
creates a position-independent executable][40245]
|
||||
* [Add `-C overflow-checks` to directly control whether integer overflow
|
||||
panics][40037]
|
||||
* [The rustc type checker now checks items on demand instead of in a single
|
||||
in-order pass][40008]. This is mostly an internal refactoring in support of
|
||||
future work, including incremental type checking, but also resolves [RFC
|
||||
1647], allowing `Self` to appear in `impl` `where` clauses.
|
||||
* [Optimize vtable loads][39995]
|
||||
* [Turn off vectorization for Emscripten targets][39990]
|
||||
* [Provide suggestions for unknown macros imported with `use`][39953]
|
||||
* [Fix ICEs in path resolution][39939]
|
||||
* [Strip exception handling code on Emscripten when `panic=abort`][39193]
|
||||
* [Add clearer error message using `&str + &str`][39116]
|
||||
|
||||
Stabilized APIs
|
||||
---------------
|
||||
|
||||
* [`Arc::into_raw`]
|
||||
* [`Arc::from_raw`]
|
||||
* [`Arc::ptr_eq`]
|
||||
* [`Rc::into_raw`]
|
||||
* [`Rc::from_raw`]
|
||||
* [`Rc::ptr_eq`]
|
||||
* [`Ordering::then`]
|
||||
* [`Ordering::then_with`]
|
||||
* [`BTreeMap::range`]
|
||||
* [`BTreeMap::range_mut`]
|
||||
* [`collections::Bound`]
|
||||
* [`process::abort`]
|
||||
* [`ptr::read_unaligned`]
|
||||
* [`ptr::write_unaligned`]
|
||||
* [`Result::expect_err`]
|
||||
* [`Cell::swap`]
|
||||
* [`Cell::replace`]
|
||||
* [`Cell::into_inner`]
|
||||
* [`Cell::take`]
|
||||
|
||||
Libraries
|
||||
---------
|
||||
|
||||
* [`BTreeMap` and `BTreeSet` can iterate over ranges][27787]
|
||||
* [`Cell` can store non-`Copy` types][39793]. [RFC 1651]
|
||||
* [`String` implements `FromIterator<&char>`][40028]
|
||||
* `Box` [implements][40009] a number of new conversions:
|
||||
`From<Box<str>> for String`,
|
||||
`From<Box<[T]>> for Vec<T>`,
|
||||
`From<Box<CStr>> for CString`,
|
||||
`From<Box<OsStr>> for OsString`,
|
||||
`From<Box<Path>> for PathBuf`,
|
||||
`Into<Box<str>> for String`,
|
||||
`Into<Box<[T]>> for Vec<T>`,
|
||||
`Into<Box<CStr>> for CString`,
|
||||
`Into<Box<OsStr>> for OsString`,
|
||||
`Into<Box<Path>> for PathBuf`,
|
||||
`Default for Box<str>`,
|
||||
`Default for Box<CStr>`,
|
||||
`Default for Box<OsStr>`,
|
||||
`From<&CStr> for Box<CStr>`,
|
||||
`From<&OsStr> for Box<OsStr>`,
|
||||
`From<&Path> for Box<Path>`
|
||||
* [`ffi::FromBytesWithNulError` implements `Error` and `Display`][39960]
|
||||
* [Specialize `PartialOrd<A> for [A] where A: Ord`][39642]
|
||||
* [Slightly optimize `slice::sort`][39538]
|
||||
* [Add `ToString` trait specialization for `Cow<'a, str>` and `String`][39440]
|
||||
* [`Box<[T]>` implements `From<&[T]> where T: Copy`,
|
||||
`Box<str>` implements `From<&str>`][39438]
|
||||
* [`IpAddr` implements `From` for various arrays. `SocketAddr` implements
|
||||
`From<(I, u16)> where I: Into<IpAddr>`][39372]
|
||||
* [`format!` estimates the needed capacity before writing a string][39356]
|
||||
* [Support unprivileged symlink creation in Windows][38921]
|
||||
* [`PathBuf` implements `Default`][38764]
|
||||
* [Implement `PartialEq<[A]>` for `VecDeque<A>`][38661]
|
||||
* [`HashMap` resizes adaptively][38368] to guard against DOS attacks
|
||||
and poor hash functions.
|
||||
|
||||
Cargo
|
||||
-----
|
||||
|
||||
* [Add `cargo check --all`][cargo/3731]
|
||||
* [Add an option to ignore SSL revocation checking][cargo/3699]
|
||||
* [Add `cargo run --package`][cargo/3691]
|
||||
* [Add `required_features`][cargo/3667]
|
||||
* [Assume `build.rs` is a build script][cargo/3664]
|
||||
* [Find workspace via `workspace_root` link in containing member][cargo/3562]
|
||||
|
||||
Misc
|
||||
----
|
||||
|
||||
* [Documentation is rendered with mdbook instead of the obsolete, in-tree
|
||||
`rustbook`][39633]
|
||||
* [The "Unstable Book" documents nightly-only features][ubook]
|
||||
* [Improve the style of the sidebar in rustdoc output][40265]
|
||||
* [Configure build correctly on 64-bit CPU's with the armhf ABI][40261]
|
||||
* [Fix MSP430 breakage due to `i128`][40257]
|
||||
* [Preliminary Solaris/SPARCv9 support][39903]
|
||||
* [`rustc` is linked statically on Windows MSVC targets][39837], allowing it to
|
||||
run without installing the MSVC runtime.
|
||||
* [`rustdoc --test` includes file names in test names][39788]
|
||||
* This release includes builds of `std` for `sparc64-unknown-linux-gnu`,
|
||||
`aarch64-unknown-linux-fuchsia`, and `x86_64-unknown-linux-fuchsia`.
|
||||
* [Initial support for `aarch64-unknown-freebsd`][39491]
|
||||
* [Initial support for `i686-unknown-netbsd`][39426]
|
||||
* [This release no longer includes the old makefile build system][39431]. Rust
|
||||
is built with a custom build system, written in Rust, and with Cargo.
|
||||
* [Add Debug implementations for libcollection structs][39002]
|
||||
* [`TypeId` implements `PartialOrd` and `Ord`][38981]
|
||||
* [`--test-threads=0` produces an error][38945]
|
||||
* [`rustup` installs documentation by default][40526]
|
||||
* [The Rust source includes NatVis visualizations][39843]. These can be used by
|
||||
WinDbg and Visual Studio to improve the debugging experience.
|
||||
|
||||
Compatibility Notes
|
||||
-------------------
|
||||
|
||||
* [Rust 1.17 does not correctly detect the MSVC 2017 linker][38584]. As a
|
||||
workaround, either use MSVC 2015 or run vcvars.bat.
|
||||
* [When coercing to an unsized type lifetimes must be equal][40319]. That is,
|
||||
disallow subtyping between `T` and `U` when `T: Unsize<U>`, e.g. coercing
|
||||
`&mut [&'a X; N]` to `&mut [&'b X]` requires `'a` be equal to `'b`. Soundness
|
||||
fix.
|
||||
* [`format!` and `Display::to_string` panic if an underlying formatting
|
||||
implementation returns an error][40117]. Previously the error was silently
|
||||
ignored. It is incorrect for `write_fmt` to return an error when writing
|
||||
to a string.
|
||||
* [In-tree crates are verified to be unstable][39851]. Previously, some minor
|
||||
crates were marked stable and could be accessed from the stable toolchain.
|
||||
* [Rust git source no longer includes vendored crates][39728]. Those that need
|
||||
to build with vendored crates should build from release tarballs.
|
||||
* [Fix inert attributes from `proc_macro_derives`][39572]
|
||||
* [During crate resolution, rustc prefers a crate in the sysroot if two crates
|
||||
are otherwise identical][39518]. Unlikely to be encountered outside the Rust
|
||||
build system.
|
||||
* [Fixed bugs around how type inference interacts with dead-code][39485]. The
|
||||
existing code generally ignores the type of dead-code unless a type-hint is
|
||||
provided; this can cause surprising inference interactions particularly around
|
||||
defaulting. The new code uniformly ignores the result type of dead-code.
|
||||
* [Tuple-struct constructors with private fields are no longer visible][38932]
|
||||
* [Lifetime parameters that do not appear in the arguments are now considered
|
||||
early-bound][38897], resolving a soundness bug (#[32330]). The
|
||||
`hr_lifetime_in_assoc_type` future-compatibility lint has been in effect since
|
||||
April of 2016.
|
||||
* [rustdoc: fix doctests with non-feature crate attributes][38161]
|
||||
* [Make transmuting from fn item types to pointer-sized types a hard
|
||||
error][34198]
|
||||
|
||||
[27787]: https://github.com/rust-lang/rust/issues/27787
|
||||
[32330]: https://github.com/rust-lang/rust/issues/32330
|
||||
[34198]: https://github.com/rust-lang/rust/pull/34198
|
||||
[38161]: https://github.com/rust-lang/rust/pull/38161
|
||||
[38368]: https://github.com/rust-lang/rust/pull/38368
|
||||
[38584]: https://github.com/rust-lang/rust/issues/38584
|
||||
[38661]: https://github.com/rust-lang/rust/pull/38661
|
||||
[38764]: https://github.com/rust-lang/rust/pull/38764
|
||||
[38864]: https://github.com/rust-lang/rust/issues/38864
|
||||
[38897]: https://github.com/rust-lang/rust/pull/38897
|
||||
[38921]: https://github.com/rust-lang/rust/pull/38921
|
||||
[38932]: https://github.com/rust-lang/rust/pull/38932
|
||||
[38945]: https://github.com/rust-lang/rust/pull/38945
|
||||
[38981]: https://github.com/rust-lang/rust/pull/38981
|
||||
[39002]: https://github.com/rust-lang/rust/pull/39002
|
||||
[39116]: https://github.com/rust-lang/rust/pull/39116
|
||||
[39193]: https://github.com/rust-lang/rust/pull/39193
|
||||
[39265]: https://github.com/rust-lang/rust/pull/39265
|
||||
[39356]: https://github.com/rust-lang/rust/pull/39356
|
||||
[39372]: https://github.com/rust-lang/rust/pull/39372
|
||||
[39426]: https://github.com/rust-lang/rust/pull/39426
|
||||
[39431]: https://github.com/rust-lang/rust/pull/39431
|
||||
[39438]: https://github.com/rust-lang/rust/pull/39438
|
||||
[39440]: https://github.com/rust-lang/rust/pull/39440
|
||||
[39485]: https://github.com/rust-lang/rust/pull/39485
|
||||
[39491]: https://github.com/rust-lang/rust/pull/39491
|
||||
[39518]: https://github.com/rust-lang/rust/pull/39518
|
||||
[39538]: https://github.com/rust-lang/rust/pull/39538
|
||||
[39572]: https://github.com/rust-lang/rust/pull/39572
|
||||
[39633]: https://github.com/rust-lang/rust/pull/39633
|
||||
[39642]: https://github.com/rust-lang/rust/pull/39642
|
||||
[39728]: https://github.com/rust-lang/rust/pull/39728
|
||||
[39761]: https://github.com/rust-lang/rust/pull/39761
|
||||
[39788]: https://github.com/rust-lang/rust/pull/39788
|
||||
[39793]: https://github.com/rust-lang/rust/pull/39793
|
||||
[39837]: https://github.com/rust-lang/rust/pull/39837
|
||||
[39843]: https://github.com/rust-lang/rust/pull/39843
|
||||
[39851]: https://github.com/rust-lang/rust/pull/39851
|
||||
[39903]: https://github.com/rust-lang/rust/pull/39903
|
||||
[39939]: https://github.com/rust-lang/rust/pull/39939
|
||||
[39953]: https://github.com/rust-lang/rust/pull/39953
|
||||
[39960]: https://github.com/rust-lang/rust/pull/39960
|
||||
[39990]: https://github.com/rust-lang/rust/pull/39990
|
||||
[39995]: https://github.com/rust-lang/rust/pull/39995
|
||||
[40008]: https://github.com/rust-lang/rust/pull/40008
|
||||
[40009]: https://github.com/rust-lang/rust/pull/40009
|
||||
[40027]: https://github.com/rust-lang/rust/pull/40027
|
||||
[40028]: https://github.com/rust-lang/rust/pull/40028
|
||||
[40037]: https://github.com/rust-lang/rust/pull/40037
|
||||
[40117]: https://github.com/rust-lang/rust/pull/40117
|
||||
[40166]: https://github.com/rust-lang/rust/pull/40166
|
||||
[40245]: https://github.com/rust-lang/rust/pull/40245
|
||||
[40257]: https://github.com/rust-lang/rust/pull/40257
|
||||
[40261]: https://github.com/rust-lang/rust/pull/40261
|
||||
[40265]: https://github.com/rust-lang/rust/pull/40265
|
||||
[40319]: https://github.com/rust-lang/rust/pull/40319
|
||||
[40336]: https://github.com/rust-lang/rust/pull/40336
|
||||
[40526]: https://github.com/rust-lang/rust/pull/40526
|
||||
[RFC 1623]: https://github.com/rust-lang/rfcs/blob/master/text/1623-static.md
|
||||
[RFC 1647]: https://github.com/rust-lang/rfcs/blob/master/text/1647-allow-self-in-where-clauses.md
|
||||
[RFC 1651]: https://github.com/rust-lang/rfcs/blob/master/text/1651-movecell.md
|
||||
[RFC 1682]: https://github.com/rust-lang/rfcs/blob/master/text/1682-field-init-shorthand.md
|
||||
[`Arc::from_raw`]: https://doc.rust-lang.org/std/sync/struct.Arc.html#method.from_raw
|
||||
[`Arc::into_raw`]: https://doc.rust-lang.org/std/sync/struct.Arc.html#method.into_raw
|
||||
[`Arc::ptr_eq`]: https://doc.rust-lang.org/std/sync/struct.Arc.html#method.ptr_eq
|
||||
[`BTreeMap::range_mut`]: https://doc.rust-lang.org/std/collections/btree_map/struct.BTreeMap.html#method.range_mut
|
||||
[`BTreeMap::range`]: https://doc.rust-lang.org/std/collections/btree_map/struct.BTreeMap.html#method.range
|
||||
[`Cell::into_inner`]: https://doc.rust-lang.org/std/cell/struct.Cell.html#method.into_inner
|
||||
[`Cell::replace`]: https://doc.rust-lang.org/std/cell/struct.Cell.html#method.replace
|
||||
[`Cell::swap`]: https://doc.rust-lang.org/std/cell/struct.Cell.html#method.swap
|
||||
[`Cell::take`]: https://doc.rust-lang.org/std/cell/struct.Cell.html#method.take
|
||||
[`Ordering::then_with`]: https://doc.rust-lang.org/std/cmp/enum.Ordering.html#method.then_with
|
||||
[`Ordering::then`]: https://doc.rust-lang.org/std/cmp/enum.Ordering.html#method.then
|
||||
[`Rc::from_raw`]: https://doc.rust-lang.org/std/rc/struct.Rc.html#method.from_raw
|
||||
[`Rc::into_raw`]: https://doc.rust-lang.org/std/rc/struct.Rc.html#method.into_raw
|
||||
[`Rc::ptr_eq`]: https://doc.rust-lang.org/std/rc/struct.Rc.html#method.ptr_eq
|
||||
[`Result::expect_err`]: https://doc.rust-lang.org/std/result/enum.Result.html#method.expect_err
|
||||
[`collections::Bound`]: https://doc.rust-lang.org/std/collections/enum.Bound.html
|
||||
[`process::abort`]: https://doc.rust-lang.org/std/process/fn.abort.html
|
||||
[`ptr::read_unaligned`]: https://doc.rust-lang.org/std/ptr/fn.read_unaligned.html
|
||||
[`ptr::write_unaligned`]: https://doc.rust-lang.org/std/ptr/fn.write_unaligned.html
|
||||
[cargo/3562]: https://github.com/rust-lang/cargo/pull/3562
|
||||
[cargo/3664]: https://github.com/rust-lang/cargo/pull/3664
|
||||
[cargo/3667]: https://github.com/rust-lang/cargo/pull/3667
|
||||
[cargo/3691]: https://github.com/rust-lang/cargo/pull/3691
|
||||
[cargo/3699]: https://github.com/rust-lang/cargo/pull/3699
|
||||
[cargo/3731]: https://github.com/rust-lang/cargo/pull/3731
|
||||
[mdbook]: https://crates.io/crates/mdbook
|
||||
[ubook]: https://doc.rust-lang.org/unstable-book/
|
||||
|
||||
|
||||
Version 1.16.0 (2017-03-16)
|
||||
===========================
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user