From 09a9859c0004a3a442ad46b517110568df3e0c35 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Fri, 16 Dec 2016 19:13:49 -0800 Subject: [PATCH] 1.14 release notes --- RELEASES.md | 200 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 200 insertions(+) diff --git a/RELEASES.md b/RELEASES.md index e468a86e7acc3..f84a3dada65df 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1,3 +1,203 @@ +Version 1.14.0 (2016-12-22) +=========================== + +Language +-------- + +* [`..` matches multiple tuple fields in enum variants, structs + and tuples][36843]. [RFC 1492]. +* [Safe `fn` items can be coerced to `unsafe fn` pointers][37389] +* [`use *` and `use ::*` both glob-import from the crate root][37367] +* [It's now possible to call a `Vec>` without explicit + dereferencing][36822] + +Compiler +-------- + +* [Mark enums with non-zero discriminant as non-zero][37224] +* [Lower-case `static mut` names are linted like other + statics and consts][37162] +* [Fix ICE on some macros in const integer positions + (e.g. `[u8; m!()]`)][36819] +* [Improve error message and snippet for "did you mean `x`"][36798] +* [Add a panic-strategy field to the target specification][36794] +* [Include LLVM version in `--version --verbose`][37200] + +Compile-time Optimizations +-------------------------- + +* [Improve macro expansion performance][37569] +* [Shrink `Expr_::ExprInlineAsm`][37445] +* [Replace all uses of SHA-256 with BLAKE2b][37439] +* [Reduce the number of bytes hashed by `IchHasher`][37427] +* [Avoid more allocations when compiling html5ever][37373] +* [Use `SmallVector` in `CombineFields::instantiate`][37322] +* [Avoid some allocations in the macro parser][37318] +* [Use a faster deflate setting][37298] +* [Add `ArrayVec` and `AccumulateVec` to reduce heap allocations + during interning of slices][37270] +* [Optimize `write_metadata`][37267] +* [Don't process obligation forest cycles when stalled][37231] +* [Avoid many `CrateConfig` clones][37161] +* [Optimize `Substs::super_fold_with`][37108] +* [Optimize `ObligationForest`'s `NodeState` handling][36993] +* [Speed up `plug_leaks`][36917] + +Libraries +--------- + +* [`println!()`, with no arguments, prints newline][36825]. + Previously, an empty string was required to achieve the same. +* [`Wrapping` impls standard binary and unary operators, as well as + the `Sum` and `Product` iterators][37356] +* [Implement `From> for String` and `From> for + Vec`][37326] +* [Improve `fold` performance for `chain`, `cloned`, `map`, and + `VecDeque` iterators][37315] +* [Improve `SipHasher` performance on small values][37312] +* [Add Iterator trait TrustedLen to enable better FromIterator / + Extend][37306] +* [Expand `.zip()` specialization to `.map()` and `.cloned()`][37230] +* [`ReadDir` implements `Debug`][37221] +* [Implement `RefUnwindSafe` for atomic types][37178] +* [Specialize `Vec::extend` to `Vec::extend_from_slice`][37094] +* [Avoid allocations in `Decoder::read_str`][37064] +* [`io::Error` implements `From`][37037] +* [Impl `Debug` for raw pointers to unsized data][36880] +* [Don't reuse `HashMap` random seeds][37470] +* [The internal memory layout of `HashMap` is more cache-friendly, for + significant improvements in some operations][36692] +* [`HashMap` uses less memory on 32-bit architectures][36595] +* [Impl `Add<{str, Cow}>` for `Cow`][36595] + +Cargo +----- + +* [Expose rustc cfg values to build scripts][cargo/3243] +* [Allow cargo to work with read-only `CARGO_HOME`][cargo/3259] +* [Fix passing --features when testing multiple packages][cargo/3280] +* [Use a single profile set per workspace][cargo/3249] +* [Load `replace` sections from lock files][cargo/3220] +* [Ignore `panic` configuration for test/bench profiles][cargo/3175] + +Tooling +------- + +* [rustup is the recommended Rust installation method][1.14rustup] +* This release includes [experimental support for WebAssembly][1.14wasm] +* This release includes builds for ARM Linux running MUSL libc. Add the + `arm-unknown-linux-musleabi`, `arm-unknown-linux-musleabihf`, and + `armv7-unknown-linux-musleabihf` targets via `rustup target add`. +* rustup no longer installs documentation by default. Run `rustup + component add rust-docs` to install. +* [Fix line stepping in debugger][37310] +* [Enable line number debuginfo in releases][37280] + +Misc +---- + +* [Disable jemalloc on aarch64/powerpc][37392] +* [Add support for Fuchsia OS][37313] +* [Detect local-rebuild by only MAJOR.MINOR version][37273] + +Compatibility Notes +------------------- + +* [A number of forward-compatibility lints used by the compiler + to gradually introduce language changes have been converted + to deny by default][36894]: + - ["use of inaccessible extern crate erroneously allowed"][36886] + - ["type parameter default erroneously allowed in invalid location"][36887] + - ["detects super or self keywords at the beginning of global path"][36888] + - ["two overlapping inherent impls define an item with the same name + were erroneously allowed"][36889] + - ["floating-point constants cannot be used in patterns"][36890] + - ["constants of struct or enum type can only be used in a pattern if + the struct or enum has `#[derive(PartialEq, Eq)]`"][36891] + - ["lifetimes or labels named `'_` were erroneously allowed"][36892] +* [Prohibit patterns in trait methods without bodies][37378] +* [The atomic `Ordering` enum may not be matched exhaustively][37351] +* [Future-proofing `#[no_link]` breaks some obscure cases][37247] +* [The `$crate` macro variable is accepted in fewer locations][37213] +* [Impls specifying extra region requirements beyond the trait + they implement are rejected][37167] +* [Enums may not be unsized][37111]. Unsized enums are intended to + work but never have. For now they are forbidden. +* [Enforce the shadowing restrictions from RFC 1560 for today's macros][36767] + +[1.14rustup]: https://internals.rust-lang.org/t/beta-testing-rustup-rs/3316/204 +[1.14wasm]: https://users.rust-lang.org/t/compiling-to-the-web-with-rust-and-emscripten/7627 +[36595]: https://github.com/rust-lang/rust/pull/36595 +[36595]: https://github.com/rust-lang/rust/pull/36595 +[36692]: https://github.com/rust-lang/rust/pull/36692 +[36767]: https://github.com/rust-lang/rust/pull/36767 +[36794]: https://github.com/rust-lang/rust/pull/36794 +[36798]: https://github.com/rust-lang/rust/pull/36798 +[36819]: https://github.com/rust-lang/rust/pull/36819 +[36822]: https://github.com/rust-lang/rust/pull/36822 +[36825]: https://github.com/rust-lang/rust/pull/36825 +[36843]: https://github.com/rust-lang/rust/pull/36843 +[36880]: https://github.com/rust-lang/rust/pull/36880 +[36886]: https://github.com/rust-lang/rust/issues/36886 +[36887]: https://github.com/rust-lang/rust/issues/36887 +[36888]: https://github.com/rust-lang/rust/issues/36888 +[36889]: https://github.com/rust-lang/rust/issues/36889 +[36890]: https://github.com/rust-lang/rust/issues/36890 +[36891]: https://github.com/rust-lang/rust/issues/36891 +[36892]: https://github.com/rust-lang/rust/issues/36892 +[36894]: https://github.com/rust-lang/rust/pull/36894 +[36917]: https://github.com/rust-lang/rust/pull/36917 +[36993]: https://github.com/rust-lang/rust/pull/36993 +[37037]: https://github.com/rust-lang/rust/pull/37037 +[37064]: https://github.com/rust-lang/rust/pull/37064 +[37094]: https://github.com/rust-lang/rust/pull/37094 +[37108]: https://github.com/rust-lang/rust/pull/37108 +[37111]: https://github.com/rust-lang/rust/pull/37111 +[37161]: https://github.com/rust-lang/rust/pull/37161 +[37162]: https://github.com/rust-lang/rust/pull/37162 +[37167]: https://github.com/rust-lang/rust/pull/37167 +[37178]: https://github.com/rust-lang/rust/pull/37178 +[37200]: https://github.com/rust-lang/rust/pull/37200 +[37213]: https://github.com/rust-lang/rust/pull/37213 +[37221]: https://github.com/rust-lang/rust/pull/37221 +[37224]: https://github.com/rust-lang/rust/pull/37224 +[37230]: https://github.com/rust-lang/rust/pull/37230 +[37231]: https://github.com/rust-lang/rust/pull/37231 +[37247]: https://github.com/rust-lang/rust/pull/37247 +[37267]: https://github.com/rust-lang/rust/pull/37267 +[37270]: https://github.com/rust-lang/rust/pull/37270 +[37273]: https://github.com/rust-lang/rust/pull/37273 +[37280]: https://github.com/rust-lang/rust/pull/37280 +[37298]: https://github.com/rust-lang/rust/pull/37298 +[37306]: https://github.com/rust-lang/rust/pull/37306 +[37310]: https://github.com/rust-lang/rust/pull/37310 +[37312]: https://github.com/rust-lang/rust/pull/37312 +[37313]: https://github.com/rust-lang/rust/pull/37313 +[37315]: https://github.com/rust-lang/rust/pull/37315 +[37318]: https://github.com/rust-lang/rust/pull/37318 +[37322]: https://github.com/rust-lang/rust/pull/37322 +[37326]: https://github.com/rust-lang/rust/pull/37326 +[37351]: https://github.com/rust-lang/rust/pull/37351 +[37356]: https://github.com/rust-lang/rust/pull/37356 +[37367]: https://github.com/rust-lang/rust/pull/37367 +[37373]: https://github.com/rust-lang/rust/pull/37373 +[37378]: https://github.com/rust-lang/rust/pull/37378 +[37389]: https://github.com/rust-lang/rust/pull/37389 +[37392]: https://github.com/rust-lang/rust/pull/37392 +[37427]: https://github.com/rust-lang/rust/pull/37427 +[37439]: https://github.com/rust-lang/rust/pull/37439 +[37445]: https://github.com/rust-lang/rust/pull/37445 +[37470]: https://github.com/rust-lang/rust/pull/37470 +[37569]: https://github.com/rust-lang/rust/pull/37569 +[RFC 1492]: https://github.com/rust-lang/rfcs/blob/master/text/1492-dotdot-in-patterns.md +[cargo/3175]: https://github.com/rust-lang/cargo/pull/3175 +[cargo/3220]: https://github.com/rust-lang/cargo/pull/3220 +[cargo/3243]: https://github.com/rust-lang/cargo/pull/3243 +[cargo/3249]: https://github.com/rust-lang/cargo/pull/3249 +[cargo/3259]: https://github.com/rust-lang/cargo/pull/3259 +[cargo/3280]: https://github.com/rust-lang/cargo/pull/3280 + + Version 1.13.0 (2016-11-10) ===========================