← Back to all releases

Rust 1.36.0

Released on July 4, 2019

What's Changed

  • [Non-Lexical Lifetimes are now enabled on the 2015 edition.][59114]
  • [The order of traits in trait objects no longer affects the semantics of that

  • [HashMap's implementation has been replaced with hashbrown::HashMap implementation.][58623]
  • [TryFromSliceError now implements From.][60318]
  • [mem::needs_drop is now available as a const fn.][60364]
  • [alloc::Layout::from_size_align_unchecked is now available as a const fn.][60370]
  • [String now implements BorrowMut.][60404]
  • [io::Cursor now implements Default.][60234]
  • [Both NonNull::{dangling, cast} are now const fns.][60244]
  • [The alloc crate is now stable.][59675] alloc allows you to use a subset
  • [String now implements From<&String>.][59825]
  • [You can now pass multiple arguments to the dbg! macro.][59826] dbg! will
  • [Result::{is_err, is_ok} are now #[must_use] and will produce a warning if
  • [VecDeque::rotate_left]
  • [VecDeque::rotate_right]
  • [Iterator::copied]
  • [io::IoSlice]
  • [io::IoSliceMut]
  • [Read::read_vectored]
  • [Write::write_vectored]
  • [str::as_mut_ptr]
  • [mem::MaybeUninit]
  • [pointer::align_offset]
  • [future::Future]
  • [task::Context]
  • [task::RawWaker]
  • [task::RawWakerVTable]
  • [task::Waker]
  • [task::Poll]

  • [Cargo will now produce an error if you attempt to use the name of a required dependency as a feature.][cargo/6860]
  • [You can now pass the --offline flag to run cargo without accessing the network.][cargo/6934]

  • With the stabilisation of mem::MaybeUninit, mem::uninitialized use is no
Full Changelog

Language

--------

- [Non-Lexical Lifetimes are now enabled on the 2015 edition.][59114]

- [The order of traits in trait objects no longer affects the semantics of that

object.][59445] e.g. dyn Send + fmt::Debug is now equivalent to

dyn fmt::Debug + Send, where this was previously not the case.

Libraries

---------

- [HashMap's implementation has been replaced with hashbrown::HashMap implementation.][58623]

- [TryFromSliceError now implements From.][60318]

- [mem::needs_drop is now available as a const fn.][60364]

- [alloc::Layout::from_size_align_unchecked is now available as a const fn.][60370]

- [String now implements BorrowMut.][60404]

- [io::Cursor now implements Default.][60234]

- [Both NonNull::{dangling, cast} are now const fns.][60244]

- [The alloc crate is now stable.][59675] alloc allows you to use a subset

of std (e.g. Vec, Box, Arc) in #![no_std] environments if the

environment has access to heap memory allocation.

- [String now implements From<&String>.][59825]

- [You can now pass multiple arguments to the dbg! macro.][59826] dbg! will

return a tuple of each argument when there is multiple arguments.

- [Result::{is_err, is_ok} are now #[must_use] and will produce a warning if

not used.][59648]

Stabilized APIs

---------------

- [VecDeque::rotate_left]

- [VecDeque::rotate_right]

- [Iterator::copied]

- [io::IoSlice]

- [io::IoSliceMut]

- [Read::read_vectored]

- [Write::write_vectored]

- [str::as_mut_ptr]

- [mem::MaybeUninit]

- [pointer::align_offset]

- [future::Future]

- [task::Context]

- [task::RawWaker]

- [task::RawWakerVTable]

- [task::Waker]

- [task::Poll]

Cargo

-----

- [Cargo will now produce an error if you attempt to use the name of a required dependency as a feature.][cargo/6860]

- [You can now pass the --offline flag to run cargo without accessing the network.][cargo/6934]

You can find further change's in [Cargo's 1.36.0 release notes][cargo-1-36-0].

Clippy

------

There have been numerous additions and fixes to clippy, see [Clippy's 1.36.0 release notes][clippy-1-36-0] for more details.

Misc

----

Compatibility Notes

-------------------

- With the stabilisation of mem::MaybeUninit, mem::uninitialized use is no

longer recommended, and will be deprecated in 1.39.0.

[60318]: https://github.com/rust-lang/rust/pull/60318/

[60364]: https://github.com/rust-lang/rust/pull/60364/

[60370]: https://github.com/rust-lang/rust/pull/60370/

[60404]: https://github.com/rust-lang/rust/pull/60404/

[60234]: https://github.com/rust-lang/rust/pull/60234/

[60244]: https://github.com/rust-lang/rust/pull/60244/

[58623]: https://github.com/rust-lang/rust/pull/58623/

[59648]: https://github.com/rust-lang/rust/pull/59648/

[59675]: https://github.com/rust-lang/rust/pull/59675/

[59825]: https://github.com/rust-lang/rust/pull/59825/

[59826]: https://github.com/rust-lang/rust/pull/59826/

[59445]: https://github.com/rust-lang/rust/pull/59445/

[59114]: https://github.com/rust-lang/rust/pull/59114/

[cargo/6860]: https://github.com/rust-lang/cargo/pull/6860/

[cargo/6934]: https://github.com/rust-lang/cargo/pull/6934/

[VecDeque::rotate_left]: https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.rotate_left

[VecDeque::rotate_right]: https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.rotate_right

[Iterator::copied]: https://doc.rust-lang.org/std/iter/trait.Iterator.html#tymethod.copied

[io::IoSlice]: https://doc.rust-lang.org/std/io/struct.IoSlice.html

[io::IoSliceMut]: https://doc.rust-lang.org/std/io/struct.IoSliceMut.html

[Read::read_vectored]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_vectored

[Write::write_vectored]: https://doc.rust-lang.org/std/io/trait.Write.html#method.write_vectored

[str::as_mut_ptr]: https://doc.rust-lang.org/std/primitive.str.html#method.as_mut_ptr

[mem::MaybeUninit]: https://doc.rust-lang.org/std/mem/union.MaybeUninit.html

[pointer::align_offset]: https://doc.rust-lang.org/std/primitive.pointer.html#method.align_offset

[future::Future]: https://doc.rust-lang.org/std/future/trait.Future.html

[task::Context]: https://doc.rust-lang.org/beta/std/task/struct.Context.html

[task::RawWaker]: https://doc.rust-lang.org/beta/std/task/struct.RawWaker.html

[task::RawWakerVTable]: https://doc.rust-lang.org/beta/std/task/struct.RawWakerVTable.html

[task::Waker]: https://doc.rust-lang.org/beta/std/task/struct.Waker.html

[task::Poll]: https://doc.rust-lang.org/beta/std/task/enum.Poll.html

[clippy-1-36-0]: https://github.com/rust-lang/rust-clippy/blob/master/CHANGELOG.md#rust-136

[cargo-1-36-0]: https://github.com/rust-lang/cargo/blob/master/CHANGELOG.md#cargo-136-2019-07-04