]> git.lizzy.rs Git - rust.git/commitdiff
Update RELEASES.md for 0.12.0
authorBrian Anderson <banderson@mozilla.com>
Thu, 2 Oct 2014 22:54:43 +0000 (15:54 -0700)
committerBrian Anderson <banderson@mozilla.com>
Tue, 7 Oct 2014 18:18:49 +0000 (11:18 -0700)
RELEASES.md

index ba87e575056377ecae8c1ab4fa536379ff5380fb..799475cb1a629e9656b0d6c43cf9b57eb1bbadac 100644 (file)
@@ -1,3 +1,99 @@
+Version 0.12.0 (October 2014)
+-----------------------------
+
+  * ~1700 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.
+    * Many API's in `std` have been reviewed and updated for
+      consistency with the in-development Rust coding
+      guidelines. The standard library documentation tracks
+      stabilization progress.
+    * Minor libraries have been moved out-of-tree to the rust-lang org
+      on GitHub: uuid, semver, glob, num, hexfloat, fourcc. They can
+      be installed with Cargo.
+    * Lifetime elision allows lifetime annotations to be left off of
+      function declarations in many common scenarios.
+    * 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.
+    * 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`.
+    * 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.
+    * The `Share` trait is now called `Sync` to free up the term
+      'shared' to refer to 'shared reference' (the default reference
+      type.
+    * Dynamically-sized types have been mostly implemented,
+      unifying the behavior of fat-pointer types with the rest of the
+      type system.
+    * 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
+      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.
+
+  * Libraries
+    * Library documentation has been improved for a number of modules.
+    * Bit-vectors, collections::bitv has been modernized.
+    * 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.
+    * 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.
+
+  * 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
+      symbol names, and `-C extra-filename` specifies additional
+      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
+      using the `-C codegen-units` flag.
+    * rustc no longer encodes rpath information into binaries by
+      default.
+
+  * Misc
+    * Stack usage has been optimized with LLVM lifetime annotations.
+    * Official Rust binaries on Linux are more compatible with older
+      kernels and distributions, built on CentOS 5.10.
+
 Version 0.11.0 (July 2014)
 -------------------------