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
+
4
14
Libraries
5
15
---------
6
16
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 ` ]
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 ` .
63
71
* [ Validating UTF-8 is faster by a factor of between 7 and 14x for
64
72
ASCII input] [ 1.7utf8 ] . This means that creating ` String ` s and ` str ` s
65
73
from bytes is faster.
66
74
* [ The performance of ` LineWriter ` (and thus ` io::stdout ` ) was
67
75
improved by using ` memchr ` to search for newlines] [ 1.7m ] .
68
76
* [ ` f32::to_degrees ` and ` f32::to_radians ` are stable] [ 1.7f ] . The
69
77
` f64 ` variants were stabilized previously.
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 ] .
78
+ * [ ` BTreeMap ` was rewritten to use less memory improve performance of
79
+ insertion and iteration, the latter by as much as 5x` ] [ 1.7bm ] .
72
80
* [ ` BTreeSet ` and its iterators, ` Iter ` , ` IntoIter ` , and ` Range ` are
73
81
covariant over their contained type] [ 1.7bt ] .
74
82
* [ ` LinkedList ` and its iterators, ` Iter ` and ` IntoIter ` are covariant
@@ -81,6 +89,9 @@ Libraries
81
89
Misc
82
90
----
83
91
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.
84
95
* [ When running tests with ` --test ` , rustdoc will pass ` --cfg `
85
96
arguments to the compiler] [ 1.7dt ] .
86
97
* [ The compiler is built with RPATH information by default] [ 1.7rpa ] .
@@ -102,12 +113,6 @@ Cargo
102
113
Compatibility Notes
103
114
-------------------
104
115
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.
111
116
* [ Several bugs in the compiler's visibility calculations were
112
117
fixed] [ 1.7v ] . Since this was found to break significant amounts of
113
118
code, the new errors will be emitted as warnings for several release
@@ -130,6 +135,7 @@ Compatibility Notes
130
135
[ 1.7dta ] : https://github.com/rust-lang/rust/pull/30394
131
136
[ 1.7f ] : https://github.com/rust-lang/rust/pull/30672
132
137
[ 1.7h ] : https://github.com/rust-lang/rust/pull/30818
138
+ [ 1.7j ] : https://github.com/rust-lang/rust/pull/30711
133
139
[ 1.7ll ] : https://github.com/rust-lang/rust/pull/30663
134
140
[ 1.7m ] : https://github.com/rust-lang/rust/pull/30381
135
141
[ 1.7p ] : https://github.com/rust-lang/rust/pull/30681
@@ -140,15 +146,11 @@ Compatibility Notes
140
146
[ 1.7utf8 ] : https://github.com/rust-lang/rust/pull/30740
141
147
[ 1.7v ] : https://github.com/rust-lang/rust/pull/29973
142
148
[ RFC 1214 ] : https://github.com/rust-lang/rfcs/blob/master/text/1214-projections-lifetimes-and-wf.md
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
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
145
151
[ `CString::into_bytes_with_nul` ] : http://doc.rust-lang.org/nightly/std/ffi/struct.CString.html#method.into_bytes_with_nul
146
152
[ `CString::into_bytes` ] : http://doc.rust-lang.org/nightly/std/ffi/struct.CString.html#method.into_bytes
147
153
[ `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
152
154
[ `IntoStringError::into_cstring` ] : http://doc.rust-lang.org/nightly/std/ffi/struct.IntoStringError.html#method.into_cstring
153
155
[ `IntoStringError::utf8_error` ] : http://doc.rust-lang.org/nightly/std/ffi/struct.IntoStringError.html#method.utf8_error
154
156
[ `Ipv4Addr::is_broadcast` ] : http://doc.rust-lang.org/nightly/std/net/struct.Ipv4Addr.html#method.is_broadcast
@@ -161,12 +163,10 @@ Compatibility Notes
161
163
[ `Ipv6Addr::is_multicast` ] : http://doc.rust-lang.org/nightly/std/net/struct.Ipv6Addr.html#method.is_multicast
162
164
[ `Ipv6Addr::is_unspecified` ] : http://doc.rust-lang.org/nightly/std/net/struct.Ipv6Addr.html#method.is_unspecified
163
165
[ `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
165
166
[ `String::as_mut_str` ] : http://doc.rust-lang.org/nightly/std/string/struct.String.html#method.as_mut_str
166
167
[ `String::as_str` ] : http://doc.rust-lang.org/nightly/std/string/struct.String.html#method.as_str
167
168
[ `Vec::as_mut_slice` ] : http://doc.rust-lang.org/nightly/std/vec/struct.Vec.html#method.as_mut_slice
168
169
[ `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,13 +182,7 @@ 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
190
185
[ `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
192
186
[ `u32::checked_shl` ] : http://doc.rust-lang.org/nightly/std/primitive.u32.html#method.checked_shl
193
187
[ `u32::overflowing_add` ] : http://doc.rust-lang.org/nightly/std/primitive.u32.html#method.overflowing_add
194
188
[ `u32::overflowing_div` ] : http://doc.rust-lang.org/nightly/std/primitive.u32.html#method.overflowing_div
0 commit comments