1
+ Version 1.27.0 (2018-06-21)
2
+ ==========================
3
+
4
+ Language
5
+ --------
6
+ - [Removed 'proc' from the reserved keywords list.][49699] This allows `proc` to
7
+ be used as an identifer.
8
+ - [The dyn syntax is now available.][49968] This syntax is equivalent to the
9
+ bare `Trait` syntax, and should make it clearer when being used in tandem with
10
+ `impl Trait`. Since it is equivalent to the following syntax:
11
+ `&Trait == &dyn Trait`, `&mut Trait == &mut dyn Trait`, and
12
+ `Box<Trait> == Box<dyn Trait>`.
13
+ - [Attributes on generic parameters such as types and lifetimes are
14
+ now stable.][48851] e.g.
15
+ `fn foo<#[lifetime_attr] 'a, #[type_attr] T: 'a>() {}`
16
+ - [The `#[must_use]` attribute can now also be used on functions as well as
17
+ types.][48925] It provides a lint that by default warns users when the
18
+ value returned by a function has not been used.
19
+
20
+ Compiler
21
+ --------
22
+ - [Added the `armv5te-unknown-linux-musl` target.][50423]
23
+
24
+ Libraries
25
+ ---------
26
+ - [SIMD (Single Instruction Multiple Data) on x86/x86_64 is now stable.][49664]
27
+ This includes [`arch::x86`] & [`arch::x86_64`] modules which contain
28
+ SIMD intrinsics, a new macro called `is_x86_feature_detected!`, the
29
+ `#[target_feature(enable="")]` attribute, and adding `target_feature = ""` to
30
+ the `cfg` attribute.
31
+ - [A lot of methods for `[u8]`, `f32`, and `f64` previously only available in
32
+ std are now available in core.][49896]
33
+ - [The generic `Rhs` type parameter on `ops::{Shl, ShlAssign, Shr}` now defaults
34
+ to `Self`.][49630]
35
+ - [`std::str::replace` now has the `#[must_use]` attribute][50177] to clarify
36
+ that the operation isn't done in place.
37
+ - [`Clone::clone`, `Iterator::collect`, and `ToOwned::to_owned` now have
38
+ the `#[must_use]` attribute][49533] to warn about unused potentially
39
+ expensive allocations.
40
+
41
+ Stabilized APIs
42
+ ---------------
43
+ - [`DoubleEndedIterator::rfind`]
44
+ - [`DoubleEndedIterator::rfold`]
45
+ - [`DoubleEndedIterator::try_rfold`]
46
+ - [`Duration::from_micros`]
47
+ - [`Duration::from_nanos`]
48
+ - [`Duration::subsec_micros`]
49
+ - [`Duration::subsec_millis`]
50
+ - [`HashMap::remove_entry`]
51
+ - [`Iterator::try_fold`]
52
+ - [`Iterator::try_for_each`]
53
+ - [`NonNull::cast`]
54
+ - [`Option::filter`]
55
+ - [`String::replace_range`]
56
+ - [`Take::set_limit`]
57
+ - [`hint::unreachable_unchecked`]
58
+ - [`os::unix::process::parent_id`]
59
+ - [`process::id`]
60
+ - [`ptr::swap_nonoverlapping`]
61
+ - [`slice::rsplit_mut`]
62
+ - [`slice::rsplit`]
63
+ - [`slice::swap_with_slice`]
64
+
65
+ Cargo
66
+ -----
67
+ - [`cargo-metadata` now includes `authors`, `categories`, `keywords`,
68
+ `readme`, and `repository` fields.][cargo/5386]
69
+ - [Added the `--target-dir` optional argument.][cargo/5393] This allows you to specify
70
+ a different directory than `target` for placing compilation artifacts.
71
+ - [Cargo will be adding automatic target inference for binaries, benchmarks,
72
+ examples, and tests in the Rust 2018 edition.][cargo/5335] If your project specifies
73
+ specific targets e.g. using `[[bin]]` and have other binaries in locations
74
+ where cargo would infer a binary, Cargo will produce a warning. You can
75
+ disable this feature ahead of time by setting any of the following `autobins`,
76
+ `autobenches`, `autoexamples`, `autotests` to false.
77
+ - [Cargo will now cache compiler information.][cargo/5359] This can be disabled by
78
+ setting `CARGO_CACHE_RUSTC_INFO=0` in your environment.
79
+
80
+ Misc
81
+ ----
82
+ - [Added “The Rustc book” into the official documentation.][49707]
83
+ [“The Rustc book”] documents and teaches how to use the rustc compiler.
84
+ - [All books available on `doc.rust-lang.org` are now searchable.][49623]
85
+
86
+ Compatibility Notes
87
+ -------------------
88
+ - [Calling a `CharExt` or `StrExt` method directly on core will no longer
89
+ work.][49896] e.g. `::core::prelude::v1::StrExt::is_empty("")` will not
90
+ compile, `"".is_empty()` will still compile.
91
+ - [`Debug` output on `atomic::{AtomicBool, AtomicIsize, AtomicPtr, AtomicUsize}`
92
+ will only print the inner type.][48553] e.g.
93
+ `print!("{:?}", AtomicBool::new(true))` will print `true`
94
+ not `AtomicBool(true)`.
95
+ - [`?` can no longer be a separator in macros.][49719] e.g. the following will
96
+ no longer compile.
97
+ ```rust
98
+ macro_rules! barplus {
99
+ ($(a)?+) => {}
100
+ }
101
+ ```
102
+ - [The maximum number for `repr(align(N))` is now 2²⁹.][50378] Previously you
103
+ could enter higher numbers but they were not supported by LLVM. Up to 512MB
104
+ alignment should cover all use cases.
105
+
106
+ [48553]: https://github.com/rust-lang/rust/pull/48553/
107
+ [48851]: https://github.com/rust-lang/rust/pull/48851/
108
+ [48925]: https://github.com/rust-lang/rust/pull/48925/
109
+ [49533]: https://github.com/rust-lang/rust/pull/49533/
110
+ [49623]: https://github.com/rust-lang/rust/pull/49623/
111
+ [49630]: https://github.com/rust-lang/rust/pull/49630/
112
+ [49664]: https://github.com/rust-lang/rust/pull/49664/
113
+ [49699]: https://github.com/rust-lang/rust/pull/49699/
114
+ [49707]: https://github.com/rust-lang/rust/pull/49707/
115
+ [49719]: https://github.com/rust-lang/rust/pull/49719/
116
+ [49896]: https://github.com/rust-lang/rust/pull/49896/
117
+ [49968]: https://github.com/rust-lang/rust/pull/49968/
118
+ [50177]: https://github.com/rust-lang/rust/pull/50177/
119
+ [50378]: https://github.com/rust-lang/rust/pull/50378/
120
+ [50398]: https://github.com/rust-lang/rust/pull/50398/
121
+ [50423]: https://github.com/rust-lang/rust/pull/50423/
122
+ [cargo/5203]: https://github.com/rust-lang/cargo/pull/5203/
123
+ [cargo/5335]: https://github.com/rust-lang/cargo/pull/5335/
124
+ [cargo/5359]: https://github.com/rust-lang/cargo/pull/5359/
125
+ [cargo/5386]: https://github.com/rust-lang/cargo/pull/5386/
126
+ [cargo/5393]: https://github.com/rust-lang/cargo/pull/5393/
127
+ [`DoubleEndedIterator::rfind`]: https://doc.rust-lang.org/std/iter/trait.DoubleEndedIterator.html#method.rfind
128
+ [`DoubleEndedIterator::rfold`]: https://doc.rust-lang.org/std/iter/trait.DoubleEndedIterator.html#method.rfold
129
+ [`DoubleEndedIterator::try_rfold`]: https://doc.rust-lang.org/std/iter/trait.DoubleEndedIterator.html#method.try_rfold
130
+ [`Duration::from_micros`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.from_micros
131
+ [`Duration::from_nanos`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.from_nanos
132
+ [`Duration::subsec_micros`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.subsec_micros
133
+ [`Duration::subsec_millis`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.subsec_millis
134
+ [`HashMap::remove_entry`]: https://doc.rust-lang.org/std/collections/struct.HashMap.html#method.remove_entry
135
+ [`Iterator::try_fold`]: https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.try_fold
136
+ [`Iterator::try_for_each`]: https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.try_for_each
137
+ [`NonNull::cast`]: https://doc.rust-lang.org/std/ptr/struct.NonNull.html#method.cast
138
+ [`Option::filter`]: https://doc.rust-lang.org/std/option/enum.Option.html#method.filter
139
+ [`String::replace_range`]: https://doc.rust-lang.org/std/string/struct.String.html#method.replace_range
140
+ [`Take::set_limit`]: https://doc.rust-lang.org/std/io/struct.Take.html#method.set_limit
141
+ [`slice::rsplit_mut`]: https://doc.rust-lang.org/std/primitive.slice.html#method.rsplit_mut
142
+ [`slice::rsplit`]: https://doc.rust-lang.org/std/primitive.slice.html#method.rsplit
143
+ [`slice::swap_with_slice`]: https://doc.rust-lang.org/std/primitive.slice.html#method.swap_with_slice
144
+ [`arch::x86_64`]: https://doc.rust-lang.org/std/arch/x86_64/index.html
145
+ [`arch::x86`]: https://doc.rust-lang.org/std/arch/x86/index.html
146
+ [`fs::read`]:
147
+ [`fs::write`]:
148
+ [`hint::unreachable_unchecked`]: https://doc.rust-lang.org/std/hint/fn.unreachable_unchecked.html
149
+ [`os::unix::process::parent_id`]: https://doc.rust-lang.org/std/os/unix/process/fn.parent_id.html
150
+ [`ptr::swap_nonoverlapping`]: https://doc.rust-lang.org/std/ptr/fn.swap_nonoverlapping.html
151
+ [`process::id`]: https://doc.rust-lang.org/std/process/fn.id.html
152
+ [“The Rustc book”]: https://doc.rust-lang.org/rustc
153
+
154
+
1
155
Version 1.26.2 (2018-06-05)
2
156
==========================
3
157
@@ -8,6 +162,7 @@ Compatibility Notes
8
162
9
163
[51117]: https://github.com/rust-lang/rust/issues/51117
10
164
165
+
11
166
Version 1.26.1 (2018-05-29)
12
167
==========================
13
168
17
172
- [RLS now works on Windows][50646]
18
173
- [Rustfmt stopped badly formatting text in some cases][rustfmt/2695]
19
174
175
+
20
176
Compatibility Notes
21
177
--------
22
178
0 commit comments