mirror of https://github.com/rust-lang/rust.git
Update RELEASES.md for 1.2
This commit is contained in:
parent
e7dbcf8f57
commit
0d60e8d002
137
RELEASES.md
137
RELEASES.md
|
@ -1,15 +1,144 @@
|
|||
Version 1.2.0 (August 2015)
|
||||
===========================
|
||||
|
||||
* ~1200 changes, numerous bugfixes
|
||||
|
||||
Highlights
|
||||
----------
|
||||
|
||||
* [Parallel codegen][parcodegen] is now working again, which can substantially
|
||||
speed up large builds in debug mode; It also gets another ~33% speedup when
|
||||
bootstrapping on a 4 core machine (using 8 jobs). It's not enabled by default,
|
||||
but will be "in the near future"
|
||||
* [Dynamically-sized-type coercions][dst] allow smart pointer types
|
||||
like `Rc` to contain types without a fixed size, arrays and trait
|
||||
objects, finally enabling use of `Rc<[T]>` and completing the
|
||||
implementation of DST.
|
||||
* [Parallel codegen][parcodegen] is now working again, which can
|
||||
substantially speed up large builds in debug mode; It also gets
|
||||
another ~33% speedup when bootstrapping on a 4 core machine (using 8
|
||||
jobs). It's not enabled by default, but will be "in the near
|
||||
future". It can be activated with the `-C codegen-units=N` flag to
|
||||
`rustc`.
|
||||
|
||||
Breaking Changes
|
||||
----------------
|
||||
|
||||
* The [`to_uppercase`] and [`to_lowercase`] methods on `char` now do
|
||||
unicode case mapping, which is a previously-planned change in
|
||||
behavior and considered a bugfix.
|
||||
* [`mem::align_of`] now specifies [the *minimum alignment* for
|
||||
T][align], which is usually the alignment programs are interested
|
||||
in, and the same value reported by clang's
|
||||
`alignof`. [`mem::min_align_of`] is deprecated. This is not known to
|
||||
break real code.
|
||||
|
||||
Language
|
||||
--------
|
||||
|
||||
* Patterns with `ref mut` now correctly invoke [`DerefMut`] when
|
||||
matching against dereferencable values.
|
||||
|
||||
Libraries
|
||||
---------
|
||||
|
||||
* The [`Extend`] trait, which grows a collection from an iterator, is
|
||||
implemented over iterators of references, for `String`, `Vec`,
|
||||
`LinkedList`, `VecDeque`, `EnumSet`, `BinaryHeap`, `VecMap`,
|
||||
`BTreeSet` and `BTreeMap`. [RFC][extend-rfc].
|
||||
* The [`iter::once`] function returns an iterator that yields a single
|
||||
element.
|
||||
* The [`iter::empty`] function returns an iterator that yields no
|
||||
elements.
|
||||
* The [`matches`] and [`rmatches`] methods on `str` return iterators
|
||||
over substring matches.
|
||||
* [`Cell`] and [`RefCell`] both implement [`Eq`].
|
||||
* A number of methods for wrapping arithmetic are added to the
|
||||
integral types, [`wrapping_div`], [`wrapping_rem`],
|
||||
[`wrapping_neg`], [`wrapping_shl`], [`wrapping_shr`]. These are in
|
||||
addition to the existing [`wrapping_add`], [`wrapping_sub`], and
|
||||
[`wrapping_mul`] methods, and alternatives to the [`Wrapping`]
|
||||
type.. It is illegal for the default arithmetic operations in Rust
|
||||
to overflow; the desire to wrap must be explicit.
|
||||
* The `{:#?}` formatting specifier [displays the alternate,
|
||||
pretty-printed][debugfmt] form of the `Debug` formatter. This
|
||||
feature was actually introduced prior to 1.0 with little
|
||||
fanfare.
|
||||
* [`fmt::Formatter`] implements [`fmt::Write`], a `fmt`-specific trait
|
||||
for writing data to formatted strings, similar to [`io::Write`].
|
||||
* [`fmt::Formatter`] adds 'debug builder' methods, [`debug_struct`],
|
||||
[`debug_tuple`], [`debug_list`], [`debug_set`], [`debug_map`]. These
|
||||
are used by code generators to emit implementations of [`Debug`].
|
||||
* `str` has new [`to_uppercase`][strup] and [`to_lowercase`][strlow]
|
||||
methods that convert case, following Unicode case mapping.
|
||||
* It is now easier to handle to poisoned locks. The [`PoisonError`]
|
||||
type, returned by failing lock operations, exposes `into_inner`,
|
||||
`get_ref`, and `get_mut`, which all give access to the inner lock
|
||||
guard, and allow the poisoned lock to continue to operate. The
|
||||
`is_poisoned` method of [`RwLock`] and [`Mutex`] can poll for a
|
||||
poisoned lock without attempting to take the lock.
|
||||
* On Unix the [`FromRawFd`] trait is implemented for [`Stdio`], and
|
||||
[`AsRawFd`] for [`ChildStdin`], [`ChildStdout`], [`ChildStderr`].
|
||||
On Windows the `FromRawHandle` trait is implemented for `Stdio`,
|
||||
and `AsRawHandle` for `ChildStdin`, `ChildStdout`,
|
||||
`ChildStderr`.
|
||||
* [`io::ErrorKind`] has a new variant, `InvalidData`, which indicates
|
||||
malformed input.
|
||||
|
||||
Misc
|
||||
----
|
||||
|
||||
* `rustc` employs smarter heuristics for guessing at [typos].
|
||||
* `rustc` emits more efficient code for [no-op conversions between
|
||||
unsafe pointers][nop].
|
||||
* Fat pointers are now [passed in pairs of immediate arguments][fat],
|
||||
resulting in faster compile times and smaller code.
|
||||
|
||||
[`Extend`]: http://doc.rust-lang.org/nightly/std/iter/trait.Extend.html
|
||||
[extend-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0839-embrace-extend-extinguish.md
|
||||
[`iter::once`]: http://doc.rust-lang.org/nightly/std/iter/fn.once.html
|
||||
[`iter::empty`]: http://doc.rust-lang.org/nightly/std/iter/fn.empty.html
|
||||
[`matches`]: http://doc.rust-lang.org/nightly/std/primitive.str.html#method.matches
|
||||
[`rmatches`]: http://doc.rust-lang.org/nightly/std/primitive.str.html#method.rmatches
|
||||
[`Cell`]: http://doc.rust-lang.org/nightly/std/cell/struct.Cell.html
|
||||
[`RefCell`]: http://doc.rust-lang.org/nightly/std/cell/struct.RefCell.html
|
||||
[`wrapping_add`]: http://doc.rust-lang.org/nightly/std/primitive.i8.html#method.wrapping_add
|
||||
[`wrapping_sub`]: http://doc.rust-lang.org/nightly/std/primitive.i8.html#method.wrapping_sub
|
||||
[`wrapping_mul`]: http://doc.rust-lang.org/nightly/std/primitive.i8.html#method.wrapping_mul
|
||||
[`wrapping_div`]: http://doc.rust-lang.org/nightly/std/primitive.i8.html#method.wrapping_div
|
||||
[`wrapping_rem`]: http://doc.rust-lang.org/nightly/std/primitive.i8.html#method.wrapping_rem
|
||||
[`wrapping_neg`]: http://doc.rust-lang.org/nightly/std/primitive.i8.html#method.wrapping_neg
|
||||
[`wrapping_shl`]: http://doc.rust-lang.org/nightly/std/primitive.i8.html#method.wrapping_shl
|
||||
[`wrapping_shr`]: http://doc.rust-lang.org/nightly/std/primitive.i8.html#method.wrapping_shr
|
||||
[`Wrapping`]: http://doc.rust-lang.org/nightly/std/num/struct.Wrapping.html
|
||||
[`fmt::Formatter`]: http://doc.rust-lang.org/nightly/std/fmt/struct.Formatter.html
|
||||
[`fmt::Write`]: http://doc.rust-lang.org/nightly/std/fmt/trait.Write.html
|
||||
[`io::Write`]: http://doc.rust-lang.org/nightly/std/io/trait.Write.html
|
||||
[`debug_struct`]: http://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html#method.debug_struct
|
||||
[`debug_tuple`]: http://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html#method.debug_tuple
|
||||
[`debug_list`]: http://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html#method.debug_list
|
||||
[`debug_set`]: http://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html#method.debug_set
|
||||
[`debug_map`]: http://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html#method.debug_map
|
||||
[`Debug`]: http://doc.rust-lang.org/nightly/std/fmt/trait.Debug.html
|
||||
[strup]: http://doc.rust-lang.org/nightly/std/primitive.str.html#method.to_uppercase
|
||||
[strlow]: http://doc.rust-lang.org/nightly/std/primitive.str.html#method.to_lowercase
|
||||
[`to_uppercase`]: http://doc.rust-lang.org/nightly/std/primitive.char.html#method.to_uppercase
|
||||
[`to_lowercase`]: http://doc.rust-lang.org/nightly/std/primitive.char.html#method.to_lowercase
|
||||
[`PoisonError`]: http://doc.rust-lang.org/nightly/std/sync/struct.PoisonError.html
|
||||
[`RwLock`]: http://doc.rust-lang.org/nightly/std/sync/struct.RwLock.html
|
||||
[`Mutex`]: http://doc.rust-lang.org/nightly/std/sync/struct.Mutex.html
|
||||
[`FromRawFd`]: http://doc.rust-lang.org/nightly/std/os/unix/io/trait.FromRawFd.html
|
||||
[`AsRawFd`]: http://doc.rust-lang.org/nightly/std/os/unix/io/trait.AsRawFd.html
|
||||
[`Stdio`]: http://doc.rust-lang.org/nightly/std/process/struct.Stdio.html
|
||||
[`ChildStdin`]: http://doc.rust-lang.org/nightly/std/process/struct.ChildStdin.html
|
||||
[`ChildStdout`]: http://doc.rust-lang.org/nightly/std/process/struct.ChildStdout.html
|
||||
[`ChildStderr`]: http://doc.rust-lang.org/nightly/std/process/struct.ChildStderr.html
|
||||
[`io::ErrorKind`]: http://doc.rust-lang.org/nightly/std/io/enum.ErrorKind.html
|
||||
[debugfmt]: https://www.reddit.com/r/rust/comments/3ceaui/psa_produces_prettyprinted_debug_output/
|
||||
[`DerefMut`]: http://doc.rust-lang.org/nightly/std/ops/trait.DerefMut.html
|
||||
[`mem::align_of`]: http://doc.rust-lang.org/nightly/std/mem/fn.align_of.html
|
||||
[align]: https://github.com/rust-lang/rust/pull/25646
|
||||
[`mem::min_align_of`]: http://doc.rust-lang.org/nightly/std/mem/fn.min_align_of.html
|
||||
[typos]: https://github.com/rust-lang/rust/pull/26087
|
||||
[nop]: https://github.com/rust-lang/rust/pull/26336
|
||||
[fat]: https://github.com/rust-lang/rust/pull/26411
|
||||
[dst]: https://github.com/rust-lang/rfcs/blob/master/text/0982-dst-coercion.md
|
||||
[parcodegen]: https://github.com/rust-lang/rust/pull/26018
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue