summaryrefslogtreecommitdiffstats
path: root/RELEASES.md
diff options
context:
space:
mode:
authorAaron Power <theaaronepower@gmail.com>2018-05-01 13:49:31 +0100
committerAaron Power <theaaronepower@gmail.com>2018-05-01 13:49:31 +0100
commit4b444f5b2393d23e980ea0042f976e01c752cfc0 (patch)
tree3bbcf7cd9df26f1890fe8d203141c79fca635fc1 /RELEASES.md
parentAuto merge of #49724 - kennytm:range-inc-start-end-methods, r=Kimundi (diff)
downloadgrust-4b444f5b2393d23e980ea0042f976e01c752cfc0.tar.gz
grust-4b444f5b2393d23e980ea0042f976e01c752cfc0.tar.bz2
grust-4b444f5b2393d23e980ea0042f976e01c752cfc0.tar.xz
Updated RELEASES.md for 1.26.0
Diffstat (limited to 'RELEASES.md')
-rw-r--r--RELEASES.md208
1 files changed, 208 insertions, 0 deletions
diff --git a/RELEASES.md b/RELEASES.md
index 39cef1e2a5..32c83c0d64 100644
--- a/RELEASES.md
+++ b/RELEASES.md
@@ -1,3 +1,211 @@
1Version 1.26.0 (2018-05-10)
2==========================
3
4Language
5--------
6- [Closures now implement `Copy` and/or `Clone` if all captured variables
7 implement either or both traits.][49299]
8- [The inclusive range syntax e.g. `for x in 0..=10` is now stable.][47813]
9- [Stablise `'_`. The underscore lifetime can be used anywhere where a
10 lifetime can be elided.][49458]
11- [`impl Trait` is now stable allowing you to have abstract
12 return types.][49255] e.g. `fn foo() -> impl Iterator<Item=u8>` or
13 `fn open(path: impl AsRef<Path>)`.
14- [Pattern matching will now automatically apply dereferences.][49394]
15- [128-bit integers in the form of `u128` and `i128` are now stable.][49101]
16- [`main` can now return `Result<(), E: Debug>`][49162] in addition to `()`.
17- [Fixed entry slice patterns are now stable.][48516] e.g.
18 ```rust
19 let points = [1, 2, 3, 4];
20 match points {
21 [1, 2, 3, 4] => println!("All points were sequential."),
22 _ => println!("Not all points were sequential."),
23 }
24 ```
25
26
27Compiler
28--------
29- [LLD is now used as the default linker for `wasm32-unknown-unknown`.][48125]
30- [Fixed exponential projection complexity on nested types.][48296]
31 This can provide up to a ~12% reduction in compile times for certain crates.
32- [Added the `--remap-path-prefix` option to rustc.][48359] Allowing you
33 to remap path prefixes outputted by the compiler.
34- [Added `powerpc-unknown-netbsd` target.][48281]
35
36Libraries
37---------
38- [Implemented `From<u16> for usize` & `From<{u8, i16}> for isize`.][49305]
39- [Added hexadecimal formatting for integers with fmt::Debug][48978]
40 e.g. `assert!(format!("{:02x?}", b"Foo\0") == "[46, 6f, 6f, 00]")`
41- [Implemented `Default, Hash` for `cmp::Reverse`.][48628]
42- [Optimized `str::repeat` being 8x faster in large cases.][48657]
43- [`ascii::escape_default` is now available in libcore.][48735]
44- [Implemented `FromStr` for `PathBuf`][48292]
45- [Trailing commas are now supported in std and core macros.][48056]
46- [Implemented `Copy, Clone` for `cmp::Reverse`][47379]
47- [Implemented `Clone` for `char::{ToLowercase, ToUppercase}`.][48629]
48
49Stabilized APIs
50---------------
51- [`*const T::add`]
52- [`*const T::copy_to_nonoverlapping`]
53- [`*const T::copy_to`]
54- [`*const T::read_unaligned`]
55- [`*const T::read_volatile`]
56- [`*const T::read`]
57- [`*const T::sub`]
58- [`*const T::wrapping_add`]
59- [`*const T::wrapping_sub`]
60- [`*mut T::add`]
61- [`*mut T::copy_to_nonoverlapping`]
62- [`*mut T::copy_to`]
63- [`*mut T::read_unaligned`]
64- [`*mut T::read_volatile`]
65- [`*mut T::read`]
66- [`*mut T::replace`]
67- [`*mut T::sub`]
68- [`*mut T::swap`]
69- [`*mut T::wrapping_add`]
70- [`*mut T::wrapping_sub`]
71- [`*mut T::write_bytes`]
72- [`*mut T::write_unaligned`]
73- [`*mut T::write_volatile`]
74- [`*mut T::write`]
75- [`Box::leak`]
76- [`FromUtf8Error::as_bytes`]
77- [`LocalKey::try_with`]
78- [`Option::cloned`]
79- [`btree_map::Entry::and_modify`]
80- [`convert::TryFrom`]
81- [`convert::TryInto`]
82- [`fs::read_to_string`]
83- [`fs::read`]
84- [`fs::write`]
85- [`hash_map::Entry::and_modify`]
86- [`iter::FusedIterator`]
87- [`ops::RangeInclusive`]
88- [`ops::RangeToInclusive`]
89- [`process::id`]
90- [`slice::rotate_left`]
91- [`slice::rotate_right`]
92- [`String::retain`]
93
94
95Cargo
96-----
97- [Cargo will now output path to custom commands when `-v` is
98 passed with `--list`][cargo/5041]
99- [The Cargo binary version is now the same as the Rust version][cargo/5083]
100- [`Cargo.lock` files are now included in published crates.][cargo/5093]
101
102Misc
103----
104- [The second edition of "The Rust Programming Language" book is now recommended
105 over the first.][48404]
106
107Compatibility Notes
108-------------------
109
110- [aliasing a `Fn` trait as `dyn` no longer works.][48481] E.g. the following
111 syntax is now invalid.
112 ```
113 use std::ops::Fn as dyn;
114 fn g(_: Box<dyn(std::fmt::Debug)>) {}
115 ```
116- [The result of dereferences are no longer promoted to `'static`.][47408]
117 e.g.
118 ```rust
119 fn main() {
120 const PAIR: &(i32, i32) = &(0, 1);
121 let _reversed_pair: &'static _ = &(PAIR.1, PAIR.0); // Doesn't work
122 }
123 ```
124- [Removed the deprecated unstable `SipHasher{13,24}` from documentation.][49108]
125- [Deprecate `AsciiExt` trait in favor of inherent methods.][49109]
126- [`".e0"` will now no longer parse as `0.0` and will instead cause
127 an error.][48235]
128- [Removed hoedown from rustdoc.][48274]
129
130[47379]: https://github.com/rust-lang/rust/pull/47379
131[47408]: https://github.com/rust-lang/rust/pull/47408
132[47813]: https://github.com/rust-lang/rust/pull/47813
133[48056]: https://github.com/rust-lang/rust/pull/48056
134[48125]: https://github.com/rust-lang/rust/pull/48125
135[48166]: https://github.com/rust-lang/rust/pull/48166
136[48235]: https://github.com/rust-lang/rust/pull/48235
137[48274]: https://github.com/rust-lang/rust/pull/48274
138[48281]: https://github.com/rust-lang/rust/pull/48281
139[48292]: https://github.com/rust-lang/rust/pull/48292
140[48296]: https://github.com/rust-lang/rust/pull/48296
141[48359]: https://github.com/rust-lang/rust/pull/48359
142[48404]: https://github.com/rust-lang/rust/pull/48404
143[48481]: https://github.com/rust-lang/rust/pull/48481
144[48516]: https://github.com/rust-lang/rust/pull/48516
145[48628]: https://github.com/rust-lang/rust/pull/48628
146[48629]: https://github.com/rust-lang/rust/pull/48629
147[48657]: https://github.com/rust-lang/rust/pull/48657
148[48735]: https://github.com/rust-lang/rust/pull/48735
149[48978]: https://github.com/rust-lang/rust/pull/48978
150[49101]: https://github.com/rust-lang/rust/pull/49101
151[49108]: https://github.com/rust-lang/rust/pull/49108
152[49109]: https://github.com/rust-lang/rust/pull/49109
153[49121]: https://github.com/rust-lang/rust/pull/49121
154[49162]: https://github.com/rust-lang/rust/pull/49162
155[49184]: https://github.com/rust-lang/rust/pull/49184
156[49234]: https://github.com/rust-lang/rust/pull/49234
157[49255]: https://github.com/rust-lang/rust/pull/49255
158[49299]: https://github.com/rust-lang/rust/pull/49299
159[49305]: https://github.com/rust-lang/rust/pull/49305
160[49394]: https://github.com/rust-lang/rust/pull/49394
161[49458]: https://github.com/rust-lang/rust/pull/49458
162[`*const T::add`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.add
163[`*const T::copy_to_nonoverlapping`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.copy_to_nonoverlapping
164[`*const T::copy_to`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.copy_to
165[`*const T::read_unaligned`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.read_unaligned
166[`*const T::read_volatile`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.read_volatile
167[`*const T::read`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.read
168[`*const T::sub`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.sub
169[`*const T::wrapping_add`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.wrapping_add
170[`*const T::wrapping_sub`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.wrapping_sub
171[`*mut T::add`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.add-1
172[`*mut T::copy_to_nonoverlapping`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.copy_to_nonoverlapping-1
173[`*mut T::copy_to`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.copy_to-1
174[`*mut T::read_unaligned`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.read_unaligned-1
175[`*mut T::read_volatile`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.read_volatile-1
176[`*mut T::read`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.read-1
177[`*mut T::replace`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.replace
178[`*mut T::sub`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.sub-1
179[`*mut T::swap`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.swap
180[`*mut T::wrapping_add`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.wrapping_add-1
181[`*mut T::wrapping_sub`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.wrapping_sub-1
182[`*mut T::write_bytes`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.write_bytes
183[`*mut T::write_unaligned`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.write_unaligned
184[`*mut T::write_volatile`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.write_volatile
185[`*mut T::write`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.write
186[`Box::leak`]: https://doc.rust-lang.org/std/boxed/struct.Box.html#method.leak
187[`FromUtf8Error::as_bytes`]: https://doc.rust-lang.org/std/string/struct.FromUtf8Error.html#method.as_bytes
188[`LocalKey::try_with`]: https://doc.rust-lang.org/std/thread/struct.LocalKey.html#method.try_with
189[`Option::cloned`]: https://doc.rust-lang.org/std/option/enum.Option.html#method.cloned
190[`btree_map::Entry::and_modify`]: https://doc.rust-lang.org/std/collections/btree_map/enum.Entry.html#method.and_modify
191[`convert::TryFrom`]: https://doc.rust-lang.org/std/convert/trait.TryFrom.html
192[`convert::TryInto`]: https://doc.rust-lang.org/std/convert/trait.TryInto.html
193[`fs::read_to_string`]: https://doc.rust-lang.org/std/fs/fn.read_to_string.html
194[`fs::read`]: https://doc.rust-lang.org/std/fs/fn.read.html
195[`fs::write`]: https://doc.rust-lang.org/std/fs/fn.write.html
196[`hash_map::Entry::and_modify`]: https://doc.rust-lang.org/std/collections/hash_map/enum.Entry.html#method.and_modify
197[`iter::FusedIterator`]: https://doc.rust-lang.org/std/iter/trait.FusedIterator.html
198[`ops::RangeInclusive`]: https://doc.rust-lang.org/std/ops/struct.RangeInclusive.html
199[`ops::RangeToInclusive`]: https://doc.rust-lang.org/std/ops/struct.RangeToInclusive.html
200[`process::id`]: https://doc.rust-lang.org/std/process/fn.id.html
201[`slice::rotate_left`]: https://doc.rust-lang.org/std/primitive.slice.html#method.rotate_left
202[`slice::rotate_right`]: https://doc.rust-lang.org/std/primitive.slice.html#method.rotate_right
203[`String::retain`]: https://doc.rust-lang.org/std/string/struct.String.html#method.retain
204[cargo/5041]: https://github.com/rust-lang/cargo/pull/5041
205[cargo/5083]: https://github.com/rust-lang/cargo/pull/5083
206[cargo/5093]: https://github.com/rust-lang/cargo/pull/5093
207
208
1Version 1.25.0 (2018-03-29) 209Version 1.25.0 (2018-03-29)
2========================== 210==========================
3 211