1
- Version 1.0.0-beta (April 2015)
2
- -------------------------------------
3
-
4
- * ~ 1100 changes, numerous bugfixes
5
-
6
- * Highlights
7
-
8
- * The big news is that the vast majority of the standard library
9
- is now ` #[stable] ` -- 75% of the non-deprecated API surface at
10
- last count. Numerous crates are now running on stable
11
- Rust. Starting with this release, it is not possible to use
12
- unstable features on a stable build.
13
- * Arithmetic on basic integer types now
14
- [ checks for overflow in debug builds] [ overflow ] .
15
-
16
- * Language
17
-
18
- * [ ` Send ` no longer implies ` 'static ` ] [ send-rfc ] , which made
19
- possible the [ ` thread::scoped ` API] [ scoped ] . Scoped threads can
20
- borrow data from their parent's stack frame -- safely!
21
- * [ UFCS now supports trait-less associated paths] [ moar-ufcs ] like
22
- ` MyType::default() ` .
23
- * Primitive types [ now have inherent methods] [ prim-inherent ] ,
24
- obviating the need for extension traits like ` SliceExt ` .
25
- * Methods with ` Self: Sized ` in their ` where ` clause are
26
- [ considered object-safe] [ self-sized ] , allowing many extension
27
- traits like ` IteratorExt ` to be merged into the traits they
28
- extended.
29
- * You can now [ refer to associated types] [ assoc-where ] whose
30
- corresponding trait bounds appear only in a ` where ` clause.
31
- * The final bits of [ OIBIT landed] [ oibit-final ] , meaning that
32
- traits like ` Send ` and ` Sync ` are now library-defined.
33
- * A [ Reflect trait] [ reflect ] was introduced, which means that
34
- downcasting via the ` Any ` trait is effectively limited to
35
- concrete types. This helps retain the potentially-important
36
- "parametricity" property: generic code cannot behave differently
37
- for different type arguments except in minor ways.
38
- * The ` unsafe_destructor ` feature is now deprecated in favor of
39
- the [ new ` dropck ` ] [ dropck ] . This change is a major reduction in
40
- unsafe code.
41
- * Trait coherence was [ revised again] [ fundamental ] , this time with
42
- an eye toward API evolution over time.
43
-
44
- * Libraries
45
-
46
- * The new path and IO modules are complete and ` #[stable] ` . This
47
- was the major library focus for this cycle.
48
- * The path API was [ revised] [ path-normalize ] to normalize ` . ` ,
49
- adjusting the tradeoffs in favor of the most common usage.
50
- * A large number of remaining APIs in ` std ` were also stabilized
51
- during this cycle; about 75% of the non-deprecated API surface
52
- is now stable.
53
- * The new [ string pattern API] [ string-pattern ] landed, which makes
54
- the string slice API much more internally consistent and flexible.
55
- * A shiny [ framework for Debug implementations] [ debug-builder ] landed.
56
- This makes it possible to opt in to "pretty-printed" debugging output.
57
- * A new set of [ generic conversion traits] [ conversion ] replaced
58
- many existing ad hoc traits.
59
- * Generic numeric traits were
60
- [ completely removed] [ num-traits ] . This was made possible thanks
61
- to inherent methods for primitive types, and the removal gives
62
- maximal flexibility for designing a numeric hierarchy in the future.
63
- * The ` Fn ` traits are now related via [ inheritance] [ fn-inherit ]
64
- and provide ergonomic [ blanket implementations] [ fn-blanket ] .
65
- * The ` Index ` and ` IndexMut ` traits were changed to
66
- [ take the index by value] [ index-value ] , enabling code like
67
- ` hash_map["string"] ` to work.
68
- * ` Copy ` now [ inherits] [ copy-clone ] from ` Clone ` , meaning that all
69
- ` Copy ` data is known to be ` Clone ` as well.
70
-
71
- * Infrastructure
72
-
73
- * Metadata was tuned, shrinking binaries [ by 27%] [ metadata-shrink ] .
74
- * Much headway was made on ecosystem-wide CI, making it possible
75
- to [ compare builds for breakage] [ ci-compare ] .
76
-
1
+ Version 1.0.0 (May 2015)
2
+ ========================
3
+
4
+ * ~ 1500 changes, numerous bugfixes
5
+
6
+ Highlights
7
+ ----------
8
+
9
+ * The vast majority of the standard library is now ` #[stable] ` . It is
10
+ no longer possible to use unstable features with a stable build of
11
+ the compiler.
12
+ * Many popular crates on [ crates.io] now work on the stable release
13
+ channel.
14
+ * Arithmetic on basic integer types now [ checks for overflow in debug
15
+ builds] [ overflow ] .
16
+
17
+ Language
18
+ --------
19
+
20
+ * Several [ restrictions have been added to trait coherence] [ coh ] in
21
+ order to make it easier for upstream authors to change traits
22
+ without breaking downsteam code.
23
+ * Digits of binary and octal literals are [ lexed more eagerly] [ lex ] to
24
+ improve error messages and macro behavior. For example, ` 0b1234 ` is
25
+ now lexed as ` 0b1234 ` instead of two tokens, ` 0b1 ` and ` 234 ` .
26
+ * Trait bounds [ are always invariant] [ inv ] , eleminating the need for
27
+ the ` PhantomFn ` and ` MarkerTrait ` lang items, which have been
28
+ removed.
29
+ * [ "-" is no longer a valid character in crate names] [ cr ] , the `extern crate
30
+ "foo" as bar` syntax has been replaced with ` extern crate foo as
31
+ bar`, and Cargo now automatically translates "-" in * package* names
32
+ to underscore for the crate name.
33
+ * [ Lifetime shadowing is an error] [ lt ] .
34
+ * [ ` Send ` no longer implies ` 'static ` ] [ send-rfc ] .
35
+ * [ UFCS now supports trait-less associated paths] [ moar-ufcs ] like
36
+ ` MyType::default() ` .
37
+ * Primitive types [ now have inherent methods] [ prim-inherent ] ,
38
+ obviating the need for extension traits like ` SliceExt ` .
39
+ * Methods with ` Self: Sized ` in their ` where ` clause are [ considered
40
+ object-safe] [ self-sized ] , allowing many extension traits like
41
+ ` IteratorExt ` to be merged into the traits they extended.
42
+ * You can now [ refer to associated types] [ assoc-where ] whose
43
+ corresponding trait bounds appear only in a ` where ` clause.
44
+ * The final bits of [ OIBIT landed] [ oibit-final ] , meaning that traits
45
+ like ` Send ` and ` Sync ` are now library-defined.
46
+ * A [ Reflect trait] [ reflect ] was introduced, which means that
47
+ downcasting via the ` Any ` trait is effectively limited to concrete
48
+ types. This helps retain the potentially-important "parametricity"
49
+ property: generic code cannot behave differently for different type
50
+ arguments except in minor ways.
51
+ * The ` unsafe_destructor ` feature is now deprecated in favor of the
52
+ [ new ` dropck ` ] [ dropck ] . This change is a major reduction in unsafe
53
+ code.
54
+
55
+ Libraries
56
+ ---------
57
+
58
+ * The ` thread_local ` module [ has been renamed to ` std::thread ` ] [ th ] .
59
+ * The methods of ` IteratorExt ` [ have been moved to the ` Iterator `
60
+ trait itself] [ ie ] .
61
+ * Several traits that implement Rust's conventions for type
62
+ conversions, ` AsMut ` , ` AsRef ` , ` From ` , and ` Into ` have been
63
+ [ centralized in the ` std::convert ` module] [ con ] .
64
+ * The ` FromError ` trait [ was removed in favor of ` From ` ] [ fe ] .
65
+ * The basic sleep function [ has moved to
66
+ ` std::thread::sleep_ms ` ] [ slp ] .
67
+ * The ` splitn ` function now takes an ` n ` parameter that represents the
68
+ number of items yielded by the returned iterator [ instead of the
69
+ number of 'splits'] [ spl ] .
70
+ * [ On Unix, all file descriptors are ` CLOEXEC ` by default] [ clo ] .
71
+ * [ Derived implementations of ` PartialOrd ` now order enums according
72
+ to their explicitly-assigned discriminants] [ po ] .
73
+ * [ Methods for searching strings are generic over ` Pattern ` s] [ pat ] ,
74
+ implemented presently by ` &char ` , ` &str ` , ` FnMut(char) -> bool ` and
75
+ some others.
76
+ * [ In method resolution, object methods are resolved before inherent
77
+ methods] [ meth ] .
78
+ * [ ` String::from_str ` has been deprecated in favor of the ` From ` impl,
79
+ ` String::from ` ] [ sf ] .
80
+ * [ ` io::Error ` implements ` Sync ` ] [ ios ] .
81
+ * [ The ` words ` method on ` &str ` has been replaced with
82
+ ` split_whitespace ` ] [ sw ] , to avoid answering the tricky question, 'what is
83
+ a word?'
84
+ * The new path and IO modules are complete and ` #[stable] ` . This
85
+ was the major library focus for this cycle.
86
+ * The path API was [ revised] [ path-normalize ] to normalize ` . ` ,
87
+ adjusting the tradeoffs in favor of the most common usage.
88
+ * A large number of remaining APIs in ` std ` were also stabilized
89
+ during this cycle; about 75% of the non-deprecated API surface
90
+ is now stable.
91
+ * The new [ string pattern API] [ string-pattern ] landed, which makes
92
+ the string slice API much more internally consistent and flexible.
93
+ * A new set of [ generic conversion traits] [ conversion ] replaced
94
+ many existing ad hoc traits.
95
+ * Generic numeric traits were [ completely removed] [ num-traits ] . This
96
+ was made possible thanks to inherent methods for primitive types,
97
+ and the removal gives maximal flexibility for designing a numeric
98
+ hierarchy in the future.
99
+ * The ` Fn ` traits are now related via [ inheritance] [ fn-inherit ]
100
+ and provide ergonomic [ blanket implementations] [ fn-blanket ] .
101
+ * The ` Index ` and ` IndexMut ` traits were changed to
102
+ [ take the index by value] [ index-value ] , enabling code like
103
+ ` hash_map["string"] ` to work.
104
+ * ` Copy ` now [ inherits] [ copy-clone ] from ` Clone ` , meaning that all
105
+ ` Copy ` data is known to be ` Clone ` as well.
106
+
107
+ Misc
108
+ ----
109
+
110
+ * Many errors now have extended explanations that can be accessed with
111
+ the ` --explain ` flag to ` rustc ` .
112
+ * Many new examples have been added to the standard library
113
+ documentation.
114
+ * rustdoc has received a number of improvements focused on completion
115
+ and polish.
116
+ * Metadata was tuned, shrinking binaries [ by 27%] [ metadata-shrink ] .
117
+ * Much headway was made on ecosystem-wide CI, making it possible
118
+ to [ compare builds for breakage] [ ci-compare ] .
119
+
120
+
121
+ [ crates.io ] : http://crates.io
122
+ [ clo ] : https://github.com/rust-lang/rust/pull/24034
123
+ [ coh ] : https://github.com/rust-lang/rfcs/blob/master/text/1023-rebalancing-coherence.md
124
+ [ con ] : https://github.com/rust-lang/rust/pull/23875
125
+ [ cr ] : https://github.com/rust-lang/rust/pull/23419
126
+ [ fe ] : https://github.com/rust-lang/rust/pull/23879
127
+ [ ie ] : https://github.com/rust-lang/rust/pull/23300
128
+ [ inv ] : https://github.com/rust-lang/rust/pull/23938
129
+ [ ios ] : https://github.com/rust-lang/rust/pull/24133
130
+ [ lex ] : https://github.com/rust-lang/rfcs/blob/master/text/0879-small-base-lexing.md
131
+ [ lt ] : https://github.com/rust-lang/rust/pull/24057
132
+ [ meth ] : https://github.com/rust-lang/rust/pull/24056
133
+ [ pat ] : https://github.com/rust-lang/rfcs/blob/master/text/0528-string-patterns.md
134
+ [ po ] : https://github.com/rust-lang/rust/pull/24270
135
+ [ sf ] : https://github.com/rust-lang/rust/pull/24517
136
+ [ slp ] : https://github.com/rust-lang/rust/pull/23949
137
+ [ spl ] : https://github.com/rust-lang/rfcs/blob/master/text/0979-align-splitn-with-other-languages.md
138
+ [ sw ] : https://github.com/rust-lang/rfcs/blob/master/text/1054-str-words.md
139
+ [ th ] : https://github.com/rust-lang/rfcs/blob/master/text/0909-move-thread-local-to-std-thread.md
77
140
[ send-rfc ] : https://github.com/rust-lang/rfcs/blob/master/text/0458-send-improvements.md
78
141
[ scoped ] : http://static.rust-lang.org/doc/master/std/thread/fn.scoped.html
79
142
[ moar-ufcs ] : https://github.com/rust-lang/rust/pull/22172
@@ -97,6 +160,7 @@ Version 1.0.0-beta (April 2015)
97
160
[ copy-clone ] : https://github.com/rust-lang/rust/pull/23860
98
161
[ path-normalize ] : https://github.com/rust-lang/rust/pull/23229
99
162
163
+
100
164
Version 1.0.0-alpha.2 (February 2015)
101
165
-------------------------------------
102
166
0 commit comments