Skip to content

Commit 5e44115

Browse files
committed
Auto merge of #28408 - brson:relnotes, r=aturon
I'd love to have any tips about highlights and lang stuff I missed. Sadly, this needs to be merged *tomorrow*. [Rendered](https://github.com/brson/rust/blob/relnotes/RELEASES.md)
2 parents d2e13e8 + f57bb9d commit 5e44115

File tree

1 file changed

+221
-15
lines changed

1 file changed

+221
-15
lines changed

RELEASES.md

+221-15
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,211 @@
1+
Version 1.3.0 (September 2015)
2+
==============================
3+
4+
* ~900 changes, numerous bugfixes
5+
6+
Highlights
7+
----------
8+
9+
* The [new object lifetime defaults][nold] have been [turned
10+
on][nold2] after a cycle of warnings about the change. Now types
11+
like `&'a Box<Trait>` (or `&'a Rc<Trait>`, etc) will change from
12+
being interpreted as `&'a Box<Trait+'a>` to `&'a
13+
Box<Trait+'static>`.
14+
* [The Rustonomicon][nom] is a new book in the official documentation
15+
that dives into writing unsafe Rust.
16+
* The [`Duration`] API, [has been stabilized][ds]. This basic unit of
17+
timekeeping is employed by other std APIs, as well as out-of-tree
18+
time crates.
19+
20+
Breaking Changes
21+
----------------
22+
23+
* The [new object lifetime defaults][nold] have been [turned
24+
on][nold2] after a cycle of warnings about the change.
25+
* There is a known [regression][lr] in how object lifetime elision is
26+
interpreted, the proper solution for which is undetermined.
27+
* The `#[prelude_import]` attribute, an internal implementation
28+
detail, was accidentally stabilized previously. [It has been put
29+
behind the `prelude_import` feature gate][pi]. This change is
30+
believed to break no existing code.
31+
* The behavior of [`size_of_val`][dst1] and [`align_of_val`][dst2] is
32+
[more sane for dynamically sized types][dst3]. Code that relied on
33+
the previous behavior is thought to be broken.
34+
* The `dropck` rules, which checks that destructors can't access
35+
destroyed values, [have been updated][dropck] to match the
36+
[RFC][dropckrfc]. This fixes some soundness holes, and as such will
37+
cause some previously-compiling code to no longer build.
38+
39+
Language
40+
--------
41+
42+
* The [new object lifetime defaults][nold] have been [turned
43+
on][nold2] after a cycle of warnings about the change.
44+
* Semicolons may [now follow types and paths in
45+
macros](https://github.com/rust-lang/rust/pull/27000).
46+
* The behavior of [`size_of_val`][dst1] and [`align_of_val`][dst2] is
47+
[more sane for dynamically sized types][dst3]. Code that relied on
48+
the previous behavior is not known to exist, and suspected to be
49+
broken.
50+
* `'static` variables [may now be recursive][st].
51+
* `ref` bindings choose between [`Deref`] and [`DerefMut`]
52+
implementations correctly.
53+
* The `dropck` rules, which checks that destructors can't access
54+
destroyed values, [have been updated][dropck] to match the
55+
[RFC][dropckrfc].
56+
57+
Libraries
58+
---------
59+
60+
* The [`Duration`] API, [has been stabilized][ds], as well as the
61+
`std::time` module, which presently contains only `Duration`.
62+
* `Box<str>` and `Box<[T]>` both implement `Clone`.
63+
* The owned C string, [`CString`], implements [`Borrow`] and the
64+
borrowed C string, [`CStr`], implements [`ToOwned`]. The two of
65+
these allow C strings to be borrowed and cloned in generic code.
66+
* [`CStr`] implements [`Debug`].
67+
* [`AtomicPtr`] implements [`Debug`].
68+
* [`Error`] trait objects [can be downcast to their concrete types][e]
69+
in many common configurations, using the [`is`], [`downcast`],
70+
[`downcast_ref`] and [`downcast_mut`] methods, similarly to the
71+
[`Any`] trait.
72+
* Searching for substrings now [employs the two-way algorithm][search]
73+
instead of doing a naive search. This gives major speedups to a
74+
number of methods, including [`contains`][sc], [`find`][sf],
75+
[`rfind`][srf], [`split`][ss]. [`starts_with`][ssw] and
76+
[`ends_with`][sew] are also faster.
77+
* The performance of `PartialEq` for slices is [much faster][ps].
78+
* The [`Hash`] trait offers the default method, [`hash_slice`], which
79+
is overridden and optimized by the implementations for scalars.
80+
* The [`Hasher`] trait now has a number of specialized `write_*`
81+
methods for primitive types, for efficiency.
82+
* The I/O-specific error type, [`std::io::Error`][ie], gained a set of
83+
methods for accessing the 'inner error', if any: [`get_ref`][iegr],
84+
[`get_mut`][iegm], [`into_inner`][ieii]. As well, the implementation
85+
of [`std::error::Error::cause`][iec] also delegates to the inner
86+
error.
87+
* [`process::Child`][pc] gained the [`id`] method, which returns a
88+
`u32` representing the platform-specific process identifier.
89+
* The [`connect`] method on slices is deprecated, replaced by the new
90+
[`join`] method (note that both of these are on the *unstable*
91+
[`SliceConcatExt`] trait, but through the magic of the prelude are
92+
available to stable code anyway).
93+
* The [`Div`] operator is implemented for [`Wrapping`] types.
94+
* [`DerefMut` is implemented for `String`][dms].
95+
* Performance of SipHash (the default hasher for `HashMap`) is
96+
[better for long data][sh].
97+
* [`AtomicPtr`] implements [`Send`].
98+
* The [`read_to_end`] implementations for [`Stdin`] and [`File`]
99+
are now [specialized to use uninitalized buffers for increased
100+
performance][rte].
101+
* Lifetime parameters of foreign functions [are now resolved
102+
properly][f].
103+
104+
Misc
105+
----
106+
107+
* Rust can now, with some coercion, [produce programs that run on
108+
Windows XP][xp], though XP is not considered a supported platform.
109+
* Porting Rust on Windows from the GNU toolchain to MSVC continues
110+
([1][win1], [2][win2], [3][win3], [4][win4]). It is still not
111+
recommended for use in 1.3, though should be fully-functional
112+
in the [64-bit 1.4 beta][b14].
113+
* On Fedora-based systems installation will [properly configure the
114+
dynamic linker][fl].
115+
* The compiler gained many new extended error descriptions, which can
116+
be accessed with the `--explain` flag.
117+
* The `dropck` pass, which checks that destructors can't access
118+
destroyed values, [has been rewritten][dropck]. This fixes some
119+
soundness holes, and as such will cause some previously-compiling
120+
code to no longer build.
121+
* `rustc` now uses [LLVM to write archive files where possible][ar].
122+
Eventually this will eliminate the compiler's dependency on the ar
123+
utility.
124+
* Rust has [preliminary support for i686 FreeBSD][fb] (it has long
125+
supported FreeBSD on x86_64).
126+
* The [`unused_mut`][lum], [`unconditional_recursion`][lur],
127+
[`improper_ctypes`][lic], and [`negate_unsigned`][lnu] lints are
128+
more strict.
129+
* If landing pads are disabled (with `-Z no-landing-pads`), [`panic!`
130+
will kill the process instead of leaking][nlp].
131+
132+
[`Any`]: http://doc.rust-lang.org/nightly/std/any/trait.Any.html
133+
[`AtomicPtr`]: http://doc.rust-lang.org/nightly/std/sync/atomic/struct.AtomicPtr.html
134+
[`Borrow`]: http://doc.rust-lang.org/nightly/std/borrow/trait.Borrow.html
135+
[`CStr`]: http://doc.rust-lang.org/nightly/std/ffi/struct.CStr.html
136+
[`CString`]: http://doc.rust-lang.org/nightly/std/ffi/struct.CString.html
137+
[`Debug`]: http://doc.rust-lang.org/nightly/std/fmt/trait.Debug.html
138+
[`DerefMut`]: http://doc.rust-lang.org/nightly/std/ops/trait.DerefMut.html
139+
[`Deref`]: http://doc.rust-lang.org/nightly/std/ops/trait.Deref.html
140+
[`Div`]: http://doc.rust-lang.org/nightly/std/ops/trait.Div.html
141+
[`Duration`]: http://doc.rust-lang.org/nightly/std/time/struct.Duration.html
142+
[`Error`]: http://doc.rust-lang.org/nightly/std/error/trait.Error.html
143+
[`File`]: http://doc.rust-lang.org/nightly/std/fs/struct.File.html
144+
[`Hash`]: http://doc.rust-lang.org/nightly/std/hash/trait.Hash.html
145+
[`Hasher`]: http://doc.rust-lang.org/nightly/std/hash/trait.Hash.html
146+
[`Send`]: http://doc.rust-lang.org/nightly/std/marker/trait.Send.html
147+
[`SliceConcatExt`]: http://doc.rust-lang.org/nightly/std/slice/trait.SliceConcatExt.html
148+
[`Stdin`]: http://doc.rust-lang.org/nightly/std/io/struct.Stdin.html
149+
[`ToOwned`]: http://doc.rust-lang.org/nightly/std/borrow/trait.ToOwned.html
150+
[`Wrapping`]: http://doc.rust-lang.org/nightly/std/num/struct.Wrapping.html
151+
[`connect`]: http://doc.rust-lang.org/nightly/std/slice/trait.SliceConcatExt.html#method.connect
152+
[`downcast_mut`]: http://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.downcast_mut
153+
[`downcast_ref`]: http://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.downcast_ref
154+
[`downcast`]: http://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.downcast
155+
[`hash_slice`]: http://doc.rust-lang.org/nightly/std/hash/trait.Hash.html#method.hash_slice
156+
[`id`]: http://doc.rust-lang.org/nightly/std/process/struct.Child.html#method.id
157+
[`is`]: http://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.is
158+
[`join`]: http://doc.rust-lang.org/nightly/std/slice/trait.SliceConcatExt.html#method.join
159+
[`read_to_end`]: http://doc.rust-lang.org/nightly/std/io/trait.Read.html#method.read_to_end
160+
[ar]: https://github.com/rust-lang/rust/pull/26926
161+
[b14]: https://static.rust-lang.org/dist/rust-beta-x86_64-pc-windows-msvc.msi
162+
[dms]: https://github.com/rust-lang/rust/pull/26241
163+
[dropck]: https://github.com/rust-lang/rust/pull/27261
164+
[dropckrfc]: https://github.com/rust-lang/rfcs/blob/master/text/0769-sound-generic-drop.md
165+
[ds]: https://github.com/rust-lang/rust/pull/26818
166+
[dst1]: http://doc.rust-lang.org/nightly/std/mem/fn.size_of_val.html
167+
[dst2]: http://doc.rust-lang.org/nightly/std/mem/fn.align_of_val.html
168+
[dst3]: https://github.com/rust-lang/rust/pull/27351
169+
[e]: https://github.com/rust-lang/rust/pull/24793
170+
[f]: https://github.com/rust-lang/rust/pull/26588
171+
[fb]: https://github.com/rust-lang/rust/pull/26959
172+
[fl]: https://github.com/rust-lang/rust-installer/pull/41
173+
[hs]: http://doc.rust-lang.org/nightly/std/hash/trait.Hash.html#method.hash_slice
174+
[ie]: http://doc.rust-lang.org/nightly/std/io/struct.Error.html
175+
[iec]: http://doc.rust-lang.org/nightly/std/io/struct.Error.html#method.cause
176+
[iegm]: http://doc.rust-lang.org/nightly/std/io/struct.Error.html#method.get_mut
177+
[iegr]: http://doc.rust-lang.org/nightly/std/io/struct.Error.html#method.get_ref
178+
[ieii]: http://doc.rust-lang.org/nightly/std/io/struct.Error.html#method.into_inner
179+
[lic]: https://github.com/rust-lang/rust/pull/26583
180+
[lnu]: https://github.com/rust-lang/rust/pull/27026
181+
[lr]: https://github.com/rust-lang/rust/issues/27248
182+
[lum]: https://github.com/rust-lang/rust/pull/26378
183+
[lur]: https://github.com/rust-lang/rust/pull/26783
184+
[nlp]: https://github.com/rust-lang/rust/pull/27176
185+
[nold2]: https://github.com/rust-lang/rust/pull/27045
186+
[nold]: https://github.com/rust-lang/rfcs/blob/master/text/1156-adjust-default-object-bounds.md
187+
[nom]: http://doc.rust-lang.org/nightly/nomicon/
188+
[pc]: http://doc.rust-lang.org/nightly/std/process/struct.Child.html
189+
[pi]: https://github.com/rust-lang/rust/pull/26699
190+
[ps]: https://github.com/rust-lang/rust/pull/26884
191+
[rte]: https://github.com/rust-lang/rust/pull/26950
192+
[sc]: http://doc.rust-lang.org/nightly/std/primitive.str.html#method.contains
193+
[search]: https://github.com/rust-lang/rust/pull/26327
194+
[sew]: http://doc.rust-lang.org/nightly/std/primitive.str.html#method.ends_with
195+
[sf]: http://doc.rust-lang.org/nightly/std/primitive.str.html#method.find
196+
[sh]: https://github.com/rust-lang/rust/pull/27280
197+
[srf]: http://doc.rust-lang.org/nightly/std/primitive.str.html#method.rfind
198+
[ss]: http://doc.rust-lang.org/nightly/std/primitive.str.html#method.split
199+
[ssw]: http://doc.rust-lang.org/nightly/std/primitive.str.html#method.starts_with
200+
[st]: https://github.com/rust-lang/rust/pull/26630
201+
[win1]: https://github.com/rust-lang/rust/pull/26569
202+
[win2]: https://github.com/rust-lang/rust/pull/26741
203+
[win3]: https://github.com/rust-lang/rust/pull/26741
204+
[win4]: https://github.com/rust-lang/rust/pull/27210
205+
[xp]: https://github.com/rust-lang/rust/pull/26569
206+
1207
Version 1.2.0 (2015-08-07)
2-
===========================
208+
==========================
3209

4210
* ~1200 changes, numerous bugfixes
5211

@@ -427,7 +633,7 @@ Misc
427633
[path-normalize]: https://github.com/rust-lang/rust/pull/23229
428634

429635

430-
Version 1.0.0-alpha.2 (February 2015)
636+
Version 1.0.0-alpha.2 (2015-02-20)
431637
=====================================
432638

433639
* ~1300 changes, numerous bugfixes
@@ -526,7 +732,7 @@ Version 1.0.0-alpha.2 (February 2015)
526732
[un]: https://github.com/rust-lang/rust/pull/22256
527733

528734

529-
Version 1.0.0-alpha (January 2015)
735+
Version 1.0.0-alpha (2015-01-09)
530736
==================================
531737

532738
* ~2400 changes, numerous bugfixes
@@ -713,7 +919,7 @@ Version 1.0.0-alpha (January 2015)
713919
[rbe]: http://rustbyexample.com/
714920

715921

716-
Version 0.12.0 (October 2014)
922+
Version 0.12.0 (2014-10-09)
717923
=============================
718924

719925
* ~1900 changes, numerous bugfixes
@@ -836,7 +1042,7 @@ Version 0.12.0 (October 2014)
8361042
kernels and distributions, built on CentOS 5.10.
8371043

8381044

839-
Version 0.11.0 (July 2014)
1045+
Version 0.11.0 (2014-07-02)
8401046
==========================
8411047

8421048
* ~1700 changes, numerous bugfixes
@@ -969,7 +1175,7 @@ Version 0.11.0 (July 2014)
9691175
greatly improved.
9701176

9711177

972-
Version 0.10 (April 2014)
1178+
Version 0.10 (2014-04-03)
9731179
=========================
9741180

9751181
* ~1500 changes, numerous bugfixes
@@ -1136,7 +1342,7 @@ Version 0.10 (April 2014)
11361342
directory.
11371343

11381344

1139-
Version 0.9 (January 2014)
1345+
Version 0.9 (2014-01-09)
11401346
==========================
11411347

11421348
* ~1800 changes, numerous bugfixes
@@ -1302,7 +1508,7 @@ Version 0.9 (January 2014)
13021508
build tools.
13031509

13041510

1305-
Version 0.8 (September 2013)
1511+
Version 0.8 (2013-09-26)
13061512
============================
13071513

13081514
* ~2200 changes, numerous bugfixes
@@ -1458,7 +1664,7 @@ Version 0.8 (September 2013)
14581664
still invoked through the normal `rustdoc` command.
14591665

14601666

1461-
Version 0.7 (July 2013)
1667+
Version 0.7 (2013-07-03)
14621668
=======================
14631669

14641670
* ~2000 changes, numerous bugfixes
@@ -1575,7 +1781,7 @@ Version 0.7 (July 2013)
15751781
* Improvements to rustpkg (see the detailed release notes).
15761782

15771783

1578-
Version 0.6 (April 2013)
1784+
Version 0.6 (2013-04-03)
15791785
========================
15801786

15811787
* ~2100 changes, numerous bugfixes
@@ -1678,7 +1884,7 @@ Version 0.6 (April 2013)
16781884
* Inline assembler supported by new asm!() syntax extension.
16791885

16801886

1681-
Version 0.5 (December 2012)
1887+
Version 0.5 (2012-12-21)
16821888
===========================
16831889

16841890
* ~900 changes, numerous bugfixes
@@ -1735,7 +1941,7 @@ Version 0.5 (December 2012)
17351941
* License changed from MIT to dual MIT/APL2
17361942

17371943

1738-
Version 0.4 (October 2012)
1944+
Version 0.4 (2012-10-15)
17391945
==========================
17401946

17411947
* ~2000 changes, numerous bugfixes
@@ -1791,7 +1997,7 @@ Version 0.4 (October 2012)
17911997
* All hash functions and tables converted to secure, randomized SipHash
17921998

17931999

1794-
Version 0.3 (July 2012)
2000+
Version 0.3 (2012-07-12)
17952001
========================
17962002

17972003
* ~1900 changes, numerous bugfixes
@@ -1850,7 +2056,7 @@ Version 0.3 (July 2012)
18502056
* Cargo automatically resolves dependencies
18512057

18522058

1853-
Version 0.2 (March 2012)
2059+
Version 0.2 (2012-03-29)
18542060
=========================
18552061

18562062
* >1500 changes, numerous bugfixes
@@ -1891,7 +2097,7 @@ Version 0.2 (March 2012)
18912097
* Extensive cleanup, regularization in libstd, libcore
18922098

18932099

1894-
Version 0.1 (January 20, 2012)
2100+
Version 0.1 (2012-01-20)
18952101
===============================
18962102

18972103
* Most language features work, including:

0 commit comments

Comments
 (0)