1
1
Version 1.7.0 (2016-03-03)
2
2
==========================
3
3
4
- Language
5
- --------
6
-
7
- * Soundness fixes to the interactions between associated types and
8
- lifetimes, specified in [ RFC 1214] , [ now generate errors] [ 1.7sf ] for
9
- code that violates the new rules. This is a significant change that
10
- is known to break existing code, so it has emitted warnings for the
11
- new error cases since 1.4 to give crate authors time to adapt. The
12
- details of what is changing are subtle; read the RFC for more.
13
-
14
4
Libraries
15
5
---------
16
6
17
- * Stabilized APIs:
18
- [ ` Path::strip_prefix ` ] [ ] (renamed from relative_from),
19
- [ ` path::StripPrefixError ` ] [ ] (new error type returned from strip_prefix),
20
- [ ` Ipv4Addr::is_loopback ` ] ,
21
- [ ` Ipv4Addr::is_private ` ] ,
22
- [ ` Ipv4Addr::is_link_local ` ] ,
23
- [ ` Ipv4Addr::is_multicast ` ] ,
24
- [ ` Ipv4Addr::is_broadcast ` ] ,
25
- [ ` Ipv4Addr::is_documentation ` ] ,
26
- [ ` Ipv6Addr::is_unspecified ` ] ,
27
- [ ` Ipv6Addr::is_loopback ` ] ,
28
- [ ` Ipv6Addr::is_multicast ` ] ,
29
- [ ` Vec::as_slice ` ] ,
30
- [ ` Vec::as_mut_slice ` ] ,
31
- [ ` String::as_str ` ] ,
32
- [ ` String::as_mut_str ` ] ,
33
- ` <[T]>:: ` [ ` clone_from_slice ` ] , which now requires the two slices to
34
- be the same length
35
- ` <[T]>:: ` [ ` sort_by_key ` ] ,
36
- [ ` i32::checked_rem ` ] ,
37
- [ ` i32::checked_neg ` ] ,
38
- [ ` i32::checked_shl ` ] ,
39
- [ ` i32::checked_shr ` ] ,
40
- [ ` i32::saturating_mul ` ] ,
41
- [ ` i32::overflowing_add ` ] ,
42
- [ ` i32::overflowing_sub ` ] ,
43
- [ ` i32::overflowing_mul ` ] ,
44
- [ ` i32::overflowing_div ` ] ,
45
- [ ` i32::overflowing_rem ` ] ,
46
- [ ` i32::overflowing_neg ` ] ,
47
- [ ` i32::overflowing_shl ` ] ,
48
- [ ` i32::overflowing_shr ` ] ,
49
- [ ` u32::checked_rem ` ] ,
50
- [ ` u32::checked_neg ` ] ,
51
- [ ` u32::checked_shl ` ] ,
52
- [ ` u32::checked_shl ` ] ,
53
- [ ` u32::saturating_mul ` ] ,
54
- [ ` u32::overflowing_add ` ] ,
55
- [ ` u32::overflowing_sub ` ] ,
56
- [ ` u32::overflowing_mul ` ] ,
57
- [ ` u32::overflowing_div ` ] ,
58
- [ ` u32::overflowing_rem ` ] ,
59
- [ ` u32::overflowing_neg ` ] ,
60
- [ ` u32::overflowing_shl ` ] ,
61
- [ ` u32::overflowing_shr ` ] ,
62
- checked, saturated, and overflowing operations for other primitive types,
63
- [ ` ffi::IntoStringError ` ] ,
64
- [ ` CString::into_string ` ] ,
65
- [ ` CString::into_bytes ` ] ,
66
- [ ` CString::into_bytes_with_nul ` ] ,
67
- ` From<CString> for Vec<u8> ` ,
68
- [ ` IntoStringError::into_cstring ` ] ,
69
- [ ` IntoStringError::utf8_error ` ] ,
70
- ` Error for IntoStringError ` .
7
+ * Stabilized APIs
8
+ * ` Path `
9
+ * [ ` Path::strip_prefix ` ] [ ] (renamed from relative_from)
10
+ * [ ` path::StripPrefixError ` ] [ ] (new error type returned from strip_prefix)
11
+ * ` Ipv4Addr `
12
+ * [ ` Ipv4Addr::is_loopback ` ]
13
+ * [ ` Ipv4Addr::is_private ` ]
14
+ * [ ` Ipv4Addr::is_link_local ` ]
15
+ * [ ` Ipv4Addr::is_multicast ` ]
16
+ * [ ` Ipv4Addr::is_broadcast ` ]
17
+ * [ ` Ipv4Addr::is_documentation ` ]
18
+ * ` Ipv6Addr `
19
+ * [ ` Ipv6Addr::is_unspecified ` ]
20
+ * [ ` Ipv6Addr::is_loopback ` ]
21
+ * [ ` Ipv6Addr::is_multicast ` ]
22
+ * ` Vec `
23
+ * [ ` Vec::as_slice ` ]
24
+ * [ ` Vec::as_mut_slice ` ]
25
+ * ` String `
26
+ * [ ` String::as_str ` ]
27
+ * [ ` String::as_mut_str ` ]
28
+ * Slices
29
+ * ` <[T]>:: ` [ ` clone_from_slice ` ] , which now requires the two slices to
30
+ be the same length
31
+ * ` <[T]>:: ` [ ` sort_by_key ` ]
32
+ * checked, saturated, and overflowing operations
33
+ * [ ` i32::checked_rem ` ] , [ ` i32::checked_neg ` ] , [ ` i32::checked_shl ` ] , [ ` i32::checked_shr ` ]
34
+ * [ ` i32::saturating_mul ` ]
35
+ * [ ` i32::overflowing_add ` ] , [ ` i32::overflowing_sub ` ] , [ ` i32::overflowing_mul ` ] , [ ` i32::overflowing_div ` ]
36
+ * [ ` i32::overflowing_rem ` ] , [ ` i32::overflowing_neg ` ] , [ ` i32::overflowing_shl ` ] , [ ` i32::overflowing_shr ` ]
37
+ * [ ` u32::checked_rem ` ] , [ ` u32::checked_neg ` ] , [ ` u32::checked_shl ` ] , [ ` u32::checked_shl ` ]
38
+ * [ ` u32::saturating_mul ` ]
39
+ * [ ` u32::overflowing_add ` ] , [ ` u32::overflowing_sub ` ] , [ ` u32::overflowing_mul ` ] , [ ` u32::overflowing_div ` ]
40
+ * [ ` u32::overflowing_rem ` ] , [ ` u32::overflowing_neg ` ] , [ ` u32::overflowing_shl ` ] , [ ` u32::overflowing_shr ` ]
41
+ * and checked, saturated, and overflowing operations for other primitive types
42
+ * FFI
43
+ * [ ` ffi::IntoStringError ` ]
44
+ * [ ` CString::into_string ` ]
45
+ * [ ` CString::into_bytes ` ]
46
+ * [ ` CString::into_bytes_with_nul ` ]
47
+ * ` From<CString> for Vec<u8> `
48
+ * ` IntoStringError `
49
+ * [ ` IntoStringError::into_cstring ` ]
50
+ * [ ` IntoStringError::utf8_error ` ]
51
+ * ` Error for IntoStringError `
52
+ * Hashing
53
+ * [ ` std::hash::BuildHasher ` ]
54
+ * [ ` BuildHasher::Hasher ` ]
55
+ * [ ` BuildHasher::build_hasher ` ]
56
+ * [ ` std::hash::BuildHasherDefault ` ]
57
+ * [ ` HashMap::with_hasher ` ]
58
+ * [ ` HashMap::with_capacity_and_hasher ` ]
59
+ * [ ` HashSet::with_hasher ` ]
60
+ * [ ` HashSet::with_capacity_and_hasher ` ]
61
+ * [ ` std::collections::hash_map::RandomState ` ]
62
+ * [ ` RandomState::new ` ]
71
63
* [ Validating UTF-8 is faster by a factor of between 7 and 14x for
72
64
ASCII input] [ 1.7utf8 ] . This means that creating ` String ` s and ` str ` s
73
65
from bytes is faster.
74
66
* [ The performance of ` LineWriter ` (and thus ` io::stdout ` ) was
75
67
improved by using ` memchr ` to search for newlines] [ 1.7m ] .
76
68
* [ ` f32::to_degrees ` and ` f32::to_radians ` are stable] [ 1.7f ] . The
77
69
` f64 ` variants were stabilized previously.
78
- * [ ` BTreeMap ` was rewritten to use less memory improve performance of
79
- insertion and iteration, the latter by as much as 5x` ] [ 1.7bm ] .
70
+ * [ ` BTreeMap ` was rewritten to use less memory and improve the performance
71
+ of insertion and iteration, the latter by as much as 5x] [ 1.7bm ] .
80
72
* [ ` BTreeSet ` and its iterators, ` Iter ` , ` IntoIter ` , and ` Range ` are
81
73
covariant over their contained type] [ 1.7bt ] .
82
74
* [ ` LinkedList ` and its iterators, ` Iter ` and ` IntoIter ` are covariant
@@ -89,16 +81,13 @@ Libraries
89
81
Misc
90
82
----
91
83
92
- * [ The ` --error-format=json ` flag to ` rustc ` causes it to emit errors
93
- in JSON format] [ 1.7j ] . This is an unstable flag and so also requires
94
- the ` -Z unstable-options ` flag.
95
84
* [ When running tests with ` --test ` , rustdoc will pass ` --cfg `
96
85
arguments to the compiler] [ 1.7dt ] .
97
- * [ The compiler is built with RPATH information by default] [ 1.7rp ] .
86
+ * [ The compiler is built with RPATH information by default] [ 1.7rpa ] .
98
87
This means that it will be possible to run ` rustc ` when installed in
99
88
unusual configurations without configuring the dynamic linker search
100
89
path explicitly.
101
- * [ ` rustc ` passes ` --enable-new-dtags ` to GNU ld] [ 1.7dt ] . This makes
90
+ * [ ` rustc ` passes ` --enable-new-dtags ` to GNU ld] [ 1.7dta ] . This makes
102
91
any RPATH entries (emitted with ` -C rpath ` ) * not* take precedence
103
92
over ` LD_LIBRARY_PATH ` .
104
93
@@ -113,6 +102,12 @@ Cargo
113
102
Compatibility Notes
114
103
-------------------
115
104
105
+ * Soundness fixes to the interactions between associated types and
106
+ lifetimes, specified in [ RFC 1214] , [ now generate errors] [ 1.7sf ] for
107
+ code that violates the new rules. This is a significant change that
108
+ is known to break existing code, so it has emitted warnings for the
109
+ new error cases since 1.4 to give crate authors time to adapt. The
110
+ details of what is changing are subtle; read the RFC for more.
116
111
* [ Several bugs in the compiler's visibility calculations were
117
112
fixed] [ 1.7v ] . Since this was found to break significant amounts of
118
113
code, the new errors will be emitted as warnings for several release
@@ -132,25 +127,28 @@ Compatibility Notes
132
127
[ 1.7cp ] : https://github.com/rust-lang/cargo/pull/2224
133
128
[ 1.7d ] : https://github.com/rust-lang/rust/pull/30724
134
129
[ 1.7dt ] : https://github.com/rust-lang/rust/pull/30372
135
- [ 1.7dt ] : https://github.com/rust-lang/rust/pull/30394
130
+ [ 1.7dta ] : https://github.com/rust-lang/rust/pull/30394
136
131
[ 1.7f ] : https://github.com/rust-lang/rust/pull/30672
137
132
[ 1.7h ] : https://github.com/rust-lang/rust/pull/30818
138
- [ 1.7j ] : https://github.com/rust-lang/rust/pull/30711
139
133
[ 1.7ll ] : https://github.com/rust-lang/rust/pull/30663
140
134
[ 1.7m ] : https://github.com/rust-lang/rust/pull/30381
141
135
[ 1.7p ] : https://github.com/rust-lang/rust/pull/30681
142
136
[ 1.7rp ] : https://github.com/rust-lang/rust/pull/29498
143
- [ 1.7rp ] : https://github.com/rust-lang/rust/pull/30353
137
+ [ 1.7rpa ] : https://github.com/rust-lang/rust/pull/30353
144
138
[ 1.7rr ] : https://github.com/rust-lang/cargo/pull/2279
145
139
[ 1.7sf ] : https://github.com/rust-lang/rust/pull/30389
146
140
[ 1.7utf8 ] : https://github.com/rust-lang/rust/pull/30740
147
141
[ 1.7v ] : https://github.com/rust-lang/rust/pull/29973
148
142
[ RFC 1214 ] : https://github.com/rust-lang/rfcs/blob/master/text/1214-projections-lifetimes-and-wf.md
149
- [ `clone_from_slice ` ] : http://doc.rust-lang.org/nightly/std/primitive.slice .html#method.clone_from_slice
150
- [ `sort_by_key ` ] : http://doc.rust-lang.org/nightly/std/primitive.slice .html#method.sort_by_key
143
+ [ `BuildHasher::Hasher ` ] : http://doc.rust-lang.org/nightly/std/hash/trait.Hasher .html
144
+ [ `BuildHasher::build_hasher ` ] : http://doc.rust-lang.org/nightly/std/hash/trait.BuildHasher .html#tymethod.build_hasher
151
145
[ `CString::into_bytes_with_nul` ] : http://doc.rust-lang.org/nightly/std/ffi/struct.CString.html#method.into_bytes_with_nul
152
146
[ `CString::into_bytes` ] : http://doc.rust-lang.org/nightly/std/ffi/struct.CString.html#method.into_bytes
153
147
[ `CString::into_string` ] : http://doc.rust-lang.org/nightly/std/ffi/struct.CString.html#method.into_string
148
+ [ `HashMap::with_capacity_and_hasher` ] : http://doc.rust-lang.org/nightly/std/collections/struct.HashMap.html#method.with_capacity_and_hasher
149
+ [ `HashMap::with_hasher` ] : http://doc.rust-lang.org/nightly/std/collections/struct.HashMap.html#method.with_hasher
150
+ [ `HashSet::with_capacity_and_hasher` ] : http://doc.rust-lang.org/nightly/std/collections/struct.HashSet.html#method.with_capacity_and_hasher
151
+ [ `HashSet::with_hasher` ] : http://doc.rust-lang.org/nightly/std/collections/struct.HashSet.html#method.with_hasher
154
152
[ `IntoStringError::into_cstring` ] : http://doc.rust-lang.org/nightly/std/ffi/struct.IntoStringError.html#method.into_cstring
155
153
[ `IntoStringError::utf8_error` ] : http://doc.rust-lang.org/nightly/std/ffi/struct.IntoStringError.html#method.utf8_error
156
154
[ `Ipv4Addr::is_broadcast` ] : http://doc.rust-lang.org/nightly/std/net/struct.Ipv4Addr.html#method.is_broadcast
@@ -163,10 +161,12 @@ Compatibility Notes
163
161
[ `Ipv6Addr::is_multicast` ] : http://doc.rust-lang.org/nightly/std/net/struct.Ipv6Addr.html#method.is_multicast
164
162
[ `Ipv6Addr::is_unspecified` ] : http://doc.rust-lang.org/nightly/std/net/struct.Ipv6Addr.html#method.is_unspecified
165
163
[ `Path::strip_prefix` ] : http://doc.rust-lang.org/nightly/std/path/struct.Path.html#method.strip_prefix
164
+ [ `RandomState::new` ] : http://doc.rust-lang.org/nightly/std/collections/hash_map/struct.RandomState.html#method.new
166
165
[ `String::as_mut_str` ] : http://doc.rust-lang.org/nightly/std/string/struct.String.html#method.as_mut_str
167
166
[ `String::as_str` ] : http://doc.rust-lang.org/nightly/std/string/struct.String.html#method.as_str
168
167
[ `Vec::as_mut_slice` ] : http://doc.rust-lang.org/nightly/std/vec/struct.Vec.html#method.as_mut_slice
169
168
[ `Vec::as_slice` ] : http://doc.rust-lang.org/nightly/std/vec/struct.Vec.html#method.as_slice
169
+ [ `clone_from_slice` ] : http://doc.rust-lang.org/nightly/std/primitive.slice.html#method.clone_from_slice
170
170
[ `ffi::IntoStringError` ] : http://doc.rust-lang.org/nightly/std/ffi/struct.IntoStringError.html
171
171
[ `i32::checked_neg` ] : http://doc.rust-lang.org/nightly/std/primitive.i32.html#method.checked_neg
172
172
[ `i32::checked_rem` ] : http://doc.rust-lang.org/nightly/std/primitive.i32.html#method.checked_rem
@@ -182,7 +182,13 @@ Compatibility Notes
182
182
[ `i32::overflowing_sub` ] : http://doc.rust-lang.org/nightly/std/primitive.i32.html#method.overflowing_sub
183
183
[ `i32::saturating_mul` ] : http://doc.rust-lang.org/nightly/std/primitive.i32.html#method.saturating_mul
184
184
[ `path::StripPrefixError` ] : http://doc.rust-lang.org/nightly/std/path/struct.StripPrefixError.html
185
+ [ `sort_by_key` ] : http://doc.rust-lang.org/nightly/std/primitive.slice.html#method.sort_by_key
186
+ [ `std::collections::hash_map::RandomState` ] : http://doc.rust-lang.org/nightly/std/collections/hash_map/struct.RandomState.html
187
+ [ `std::hash::BuildHasherDefault` ] : http://doc.rust-lang.org/nightly/std/hash/struct.BuildHasherDefault.html
188
+ [ `std::hash::BuildHasher` ] : http://doc.rust-lang.org/nightly/std/hash/trait.BuildHasher.html
189
+ [ `u32::checked_neg` ] : http://doc.rust-lang.org/nightly/std/primitive.u32.html#method.checked_neg
185
190
[ `u32::checked_rem` ] : http://doc.rust-lang.org/nightly/std/primitive.u32.html#method.checked_rem
191
+ [ `u32::checked_neg` ] : http://doc.rust-lang.org/nightly/std/primitive.u32.html#method.checked_neg
186
192
[ `u32::checked_shl` ] : http://doc.rust-lang.org/nightly/std/primitive.u32.html#method.checked_shl
187
193
[ `u32::overflowing_add` ] : http://doc.rust-lang.org/nightly/std/primitive.u32.html#method.overflowing_add
188
194
[ `u32::overflowing_div` ] : http://doc.rust-lang.org/nightly/std/primitive.u32.html#method.overflowing_div
0 commit comments