1
1
Version 0.12.0 (October 2014)
2
2
-----------------------------
3
3
4
- * ~ 1700 changes, numerous bugfixes
4
+ * ~ 1900 changes, numerous bugfixes
5
5
6
6
* Highlights
7
7
8
8
* The introductory documentation (now called The Rust Guide) has
9
9
been completely rewritten, as have a number of supplementary
10
10
guides.
11
- * Rust's package manager, Cargo, is awesome.
11
+ * Rust's package manager, Cargo, continues to improve and is,
12
+ reportedly, 'awesome'.
12
13
* Many API's in ` std ` have been reviewed and updated for
13
14
consistency with the in-development Rust coding
14
15
guidelines. The standard library documentation tracks
@@ -21,24 +22,47 @@ Version 0.12.0 (October 2014)
21
22
* Rust now works on 64-bit Windows.
22
23
23
24
* 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.
27
25
* Indexing can be overloaded with the ` Index ` and ` IndexMut `
28
26
traits.
29
27
* The ` if let ` construct takes a branch only if the ` let ` pattern
30
28
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.
33
50
* The ` #[crate_id] ` attribute is no longer supported; versioning
34
51
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.
38
58
* The new, more efficient, closure types ('unboxed closures') have
39
59
been added under a feature gate, 'unboxed_closures'. These will
40
60
soon replace the existing closure types, once higher-ranked
41
61
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.
42
66
* The ` Share ` trait is now called ` Sync ` to free up the term
43
67
'shared' to refer to 'shared reference' (the default reference
44
68
type.
@@ -48,40 +72,42 @@ Version 0.12.0 (October 2014)
48
72
* As part of dynamically-sized types, the ` Sized ` trait has been
49
73
introduced, which qualifying types implement by default, and
50
74
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
52
76
types are ` Sized ` , notable exceptions being unsized arrays
53
77
(` [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.
62
84
63
85
* Libraries
64
86
* Library documentation has been improved for a number of modules.
65
87
* Bit-vectors, collections::bitv has been modernized.
66
88
* The url crate is deprecated in favor of
67
89
http://github.com/servo/rust-url , which can be installed with
68
90
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.
71
93
* A ` std::time::Duration ` type has been added for use in I/O
72
94
methods that rely on timers, as well as in the 'time' crate's
73
95
` 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.
76
102
77
103
* Tooling
78
104
* rustdoc output now indicates the stability levels of API's.
79
105
* The ` --crate-name ` flag can specify the name of the crate
80
106
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
82
108
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.
85
111
* debug info generation has continued to improve and should be
86
112
more reliable under both gdb and lldb.
87
113
* rustc has experimental support for compiling in parallel
0 commit comments