11Version 0.12.0 (October 2014)
22-----------------------------
33
4- * ~ 1700 changes, numerous bugfixes
4+ * ~ 1900 changes, numerous bugfixes
55
66 * Highlights
77
88 * The introductory documentation (now called The Rust Guide) has
99 been completely rewritten, as have a number of supplementary
1010 guides.
11- * Rust's package manager, Cargo, is awesome.
11+ * Rust's package manager, Cargo, continues to improve and is,
12+ reportedly, 'awesome'.
1213 * Many API's in ` std ` have been reviewed and updated for
1314 consistency with the in-development Rust coding
1415 guidelines. The standard library documentation tracks
@@ -21,24 +22,47 @@ Version 0.12.0 (October 2014)
2122 * Rust now works on 64-bit Windows.
2223
2324 * Language
24- * A new slicing syntax (e.g. ` [0..4] ` ) has been introduced behind
25- the 'slicing_syntax' feature gate, and can be overloaded with
26- the ` Slice ` or ` SliceMut ` traits.
2725 * Indexing can be overloaded with the ` Index ` and ` IndexMut `
2826 traits.
2927 * The ` if let ` construct takes a branch only if the ` let ` pattern
3028 matches, currently behind the 'if_let' feature gate.
31- * ` let ` and ` match ` bindings and argument names in macros are now
32- hygienic.
29+ * 'where clauses', a more flexible syntax for specifying trait
30+ bounds that is more aesthetic, have been added for traits and
31+ free functions. Where clauses will in the future make it
32+ possible to constrain associated types, which would be
33+ impossible with the existing syntax.
34+ * A new slicing syntax (e.g. ` [0..4] ` ) has been introduced behind
35+ the 'slicing_syntax' feature gate, and can be overloaded with
36+ the ` AsSlice ` or ` AsSliceMut ` traits.
37+ * The syntax for matching of sub-slices has been changed to use a
38+ postfix ` .. ` instead of prefix (.e.g. ` [a, b, c..] ` ), for
39+ consistency with other uses of ` .. ` and to future-proof
40+ potential additional uses of the syntax.
41+ * The syntax for matching inclusive ranges in patterns has changed
42+ from ` 0..3 ` to ` 0...4 ` to be consistent with the exclusive range
43+ syntax for slicing.
44+ * Matching of sub-slices in non-tail positions (e.g. `[ a.., b,
45+ c] `) has been put behind the 'advanced_slice_patterns' feature
46+ gate and may be removed in the future.
47+ * Components of tuples and tuple structs can be extracted using
48+ the ` value.0 ` syntax, currently behind the ` tuple_indexing `
49+ feature gate.
3350 * The ` #[crate_id] ` attribute is no longer supported; versioning
3451 is handled by the package manager.
35- * Mutation and assignment is no longer allowed in pattern guards.
36- * Generic structs and enums can now have trait bounds.
37- * ` use foo = bar ` is now written ` use bar as foo ` .
52+ * Renaming crate imports are now written ` extern crate foo as bar `
53+ instead of ` extern crate bar = foo ` .
54+ * Renaming use statements are now written ` use foo as bar ` instead
55+ of ` use bar = foo ` .
56+ * ` let ` and ` match ` bindings and argument names in macros are now
57+ hygienic.
3858 * The new, more efficient, closure types ('unboxed closures') have
3959 been added under a feature gate, 'unboxed_closures'. These will
4060 soon replace the existing closure types, once higher-ranked
4161 trait lifetimes are added to the language.
62+ * ` move ` has been added as a keyword, for indicating closures
63+ that capture by value.
64+ * Mutation and assignment is no longer allowed in pattern guards.
65+ * Generic structs and enums can now have trait bounds.
4266 * The ` Share ` trait is now called ` Sync ` to free up the term
4367 'shared' to refer to 'shared reference' (the default reference
4468 type.
@@ -48,40 +72,42 @@ Version 0.12.0 (October 2014)
4872 * As part of dynamically-sized types, the ` Sized ` trait has been
4973 introduced, which qualifying types implement by default, and
5074 which type parameters expect by default. To specify that a type
51- parametr does not need to be sized, write ` <Sized? T> ` . Most
75+ parameter does not need to be sized, write ` <Sized? T> ` . Most
5276 types are ` Sized ` , notable exceptions being unsized arrays
5377 (` [T] ` ) and trait types.
54- * Closures can return ` ! ` , as in ` || -> ! ` or ` proc() -> ` .
55- * The syntax for matching of sub-slices has been changed to use a
56- postfix ` .. ` instead of prefix (.e.g. ` [a, b, c..] ` ), for
57- consistency with other uses of ` .. ` and to future-proof
58- potential additional uses of the syntax.
59- * Matching of sub-slices in non-tail positions (e.g. `[ a.., b,
60- c] `) has been put behind the 'advanced_slice_patterns' feature
61- gate and may be removed in the future.
78+ * Closures can return ` ! ` , as in ` || -> ! ` or ` proc() -> ! ` .
79+ * Lifetime bounds can now be applied to type parameters and object
80+ types.
81+ * The old, reference counted GC type, ` Gc<T> ` which was once
82+ denoted by the ` @ ` sigil, has finally been removed. GC will be
83+ revisited in the future.
6284
6385 * Libraries
6486 * Library documentation has been improved for a number of modules.
6587 * Bit-vectors, collections::bitv has been modernized.
6688 * The url crate is deprecated in favor of
6789 http://github.com/servo/rust-url , which can be installed with
6890 Cargo.
69- * Most I/O stream types can be cloned and subsequently closed
70- from a different thread.
91+ * Most I/O stream types can be cloned and subsequently closed from
92+ a different thread.
7193 * A ` std::time::Duration ` type has been added for use in I/O
7294 methods that rely on timers, as well as in the 'time' crate's
7395 ` Timespec ` arithmetic.
74- * The green-thread scheduler, libgreen, has been removed, as
75- has the associated runtime I/O abstraction layer.
96+ * The runtime I/O abstraction layer that enabled the green thread
97+ scheduler to do non-thread-blocking I/O has been removed, along
98+ with the libuv-based implementation employed by the green thread
99+ scheduler. This will greatly simplify the future I/O work.
100+ * ` collections::btree ` has been rewritten to have a more
101+ idiomatic and efficient design.
76102
77103 * Tooling
78104 * rustdoc output now indicates the stability levels of API's.
79105 * The ` --crate-name ` flag can specify the name of the crate
80106 being compiled, like ` #[crate_name] ` .
81- * The ` -C metadata ` specifies additional metada to hash into
107+ * The ` -C metadata ` specifies additional metadata to hash into
82108 symbol names, and ` -C extra-filename ` specifies additional
83- information to put into the output filename, for use by
84- the package manager for versioning.
109+ information to put into the output filename, for use by the
110+ package manager for versioning.
85111 * debug info generation has continued to improve and should be
86112 more reliable under both gdb and lldb.
87113 * rustc has experimental support for compiling in parallel
0 commit comments