Update RELEASES.md for 0.12.0

This commit is contained in:
Brian Anderson 2014-10-02 15:54:43 -07:00
parent ea4d5d2a24
commit bad7ecbfc7
1 changed files with 96 additions and 0 deletions

View 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)
-------------------------