about summary refs log tree commit diff
path: root/RELEASES.md
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2014-10-06 12:07:28 -0700
committerBrian Anderson <banderson@mozilla.com>2014-10-07 11:18:49 -0700
commitd2856f8127431eb2f441f32c8aa0224794326d93 (patch)
tree80a8b073db1d030f0423dfa3d0d07595d3f00e6c /RELEASES.md
parentc1db2fbec854a929546da4e224b31cc4724c9899 (diff)
downloadrust-d2856f8127431eb2f441f32c8aa0224794326d93.tar.gz
rust-d2856f8127431eb2f441f32c8aa0224794326d93.zip
Update per feedback
Diffstat (limited to 'RELEASES.md')
-rw-r--r--RELEASES.md78
1 files changed, 52 insertions, 26 deletions
diff --git a/RELEASES.md b/RELEASES.md
index 799475cb1a6..44530cb817a 100644
--- a/RELEASES.md
+++ b/RELEASES.md
@@ -1,14 +1,15 @@
 Version 0.12.0 (October 2014)
 -----------------------------
 
-  * ~1700 changes, numerous bugfixes
+  * ~1900 changes, numerous bugfixes
 
   * Highlights
 
     * The introductory documentation (now called The Rust Guide) has
       been completely rewritten, as have a number of supplementary
       guides.
-    * Rust's package manager, Cargo, is awesome.
+    * Rust's package manager, Cargo, continues to improve and is,
+      reportedly, 'awesome'.
     * Many API's in `std` have been reviewed and updated for
       consistency with the in-development Rust coding
       guidelines. The standard library documentation tracks
@@ -21,24 +22,47 @@ Version 0.12.0 (October 2014)
     * Rust now works on 64-bit Windows.
 
   * Language
-    * A new slicing syntax (e.g. `[0..4]`) has been introduced behind
-      the 'slicing_syntax' feature gate, and can be overloaded with
-      the `Slice` or `SliceMut` traits.
     * Indexing can be overloaded with the `Index` and `IndexMut`
       traits.
     * The `if let` construct takes a branch only if the `let` pattern
       matches, currently behind the 'if_let' feature gate.
-    * `let` and `match` bindings and argument names in macros are now
-      hygienic.
+    * 'where clauses', a more flexible syntax for specifying trait
+      bounds that is more aesthetic, have been added for traits and
+      free functions. Where clauses will in the future make it
+      possible to constrain associated types, which would be
+      impossible with the existing syntax.
+    * A new slicing syntax (e.g. `[0..4]`) has been introduced behind
+      the 'slicing_syntax' feature gate, and can be overloaded with
+      the `AsSlice` or `AsSliceMut` traits.
+    * The syntax for matching of sub-slices has been changed to use a
+      postfix `..` instead of prefix (.e.g. `[a, b, c..]`), for
+      consistency with other uses of `..` and to future-proof
+      potential additional uses of the syntax.
+    * The syntax for matching inclusive ranges in patterns has changed
+      from `0..3` to `0...4` to be consistent with the exclusive range
+      syntax for slicing.
+    * Matching of sub-slices in non-tail positions (e.g.  `[a.., b,
+      c]`) has been put behind the 'advanced_slice_patterns' feature
+      gate and may be removed in the future.
+    * Components of tuples and tuple structs can be extracted using
+      the `value.0` syntax, currently behind the `tuple_indexing`
+      feature gate.
     * The `#[crate_id]` attribute is no longer supported; versioning
       is handled by the package manager.
-    * Mutation and assignment is no longer allowed in pattern guards.
-    * Generic structs and enums can now have trait bounds.
-    * `use foo = bar` is now written `use bar as foo`.
+    * Renaming crate imports are now written `extern crate foo as bar`
+      instead of `extern crate bar = foo`.
+    * Renaming use statements are now written `use foo as bar` instead
+      of `use bar = foo`.
+    * `let` and `match` bindings and argument names in macros are now
+      hygienic.
     * The new, more efficient, closure types ('unboxed closures') have
       been added under a feature gate, 'unboxed_closures'. These will
       soon replace the existing closure types, once higher-ranked
       trait lifetimes are added to the language.
+    * `move` has been added as a keyword, for indicating closures
+      that capture by value.
+    * Mutation and assignment is no longer allowed in pattern guards.
+    * Generic structs and enums can now have trait bounds.
     * The `Share` trait is now called `Sync` to free up the term
       'shared' to refer to 'shared reference' (the default reference
       type.
@@ -48,17 +72,15 @@ Version 0.12.0 (October 2014)
     * As part of dynamically-sized types, the `Sized` trait has been
       introduced, which qualifying types implement by default, and
       which type parameters expect by default. To specify that a type
-      parametr does not need to be sized, write `<Sized? T>`. Most
+      parameter does not need to be sized, write `<Sized? T>`. Most
       types are `Sized`, notable exceptions being unsized arrays
       (`[T]`) and trait types.
-    * Closures can return `!`, as in `|| -> !` or `proc() ->`.
-    * The syntax for matching of sub-slices has been changed to use a
-      postfix `..` instead of prefix (.e.g. `[a, b, c..]`), for
-      consistency with other uses of `..` and to future-proof
-      potential additional uses of the syntax.
-    * Matching of sub-slices in non-tail positions (e.g.  `[a.., b,
-      c]`) has been put behind the 'advanced_slice_patterns' feature
-      gate and may be removed in the future.
+    * Closures can return `!`, as in `|| -> !` or `proc() -> !`.
+    * Lifetime bounds can now be applied to type parameters and object
+      types.
+    * The old, reference counted GC type, `Gc<T>` which was once
+      denoted by the `@` sigil, has finally been removed. GC will be
+      revisited in the future.
 
   * Libraries
     * Library documentation has been improved for a number of modules.
@@ -66,22 +88,26 @@ Version 0.12.0 (October 2014)
     * The url crate is deprecated in favor of
       http://github.com/servo/rust-url, which can be installed with
       Cargo.
-    * Most I/O stream types can be cloned and subsequently closed
-      from a different thread.
+    * Most I/O stream types can be cloned and subsequently closed from
+      a different thread.
     * A `std::time::Duration` type has been added for use in I/O
       methods that rely on timers, as well as in the 'time' crate's
       `Timespec` arithmetic.
-    * The green-thread scheduler, libgreen, has been removed, as
-      has the associated runtime I/O abstraction layer.
+    * The runtime I/O abstraction layer that enabled the green thread
+      scheduler to do non-thread-blocking I/O has been removed, along
+      with the libuv-based implementation employed by the green thread
+      scheduler. This will greatly simplify the future I/O work.
+    * `collections::btree` has been rewritten to have a more
+      idiomatic and efficient design.
 
   * Tooling
     * rustdoc output now indicates the stability levels of API's.
     * The `--crate-name` flag can specify the name of the crate
       being compiled, like `#[crate_name]`.
-    * The `-C metadata` specifies additional metada to hash into
+    * The `-C metadata` specifies additional metadata to hash into
       symbol names, and `-C extra-filename` specifies additional
-      information to put into the output filename, for use by
-      the package manager for versioning.
+      information to put into the output filename, for use by the
+      package manager for versioning.
     * debug info generation has continued to improve and should be
       more reliable under both gdb and lldb.
     * rustc has experimental support for compiling in parallel