From 35a6a372a656b8d5f87115f6a59621da252444c5 Mon Sep 17 00:00:00 2001 From: Aaron Turon Date: Wed, 1 Apr 2015 16:40:06 -0700 Subject: [PATCH] Add release notes for 1.0.0-beta --- RELEASES.md | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) diff --git a/RELEASES.md b/RELEASES.md index 69b804cf24c..4068d2ef9f2 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1,3 +1,102 @@ +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. + * 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 +[prim-inherent]: https://github.com/rust-lang/rust/pull/23104 +[overflow]: https://github.com/rust-lang/rust/pull/22532 +[metadata-shrink]: https://github.com/rust-lang/rust/pull/22971 +[self-sized]: https://github.com/rust-lang/rust/pull/22301 +[assoc-where]: https://github.com/rust-lang/rust/pull/22512 +[string-pattern]: https://github.com/rust-lang/rust/pull/22466 +[oibit-final]: https://github.com/rust-lang/rust/pull/21689 +[reflect]: https://github.com/rust-lang/rust/pull/23712 +[debug-builder]: https://github.com/rust-lang/rfcs/blob/master/text/0640-debug-improvements.md +[conversion]: https://github.com/rust-lang/rfcs/pull/529 +[num-traits]: https://github.com/rust-lang/rust/pull/23549 +[index-value]: https://github.com/rust-lang/rust/pull/23601 +[dropck]: https://github.com/rust-lang/rfcs/pull/769 +[fundamental]: https://github.com/rust-lang/rfcs/pull/1023 +[ci-compare]: https://gist.github.com/brson/a30a77836fbec057cbee +[fn-inherit]: https://github.com/rust-lang/rust/pull/23282 +[fn-blanket]: https://github.com/rust-lang/rust/pull/23895 +[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) -------------------------------------