Skip to content

Commit 067c501

Browse files
Rollup merge of rust-lang#51722 - Aaronepower:master, r=Mark-Simulacrum
Updated RELEASES for 1.28.0 [Rendered](https://github.com/Aaronepower/rust/blob/master/RELEASES.md) r? @Mark-Simulacrum cc @rust-lang/release
2 parents 5b52591 + dab257f commit 067c501

File tree

1 file changed

+145
-2
lines changed

1 file changed

+145
-2
lines changed

RELEASES.md

+145-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,146 @@
1+
Version 1.28.0 (2018-08-02)
2+
===========================
3+
4+
Language
5+
--------
6+
- [The `#[repr(transparent)]` attribute is now stable.][51562] This attribute
7+
allows a Rust newtype wrapper (`struct NewType<T>(T);`) to be represented as
8+
the inner type across Foreign Function Interface (FFI) boundaries.
9+
- [The keywords `pure`, `sizeof`, `alignof`, and `offsetof` have been unreserved
10+
and can now be used as identifiers.][51196]
11+
- [The `GlobalAlloc` trait and `#[global_allocator]` attribute are now
12+
stable.][51241] This will allow users to specify a global allocator for
13+
their program.
14+
- [Unit test functions marked with the `#[test]` attribute can now return
15+
`Result<(), E: Debug>` in addition to `()`.][51298]
16+
- [The `lifetime` specifier for `macro_rules!` is now stable.][50385] This
17+
allows macros to easily target lifetimes.
18+
19+
Compiler
20+
--------
21+
- [The `s` and `z` optimisation levels are now stable.][50265] These optimisations
22+
prioritise making smaller binary sizes. `z` is the same as `s` with the
23+
exception that it does not vectorise loops, which typically results in an even
24+
smaller binary.
25+
- [The short error format is now stable.][49546] Specified with
26+
`--error-format=short` this option will provide a more compressed output of
27+
rust error messages.
28+
- [Added a lint warning when you have duplicated `macro_export`s.][50143]
29+
- [Reduced the number of allocations in the macro parser.][50855] This can
30+
improve compile times of macro heavy crates on average by 5%.
31+
32+
Libraries
33+
---------
34+
- [Implemented `Default` for `&mut str`.][51306]
35+
- [Implemented `From<bool>` for all integer and unsigned number types.][50554]
36+
- [Implemented `Extend` for `()`.][50234]
37+
- [The `Debug` implementation of `time::Duration` should now be more easily
38+
human readable.][50364] Previously a `Duration` of one second would printed as
39+
`Duration { secs: 1, nanos: 0 }` and will now be printed as `1s`.
40+
- [Implemented `From<&String>` for `Cow<str>`, `From<&Vec<T>>` for `Cow<[T]>`,
41+
`From<Cow<CStr>>` for `CString`, `From<CString>, From<CStr>, From<&CString>`
42+
for `Cow<CStr>`, `From<OsString>, From<OsStr>, From<&OsString>` for
43+
`Cow<OsStr>`, `From<&PathBuf>` for `Cow<Path>`, and `From<Cow<Path>>`
44+
for `PathBuf`.][50170]
45+
- [Implemented `Shl` and `Shr` for `Wrapping<u128>`
46+
and `Wrapping<i128>`.][50465]
47+
- [`DirEntry::metadata` now uses `fstatat` instead of `lstat` when
48+
possible.][51050] This can provide up to a 40% speed increase.
49+
- [Improved error messages when using `format!`.][50610]
50+
51+
Stabilized APIs
52+
---------------
53+
- [`Iterator::step_by`]
54+
- [`Path::ancestors`]
55+
- [`btree_map::Entry::or_default`]
56+
- [`fmt::Alignment`]
57+
- [`hash_map::Entry::or_default`]
58+
- [`iter::repeat_with`]
59+
- [`num::NonZeroUsize`]
60+
- [`num::NonZeroU128`]
61+
- [`num::NonZeroU16`]
62+
- [`num::NonZeroU32`]
63+
- [`num::NonZeroU64`]
64+
- [`num::NonZeroU8`]
65+
- [`ops::RangeBounds`]
66+
- [`slice::SliceIndex`]
67+
- [`slice::from_mut`]
68+
- [`slice::from_ref`]
69+
- [`{Any + Send + Sync}::downcast_mut`]
70+
- [`{Any + Send + Sync}::downcast_ref`]
71+
- [`{Any + Send + Sync}::is`]
72+
73+
Cargo
74+
-----
75+
- [Cargo will now no longer allow you to publish crates with build scripts that
76+
modify the `src` directory.][cargo/5584] The `src` directory in a crate should be
77+
considered to be immutable.
78+
79+
Misc
80+
----
81+
- [The `suggestion_applicability` field in `rustc`'s json output is now
82+
stable.][50486] This will allow dev tools to check whether a code suggestion
83+
would apply to them.
84+
85+
Compatibility Notes
86+
-------------------
87+
- [Rust will no longer consider trait objects with duplicated constraints to
88+
have implementations.][51276] For example the below code will now fail
89+
to compile.
90+
```rust
91+
trait Trait {}
92+
93+
impl Trait + Send {
94+
fn test(&self) { println!("one"); } //~ ERROR duplicate definitions with name `test`
95+
}
96+
97+
impl Trait + Send + Send {
98+
fn test(&self) { println!("two"); }
99+
}
100+
```
101+
102+
[49546]: https://github.com/rust-lang/rust/pull/49546/
103+
[50143]: https://github.com/rust-lang/rust/pull/50143/
104+
[50170]: https://github.com/rust-lang/rust/pull/50170/
105+
[50234]: https://github.com/rust-lang/rust/pull/50234/
106+
[50265]: https://github.com/rust-lang/rust/pull/50265/
107+
[50364]: https://github.com/rust-lang/rust/pull/50364/
108+
[50385]: https://github.com/rust-lang/rust/pull/50385/
109+
[50465]: https://github.com/rust-lang/rust/pull/50465/
110+
[50486]: https://github.com/rust-lang/rust/pull/50486/
111+
[50554]: https://github.com/rust-lang/rust/pull/50554/
112+
[50610]: https://github.com/rust-lang/rust/pull/50610/
113+
[50855]: https://github.com/rust-lang/rust/pull/50855/
114+
[51050]: https://github.com/rust-lang/rust/pull/51050/
115+
[51196]: https://github.com/rust-lang/rust/pull/51196/
116+
[51200]: https://github.com/rust-lang/rust/pull/51200/
117+
[51241]: https://github.com/rust-lang/rust/pull/51241/
118+
[51276]: https://github.com/rust-lang/rust/pull/51276/
119+
[51298]: https://github.com/rust-lang/rust/pull/51298/
120+
[51306]: https://github.com/rust-lang/rust/pull/51306/
121+
[51562]: https://github.com/rust-lang/rust/pull/51562/
122+
[cargo/5584]: https://github.com/rust-lang/cargo/pull/5584/
123+
[`Iterator::step_by`]: https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.step_by
124+
[`Path::ancestors`]: https://doc.rust-lang.org/std/path/struct.Path.html#method.ancestors
125+
[`btree_map::Entry::or_default`]: https://doc.rust-lang.org/std/collections/btree_map/enum.Entry.html#method.or_default
126+
[`fmt::Alignment`]: https://doc.rust-lang.org/std/fmt/enum.Alignment.html
127+
[`hash_map::Entry::or_default`]: https://doc.rust-lang.org/std/collections/btree_map/enum.Entry.html#method.or_default
128+
[`iter::repeat_with`]: https://doc.rust-lang.org/std/iter/fn.repeat_with.html
129+
[`num::NonZeroUsize`]: https://doc.rust-lang.org/std/num/struct.NonZeroUsize.html
130+
[`num::NonZeroU128`]: https://doc.rust-lang.org/std/num/struct.NonZeroU128.html
131+
[`num::NonZeroU16`]: https://doc.rust-lang.org/std/num/struct.NonZeroU16.html
132+
[`num::NonZeroU32`]: https://doc.rust-lang.org/std/num/struct.NonZeroU32.html
133+
[`num::NonZeroU64`]: https://doc.rust-lang.org/std/num/struct.NonZeroU64.html
134+
[`num::NonZeroU8`]: https://doc.rust-lang.org/std/num/struct.NonZeroU8.html
135+
[`ops::RangeBounds`]: https://doc.rust-lang.org/std/ops/trait.RangeBounds.html
136+
[`slice::SliceIndex`]: https://doc.rust-lang.org/std/slice/trait.SliceIndex.html
137+
[`slice::from_mut`]: https://doc.rust-lang.org/std/slice/fn.from_mut.html
138+
[`slice::from_ref`]: https://doc.rust-lang.org/std/slice/fn.from_ref.html
139+
[`{Any + Send + Sync}::downcast_mut`]: https://doc.rust-lang.org/std/any/trait.Any.html#method.downcast_mut-2
140+
[`{Any + Send + Sync}::downcast_ref`]: https://doc.rust-lang.org/std/any/trait.Any.html#method.downcast_ref-2
141+
[`{Any + Send + Sync}::is`]: https://doc.rust-lang.org/std/any/trait.Any.html#method.is-2
142+
143+
1144
Version 1.27.0 (2018-06-21)
2145
==========================
3146

@@ -188,7 +331,7 @@ Language
188331
- [Closures now implement `Copy` and/or `Clone` if all captured variables
189332
implement either or both traits.][49299]
190333
- [The inclusive range syntax e.g. `for x in 0..=10` is now stable.][47813]
191-
- [Stablise `'_`. The underscore lifetime can be used anywhere where a
334+
- [The `'_` lifetime is now stable. The underscore lifetime can be used anywhere where a
192335
lifetime can be elided.][49458]
193336
- [`impl Trait` is now stable allowing you to have abstract types in returns
194337
or in function parameters.][49255] e.g. `fn foo() -> impl Iterator<Item=u8>` or
@@ -389,7 +532,7 @@ Version 1.25.0 (2018-03-29)
389532

390533
Language
391534
--------
392-
- [Stabilised `#[repr(align(x))]`.][47006] [RFC 1358]
535+
- [The `#[repr(align(x))]` attribute is now stable.][47006] [RFC 1358]
393536
- [You can now use nested groups of imports.][47948]
394537
e.g. `use std::{fs::File, io::Read, path::{Path, PathBuf}};`
395538
- [You can now have `|` at the start of a match arm.][47947] e.g.

0 commit comments

Comments
 (0)