-
Notifications
You must be signed in to change notification settings - Fork 12.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
1.3 relnotes #28408
Merged
Merged
1.3 relnotes #28408
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,211 @@ | ||
Version 1.3.0 (September 2015) | ||
============================== | ||
|
||
* ~900 changes, numerous bugfixes | ||
|
||
Highlights | ||
---------- | ||
|
||
* The [new object lifetime defaults][nold] have been [turned | ||
on][nold2] after a cycle of warnings about the change. Now types | ||
like `&'a Box<Trait>` (or `&'a Rc<Trait>`, etc) will change from | ||
being interpreted as `&'a Box<Trait+'a>` to `&'a | ||
Box<Trait+'static>`. | ||
* [The Rustonomicon][nom] is a new book in the official documentation | ||
that dives into writing unsafe Rust. | ||
* The [`Duration`] API, [has been stabilized][ds]. This basic unit of | ||
timekeeping is employed by other std APIs, as well as out-of-tree | ||
time crates. | ||
|
||
Breaking Changes | ||
---------------- | ||
|
||
* The [new object lifetime defaults][nold] have been [turned | ||
on][nold2] after a cycle of warnings about the change. | ||
* There is a known [regression][lr] in how object lifetime elision is | ||
interpreted, the proper solution for which is undetermined. | ||
* The `#[prelude_import]` attribute, an internal implementation | ||
detail, was accidentally stabilized previously. [It has been put | ||
behind the `prelude_import` feature gate][pi]. This change is | ||
believed to break no existing code. | ||
* The behavior of [`size_of_val`][dst1] and [`align_of_val`][dst2] is | ||
[more sane for dynamically sized types][dst3]. Code that relied on | ||
the previous behavior is thought to be broken. | ||
* The `dropck` rules, which checks that destructors can't access | ||
destroyed values, [have been updated][dropck] to match the | ||
[RFC][dropckrfc]. This fixes some soundness holes, and as such will | ||
cause some previously-compiling code to no longer build. | ||
|
||
Language | ||
-------- | ||
|
||
* The [new object lifetime defaults][nold] have been [turned | ||
on][nold2] after a cycle of warnings about the change. | ||
* Semicolons may [now follow types and paths in | ||
macros](https://github.com/rust-lang/rust/pull/27000). | ||
* The behavior of [`size_of_val`][dst1] and [`align_of_val`][dst2] is | ||
[more sane for dynamically sized types][dst3]. Code that relied on | ||
the previous behavior is not known to exist, and suspected to be | ||
broken. | ||
* `'static` variables [may now be recursive][st]. | ||
* `ref` bindings choose between [`Deref`] and [`DerefMut`] | ||
implementations correctly. | ||
* The `dropck` rules, which checks that destructors can't access | ||
destroyed values, [have been updated][dropck] to match the | ||
[RFC][dropckrfc]. | ||
|
||
Libraries | ||
--------- | ||
|
||
* The [`Duration`] API, [has been stabilized][ds], as well as the | ||
`std::time` module, which presently contains only `Duration`. | ||
* `Box<str>` and `Box<[T]>` both implement `Clone`. | ||
* The owned C string, [`CString`], implements [`Borrow`] and the | ||
borrowed C string, [`CStr`], implements [`ToOwned`]. The two of | ||
these allow C strings to be borrowed and cloned in generic code. | ||
* [`CStr`] implements [`Debug`]. | ||
* [`AtomicPtr`] implements [`Debug`]. | ||
* [`Error`] trait objects [can be downcast to their concrete types][e] | ||
in many common configurations, using the [`is`], [`downcast`], | ||
[`downcast_ref`] and [`downcast_mut`] methods, similarly to the | ||
[`Any`] trait. | ||
* Searching for substrings now [employs the two-way algorithm][search] | ||
instead of doing a naive search. This gives major speedups to a | ||
number of methods, including [`contains`][sc], [`find`][sf], | ||
[`rfind`][srf], [`split`][ss]. [`starts_with`][ssw] and | ||
[`ends_with`][sew] are also faster. | ||
* The performance of `PartialEq` for slices is [much faster][ps]. | ||
* The [`Hash`] trait offers the default method, [`hash_slice`], which | ||
is overridden and optimized by the implementations for scalars. | ||
* The [`Hasher`] trait now has a number of specialized `write_*` | ||
methods for primitive types, for efficiency. | ||
* The I/O-specific error type, [`std::io::Error`][ie], gained a set of | ||
methods for accessing the 'inner error', if any: [`get_ref`][iegr], | ||
[`get_mut`][iegm], [`into_inner`][ieii]. As well, the implementation | ||
of [`std::error::Error::cause`][iec] also delegates to the inner | ||
error. | ||
* [`process::Child`][pc] gained the [`id`] method, which returns a | ||
`u32` representing the platform-specific process identifier. | ||
* The [`connect`] method on slices is deprecated, replaced by the new | ||
[`join`] method (note that both of these are on the *unstable* | ||
[`SliceConcatExt`] trait, but through the magic of the prelude are | ||
available to stable code anyway). | ||
* The [`Div`] operator is implemented for [`Wrapping`] types. | ||
* [`DerefMut` is implemented for `String`][dms]. | ||
* Performance of SipHash (the default hasher for `HashMap`) is | ||
[better for long data][sh]. | ||
* [`AtomicPtr`] implements [`Send`]. | ||
* The [`read_to_end`] implementations for [`Stdin`] and [`File`] | ||
are now [specialized to use uninitalized buffers for increased | ||
performance][rte]. | ||
* Lifetime parameters of foreign functions [are now resolved | ||
properly][f]. | ||
|
||
Misc | ||
---- | ||
|
||
* Rust can now, with some coercion, [produce programs that run on | ||
Windows XP][xp], though XP is not considered a supported platform. | ||
* Porting Rust on Windows from the GNU toolchain to MSVC continues | ||
([1][win1], [2][win2], [3][win3], [4][win4]). It is still not | ||
recommended for use in 1.3, though should be fully-functional | ||
in the [64-bit 1.4 beta][b14]. | ||
* On Fedora-based systems installation will [properly configure the | ||
dynamic linker][fl]. | ||
* The compiler gained many new extended error descriptions, which can | ||
be accessed with the `--explain` flag. | ||
* The `dropck` pass, which checks that destructors can't access | ||
destroyed values, [has been rewritten][dropck]. This fixes some | ||
soundness holes, and as such will cause some previously-compiling | ||
code to no longer build. | ||
* `rustc` now uses [LLVM to write archive files where possible][ar]. | ||
Eventually this will eliminate the compiler's dependency on the ar | ||
utility. | ||
* Rust has [preliminary support for i686 FreeBSD][fb] (it has long | ||
supported FreeBSD on x86_64). | ||
* The [`unused_mut`][lum], [`unconditional_recursion`][lur], | ||
[`improper_ctypes`][lic], and [`negate_unsigned`][lnu] lints are | ||
more strict. | ||
* If landing pads are disabled (with `-Z no-landing-pads`), [`panic!` | ||
will kill the process instead of leaking][nlp]. | ||
|
||
[`Any`]: http://doc.rust-lang.org/nightly/std/any/trait.Any.html | ||
[`AtomicPtr`]: http://doc.rust-lang.org/nightly/std/sync/atomic/struct.AtomicPtr.html | ||
[`Borrow`]: http://doc.rust-lang.org/nightly/std/borrow/trait.Borrow.html | ||
[`CStr`]: http://doc.rust-lang.org/nightly/std/ffi/struct.CStr.html | ||
[`CString`]: http://doc.rust-lang.org/nightly/std/ffi/struct.CString.html | ||
[`Debug`]: http://doc.rust-lang.org/nightly/std/fmt/trait.Debug.html | ||
[`DerefMut`]: http://doc.rust-lang.org/nightly/std/ops/trait.DerefMut.html | ||
[`Deref`]: http://doc.rust-lang.org/nightly/std/ops/trait.Deref.html | ||
[`Div`]: http://doc.rust-lang.org/nightly/std/ops/trait.Div.html | ||
[`Duration`]: http://doc.rust-lang.org/nightly/std/time/struct.Duration.html | ||
[`Error`]: http://doc.rust-lang.org/nightly/std/error/trait.Error.html | ||
[`File`]: http://doc.rust-lang.org/nightly/std/fs/struct.File.html | ||
[`Hash`]: http://doc.rust-lang.org/nightly/std/hash/trait.Hash.html | ||
[`Hasher`]: http://doc.rust-lang.org/nightly/std/hash/trait.Hash.html | ||
[`Send`]: http://doc.rust-lang.org/nightly/std/marker/trait.Send.html | ||
[`SliceConcatExt`]: http://doc.rust-lang.org/nightly/std/slice/trait.SliceConcatExt.html | ||
[`Stdin`]: http://doc.rust-lang.org/nightly/std/io/struct.Stdin.html | ||
[`ToOwned`]: http://doc.rust-lang.org/nightly/std/borrow/trait.ToOwned.html | ||
[`Wrapping`]: http://doc.rust-lang.org/nightly/std/num/struct.Wrapping.html | ||
[`connect`]: http://doc.rust-lang.org/nightly/std/slice/trait.SliceConcatExt.html#method.connect | ||
[`downcast_mut`]: http://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.downcast_mut | ||
[`downcast_ref`]: http://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.downcast_ref | ||
[`downcast`]: http://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.downcast | ||
[`hash_slice`]: http://doc.rust-lang.org/nightly/std/hash/trait.Hash.html#method.hash_slice | ||
[`id`]: http://doc.rust-lang.org/nightly/std/process/struct.Child.html#method.id | ||
[`is`]: http://doc.rust-lang.org/nightly/std/error/trait.Error.html#method.is | ||
[`join`]: http://doc.rust-lang.org/nightly/std/slice/trait.SliceConcatExt.html#method.join | ||
[`read_to_end`]: http://doc.rust-lang.org/nightly/std/io/trait.Read.html#method.read_to_end | ||
[ar]: https://github.com/rust-lang/rust/pull/26926 | ||
[b14]: https://static.rust-lang.org/dist/rust-beta-x86_64-pc-windows-msvc.msi | ||
[dms]: https://github.com/rust-lang/rust/pull/26241 | ||
[dropck]: https://github.com/rust-lang/rust/pull/27261 | ||
[dropckrfc]: https://github.com/rust-lang/rfcs/blob/master/text/0769-sound-generic-drop.md | ||
[ds]: https://github.com/rust-lang/rust/pull/26818 | ||
[dst1]: http://doc.rust-lang.org/nightly/std/mem/fn.size_of_val.html | ||
[dst2]: http://doc.rust-lang.org/nightly/std/mem/fn.align_of_val.html | ||
[dst3]: https://github.com/rust-lang/rust/pull/27351 | ||
[e]: https://github.com/rust-lang/rust/pull/24793 | ||
[f]: https://github.com/rust-lang/rust/pull/26588 | ||
[fb]: https://github.com/rust-lang/rust/pull/26959 | ||
[fl]: https://github.com/rust-lang/rust-installer/pull/41 | ||
[hs]: http://doc.rust-lang.org/nightly/std/hash/trait.Hash.html#method.hash_slice | ||
[ie]: http://doc.rust-lang.org/nightly/std/io/struct.Error.html | ||
[iec]: http://doc.rust-lang.org/nightly/std/io/struct.Error.html#method.cause | ||
[iegm]: http://doc.rust-lang.org/nightly/std/io/struct.Error.html#method.get_mut | ||
[iegr]: http://doc.rust-lang.org/nightly/std/io/struct.Error.html#method.get_ref | ||
[ieii]: http://doc.rust-lang.org/nightly/std/io/struct.Error.html#method.into_inner | ||
[lic]: https://github.com/rust-lang/rust/pull/26583 | ||
[lnu]: https://github.com/rust-lang/rust/pull/27026 | ||
[lr]: https://github.com/rust-lang/rust/issues/27248 | ||
[lum]: https://github.com/rust-lang/rust/pull/26378 | ||
[lur]: https://github.com/rust-lang/rust/pull/26783 | ||
[nlp]: https://github.com/rust-lang/rust/pull/27176 | ||
[nold2]: https://github.com/rust-lang/rust/pull/27045 | ||
[nold]: https://github.com/rust-lang/rfcs/blob/master/text/1156-adjust-default-object-bounds.md | ||
[nom]: http://doc.rust-lang.org/nightly/nomicon/ | ||
[pc]: http://doc.rust-lang.org/nightly/std/process/struct.Child.html | ||
[pi]: https://github.com/rust-lang/rust/pull/26699 | ||
[ps]: https://github.com/rust-lang/rust/pull/26884 | ||
[rte]: https://github.com/rust-lang/rust/pull/26950 | ||
[sc]: http://doc.rust-lang.org/nightly/std/primitive.str.html#method.contains | ||
[search]: https://github.com/rust-lang/rust/pull/26327 | ||
[sew]: http://doc.rust-lang.org/nightly/std/primitive.str.html#method.ends_with | ||
[sf]: http://doc.rust-lang.org/nightly/std/primitive.str.html#method.find | ||
[sh]: https://github.com/rust-lang/rust/pull/27280 | ||
[srf]: http://doc.rust-lang.org/nightly/std/primitive.str.html#method.rfind | ||
[ss]: http://doc.rust-lang.org/nightly/std/primitive.str.html#method.split | ||
[ssw]: http://doc.rust-lang.org/nightly/std/primitive.str.html#method.starts_with | ||
[st]: https://github.com/rust-lang/rust/pull/26630 | ||
[win1]: https://github.com/rust-lang/rust/pull/26569 | ||
[win2]: https://github.com/rust-lang/rust/pull/26741 | ||
[win3]: https://github.com/rust-lang/rust/pull/26741 | ||
[win4]: https://github.com/rust-lang/rust/pull/27210 | ||
[xp]: https://github.com/rust-lang/rust/pull/26569 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Was this meant to be #26601 instead? |
||
|
||
Version 1.2.0 (2015-08-07) | ||
=========================== | ||
========================== | ||
|
||
* ~1200 changes, numerous bugfixes | ||
|
||
|
@@ -427,7 +633,7 @@ Misc | |
[path-normalize]: https://github.com/rust-lang/rust/pull/23229 | ||
|
||
|
||
Version 1.0.0-alpha.2 (February 2015) | ||
Version 1.0.0-alpha.2 (2015-02-20) | ||
===================================== | ||
|
||
* ~1300 changes, numerous bugfixes | ||
|
@@ -526,7 +732,7 @@ Version 1.0.0-alpha.2 (February 2015) | |
[un]: https://github.com/rust-lang/rust/pull/22256 | ||
|
||
|
||
Version 1.0.0-alpha (January 2015) | ||
Version 1.0.0-alpha (2015-01-09) | ||
================================== | ||
|
||
* ~2400 changes, numerous bugfixes | ||
|
@@ -713,7 +919,7 @@ Version 1.0.0-alpha (January 2015) | |
[rbe]: http://rustbyexample.com/ | ||
|
||
|
||
Version 0.12.0 (October 2014) | ||
Version 0.12.0 (2014-10-09) | ||
============================= | ||
|
||
* ~1900 changes, numerous bugfixes | ||
|
@@ -836,7 +1042,7 @@ Version 0.12.0 (October 2014) | |
kernels and distributions, built on CentOS 5.10. | ||
|
||
|
||
Version 0.11.0 (July 2014) | ||
Version 0.11.0 (2014-07-02) | ||
========================== | ||
|
||
* ~1700 changes, numerous bugfixes | ||
|
@@ -969,7 +1175,7 @@ Version 0.11.0 (July 2014) | |
greatly improved. | ||
|
||
|
||
Version 0.10 (April 2014) | ||
Version 0.10 (2014-04-03) | ||
========================= | ||
|
||
* ~1500 changes, numerous bugfixes | ||
|
@@ -1136,7 +1342,7 @@ Version 0.10 (April 2014) | |
directory. | ||
|
||
|
||
Version 0.9 (January 2014) | ||
Version 0.9 (2014-01-09) | ||
========================== | ||
|
||
* ~1800 changes, numerous bugfixes | ||
|
@@ -1302,7 +1508,7 @@ Version 0.9 (January 2014) | |
build tools. | ||
|
||
|
||
Version 0.8 (September 2013) | ||
Version 0.8 (2013-09-26) | ||
============================ | ||
|
||
* ~2200 changes, numerous bugfixes | ||
|
@@ -1458,7 +1664,7 @@ Version 0.8 (September 2013) | |
still invoked through the normal `rustdoc` command. | ||
|
||
|
||
Version 0.7 (July 2013) | ||
Version 0.7 (2013-07-03) | ||
======================= | ||
|
||
* ~2000 changes, numerous bugfixes | ||
|
@@ -1575,7 +1781,7 @@ Version 0.7 (July 2013) | |
* Improvements to rustpkg (see the detailed release notes). | ||
|
||
|
||
Version 0.6 (April 2013) | ||
Version 0.6 (2013-04-03) | ||
======================== | ||
|
||
* ~2100 changes, numerous bugfixes | ||
|
@@ -1678,7 +1884,7 @@ Version 0.6 (April 2013) | |
* Inline assembler supported by new asm!() syntax extension. | ||
|
||
|
||
Version 0.5 (December 2012) | ||
Version 0.5 (2012-12-21) | ||
=========================== | ||
|
||
* ~900 changes, numerous bugfixes | ||
|
@@ -1735,7 +1941,7 @@ Version 0.5 (December 2012) | |
* License changed from MIT to dual MIT/APL2 | ||
|
||
|
||
Version 0.4 (October 2012) | ||
Version 0.4 (2012-10-15) | ||
========================== | ||
|
||
* ~2000 changes, numerous bugfixes | ||
|
@@ -1791,7 +1997,7 @@ Version 0.4 (October 2012) | |
* All hash functions and tables converted to secure, randomized SipHash | ||
|
||
|
||
Version 0.3 (July 2012) | ||
Version 0.3 (2012-07-12) | ||
======================== | ||
|
||
* ~1900 changes, numerous bugfixes | ||
|
@@ -1850,7 +2056,7 @@ Version 0.3 (July 2012) | |
* Cargo automatically resolves dependencies | ||
|
||
|
||
Version 0.2 (March 2012) | ||
Version 0.2 (2012-03-29) | ||
========================= | ||
|
||
* >1500 changes, numerous bugfixes | ||
|
@@ -1891,7 +2097,7 @@ Version 0.2 (March 2012) | |
* Extensive cleanup, regularization in libstd, libcore | ||
|
||
|
||
Version 0.1 (January 20, 2012) | ||
Version 0.1 (2012-01-20) | ||
=============================== | ||
|
||
* Most language features work, including: | ||
|
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
io::Error::cause
also now forwards to the innerError
's.