From 1adc98c590891071480d12036931fc794156bc94 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Thu, 7 May 2015 16:19:07 -0700 Subject: [PATCH] Merge the release notes for 1.0.0-beta and 1.0.0 --- RELEASES.md | 142 +++++++++++++++++++++++----------------------------- 1 file changed, 62 insertions(+), 80 deletions(-) diff --git a/RELEASES.md b/RELEASES.md index 90a295830f018..bd38dd52f27e1 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1,12 +1,16 @@ Version 1.0.0 (May 2015) ======================== -* ~420 changes, numerous bugfixes - Highlights ---------- -* Most of the standard library is now stable and will not change. +* The vast majority of the standard library is now `#[stable]`. It is + no longer possible to use unstable features with a stable build of + the compiler. +* Many popular crates on [crates.io] now work on the stable release + channel. +* Arithmetic on basic integer types now [checks for overflow in debug + builds][overflow]. Language -------- @@ -25,6 +29,30 @@ Language bar`, and Cargo now automatically translates "-" in *package* names to "_" for the crate name][cr]. * [Lifetime shadowing is an error][lt]. +* [`Send` no longer implies `'static`][send-rfc], which made possible + the [`thread::scoped` API][scoped]. Scoped threads can borrow data + from their parent's stack frame -- safely! +* [UFCS now supports trait-less associated paths][moar-ufcs] like + `MyType::default()`. +* Primitive types [now have inherent methods][prim-inherent], + obviating the need for extension traits like `SliceExt`. +* Methods with `Self: Sized` in their `where` clause are [considered + object-safe][self-sized], allowing many extension traits like + `IteratorExt` to be merged into the traits they extended. +* You can now [refer to associated types][assoc-where] whose + corresponding trait bounds appear only in a `where` clause. +* The final bits of [OIBIT landed][oibit-final], meaning that traits + like `Send` and `Sync` are now library-defined. +* A [Reflect trait][reflect] was introduced, which means that + downcasting via the `Any` trait is effectively limited to concrete + types. This helps retain the potentially-important "parametricity" + property: generic code cannot behave differently for different type + arguments except in minor ways. +* The `unsafe_destructor` feature is now deprecated in favor of the + [new `dropck`][dropck]. This change is a major reduction in unsafe + code. +* Trait coherence was [revised again][fundamental], this time with an + eye toward API evolution over time. Libraries --------- @@ -56,6 +84,31 @@ Libraries `split_whitespace`, to avoid answering the tricky question, 'what is a word?'][sw]. +* The new path and IO modules are complete and `#[stable]`. This + was the major library focus for this cycle. +* The path API was [revised][path-normalize] to normalize `.`, + adjusting the tradeoffs in favor of the most common usage. +* A large number of remaining APIs in `std` were also stabilized + during this cycle; about 75% of the non-deprecated API surface + is now stable. +* The new [string pattern API][string-pattern] landed, which makes + the string slice API much more internally consistent and flexible. +* A shiny [framework for Debug implementations][debug-builder] landed. + This makes it possible to opt in to "pretty-printed" debugging output. +* A new set of [generic conversion traits][conversion] replaced + many existing ad hoc traits. +* Generic numeric traits were [completely removed][num-traits]. This + was made possible thanks to inherent methods for primitive types, + and the removal gives maximal flexibility for designing a numeric + hierarchy in the future. +* The `Fn` traits are now related via [inheritance][fn-inherit] + and provide ergonomic [blanket implementations][fn-blanket]. +* The `Index` and `IndexMut` traits were changed to + [take the index by value][index-value], enabling code like + `hash_map["string"]` to work. +* `Copy` now [inherits][copy-clone] from `Clone`, meaning that all + `Copy` data is known to be `Clone` as well. + Misc ---- @@ -65,7 +118,12 @@ Misc documentation. * rustdoc has received a number of improvements focused on completion and polish. +* Metadata was tuned, shrinking binaries [by 27%][metadata-shrink]. +* Much headway was made on ecosystem-wide CI, making it possible + to [compare builds for breakage][ci-compare]. + +[crates.io]: http://crates.io [clo]: https://github.com/rust-lang/rust/pull/24034 [coh]: https://github.com/rust-lang/rfcs/blob/master/text/1023-rebalancing-coherence.md [con]: https://github.com/rust-lang/rust/pull/23875 @@ -83,83 +141,6 @@ Misc [spl]: https://github.com/rust-lang/rfcs/blob/master/text/0979-align-splitn-with-other-languages.md [sw]: https://github.com/rust-lang/rfcs/blob/master/text/1054-str-words.md [th]: https://github.com/rust-lang/rfcs/blob/master/text/0909-move-thread-local-to-std-thread.md - -Version 1.0.0-beta (April 2015) -=============================== - -* ~1100 changes, numerous bugfixes - -* Highlights - - * The big news is that the vast majority of the standard library - is now `#[stable]` -- 75% of the non-deprecated API surface at - last count. Numerous crates are now running on stable - Rust. Starting with this release, it is not possible to use - unstable features on a stable build. - * Arithmetic on basic integer types now - [checks for overflow in debug builds][overflow]. - -* Language - - * [`Send` no longer implies `'static`][send-rfc], which made - possible the [`thread::scoped` API][scoped]. Scoped threads can - borrow data from their parent's stack frame -- safely! - * [UFCS now supports trait-less associated paths][moar-ufcs] like - `MyType::default()`. - * Primitive types [now have inherent methods][prim-inherent], - obviating the need for extension traits like `SliceExt`. - * Methods with `Self: Sized` in their `where` clause are - [considered object-safe][self-sized], allowing many extension - traits like `IteratorExt` to be merged into the traits they - extended. - * You can now [refer to associated types][assoc-where] whose - corresponding trait bounds appear only in a `where` clause. - * The final bits of [OIBIT landed][oibit-final], meaning that - traits like `Send` and `Sync` are now library-defined. - * A [Reflect trait][reflect] was introduced, which means that - downcasting via the `Any` trait is effectively limited to - concrete types. This helps retain the potentially-important - "parametricity" property: generic code cannot behave differently - for different type arguments except in minor ways. - * The `unsafe_destructor` feature is now deprecated in favor of - the [new `dropck`][dropck]. This change is a major reduction in - unsafe code. - * Trait coherence was [revised again][fundamental], this time with - an eye toward API evolution over time. - -* Libraries - - * The new path and IO modules are complete and `#[stable]`. This - was the major library focus for this cycle. - * The path API was [revised][path-normalize] to normalize `.`, - adjusting the tradeoffs in favor of the most common usage. - * A large number of remaining APIs in `std` were also stabilized - during this cycle; about 75% of the non-deprecated API surface - is now stable. - * The new [string pattern API][string-pattern] landed, which makes - the string slice API much more internally consistent and flexible. - * A shiny [framework for Debug implementations][debug-builder] landed. - This makes it possible to opt in to "pretty-printed" debugging output. - * A new set of [generic conversion traits][conversion] replaced - many existing ad hoc traits. - * Generic numeric traits were - [completely removed][num-traits]. This was made possible thanks - to inherent methods for primitive types, and the removal gives - maximal flexibility for designing a numeric hierarchy in the future. - * The `Fn` traits are now related via [inheritance][fn-inherit] - and provide ergonomic [blanket implementations][fn-blanket]. - * The `Index` and `IndexMut` traits were changed to - [take the index by value][index-value], enabling code like - `hash_map["string"]` to work. - * `Copy` now [inherits][copy-clone] from `Clone`, meaning that all - `Copy` data is known to be `Clone` as well. - -* Infrastructure - - * Metadata was tuned, shrinking binaries [by 27%][metadata-shrink]. - * Much headway was made on ecosystem-wide CI, making it possible - to [compare builds for breakage][ci-compare]. - [send-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0458-send-improvements.md [scoped]: http://static.rust-lang.org/doc/master/std/thread/fn.scoped.html [moar-ufcs]: https://github.com/rust-lang/rust/pull/22172 @@ -183,6 +164,7 @@ Version 1.0.0-beta (April 2015) [copy-clone]: https://github.com/rust-lang/rust/pull/23860 [path-normalize]: https://github.com/rust-lang/rust/pull/23229 + Version 1.0.0-alpha.2 (February 2015) -------------------------------------