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
77140[ send-rfc ] : https://github.com/rust-lang/rfcs/blob/master/text/0458-send-improvements.md
78141[ scoped ] : http://static.rust-lang.org/doc/master/std/thread/fn.scoped.html
79142[ moar-ufcs ] : https://github.com/rust-lang/rust/pull/22172
@@ -97,6 +160,7 @@ Version 1.0.0-beta (April 2015)
97160[ copy-clone ] : https://github.com/rust-lang/rust/pull/23860
98161[ path-normalize ] : https://github.com/rust-lang/rust/pull/23229
99162
163+
100164Version 1.0.0-alpha.2 (February 2015)
101165-------------------------------------
102166
0 commit comments