--- rustc-1.36.0-src-old/
+++ rustc-1.36.0-src/
├── RELEASES.md
│ @@ -1,7 +1,111 @@
│ +Version 1.36.0 (2019-07-04)
│ +==========================
│ +
│ +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<Infallible>`.][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<str>`.][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
│ +-------------------
│ +- [`std::arch::x86::_rdtsc` returns `u64` instead of `i64`][stdsimd/559]
│ +- [`std::arch::x86_64::_mm_shuffle_ps` takes an `i32` instead of `u32` for `mask`][stdsimd/522]
│ +- With the stabilisation of `mem::MaybeUninit`, `mem::uninitialized` use is no
│ +  longer recommended, and will be deprecated in 1.38.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
│ +[stdsimd/522]: https://github.com/rust-lang-nursery/stdsimd/issues/522
│ +[stdsimd/559]: https://github.com/rust-lang-nursery/stdsimd/issues/559
│ +
│  Version 1.35.0 (2019-05-23)
│  ==========================
│  
│  Language
│  --------
│  - [`FnOnce`, `FnMut`, and the `Fn` traits are now implemented for `Box<FnOnce>`,
│    `Box<FnMut>`, and `Box<Fn>` respectively.][59500]
│ @@ -58,15 +162,15 @@
│  - [`Option::copied`]
│  
│  Cargo
│  -----
│  - [You can now set `cargo:rustc-cdylib-link-arg` at build time to pass custom
│    linker arguments when building a `cdylib`.][cargo/6298] Its usage is highly
│    platform specific.
│ -  
│ +
│  Misc
│  ----
│  - [The Rust toolchain is now available natively for musl based distros.][58575]
│  
│  [59460]: https://github.com/rust-lang/rust/pull/59460/
│  [59464]: https://github.com/rust-lang/rust/pull/59464/
│  [59500]: https://github.com/rust-lang/rust/pull/59500/
├── git-commit-hash
│ @@ -1 +1 @@
│ -9d98f8f319eaa1a40f76fb15b52ee2a179e5286a
│ +a53f9df32fbb0b5f4382caaad8f1a46f36ea887c
├── src
│ ├── libstd
│ │ ├── collections
│ │ │ ├── hash
│ │ │ │ ├── map.rs
│ │ │ │ │ @@ -2604,14 +2604,20 @@
│ │ │ │ │      use super::HashMap;
│ │ │ │ │      use super::RandomState;
│ │ │ │ │      use crate::cell::RefCell;
│ │ │ │ │      use rand::{thread_rng, Rng};
│ │ │ │ │      use realstd::collections::CollectionAllocErr::*;
│ │ │ │ │      use realstd::usize;
│ │ │ │ │  
│ │ │ │ │ +    // https://github.com/rust-lang/rust/issues/62301
│ │ │ │ │ +    fn _assert_hashmap_is_unwind_safe() {
│ │ │ │ │ +        fn assert_unwind_safe<T: crate::panic::UnwindSafe>() {}
│ │ │ │ │ +        assert_unwind_safe::<HashMap<(), crate::cell::UnsafeCell<()>>>();
│ │ │ │ │ +    }
│ │ │ │ │ +
│ │ │ │ │      #[test]
│ │ │ │ │      fn test_zero_capacities() {
│ │ │ │ │          type HM = HashMap<i32, i32>;
│ │ │ │ │  
│ │ │ │ │          let m = HM::new();
│ │ │ │ │          assert_eq!(m.capacity(), 0);
│ │ ├── panic.rs
│ │ │ @@ -1,13 +1,14 @@
│ │ │  //! Panic support in the standard library.
│ │ │  
│ │ │  #![stable(feature = "std_panic", since = "1.9.0")]
│ │ │  
│ │ │  use crate::any::Any;
│ │ │  use crate::cell::UnsafeCell;
│ │ │ +use crate::collections;
│ │ │  use crate::fmt;
│ │ │  use crate::future::Future;
│ │ │  use crate::pin::Pin;
│ │ │  use crate::ops::{Deref, DerefMut};
│ │ │  use crate::panicking;
│ │ │  use crate::ptr::{Unique, NonNull};
│ │ │  use crate::rc::Rc;
│ │ │ @@ -281,14 +282,19 @@
│ │ │  #[stable(feature = "unwind_safe_atomic_refs", since = "1.14.0")]
│ │ │  impl RefUnwindSafe for atomic::AtomicBool {}
│ │ │  
│ │ │  #[cfg(target_has_atomic = "ptr")]
│ │ │  #[stable(feature = "unwind_safe_atomic_refs", since = "1.14.0")]
│ │ │  impl<T> RefUnwindSafe for atomic::AtomicPtr<T> {}
│ │ │  
│ │ │ +// https://github.com/rust-lang/rust/issues/62301
│ │ │ +#[stable(feature = "hashbrown", since = "1.36.0")]
│ │ │ +impl<K, V, S> UnwindSafe for collections::HashMap<K, V, S>
│ │ │ +    where K: UnwindSafe, V: UnwindSafe, S: UnwindSafe {}
│ │ │ +
│ │ │  #[stable(feature = "catch_unwind", since = "1.9.0")]
│ │ │  impl<T> Deref for AssertUnwindSafe<T> {
│ │ │      type Target = T;
│ │ │  
│ │ │      fn deref(&self) -> &T {
│ │ │          &self.0
│ │ │      }
├── version
│ @@ -1 +1 @@
│ -1.36.0 (9d98f8f31 2019-06-29)
│ +1.36.0 (a53f9df32 2019-07-03)
