]> git.lizzy.rs Git - rust.git/blobdiff - RELEASES.md
`bitflags!` is no longer used in `std`
[rust.git] / RELEASES.md
index 69b804cf24c40ab16e1d9fe431614a9ce6bb3c99..7da73afb4111f4f7f221b6ef90eb907023e2bc4a 100644 (file)
@@ -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 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
+[prim-inherent]: https://github.com/rust-lang/rust/pull/23104
+[overflow]: https://github.com/rust-lang/rfcs/blob/master/text/0560-integer-overflow.md
+[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)
 -------------------------------------