Version 1.10.0 (2016-07-07)
Language
- Copytypes are required to have a trivial implementation of- Clone. RFC 1521.
- Single-variant enums support the #[repr(..)]attribute.
- Fix #[derive(RustcEncodable)]in the presence of otherencodemethods.
- panic!can be converted to a runtime abort with the- -C panic=abortflag. RFC 1513.
- Add a new crate type, 'cdylib'. cdylibs are dynamic libraries suitable for loading by non-Rust hosts. RFC 1510. Note that Cargo does not yet directly support cdylibs.
Stabilized APIs
- os::windows::fs::OpenOptionsExt::access_mode
- os::windows::fs::OpenOptionsExt::share_mode
- os::windows::fs::OpenOptionsExt::custom_flags
- os::windows::fs::OpenOptionsExt::attributes
- os::windows::fs::OpenOptionsExt::security_qos_flags
- os::unix::fs::OpenOptionsExt::custom_flags
- sync::Weak::new
- Default for sync::Weak
- panic::set_hook
- panic::take_hook
- panic::PanicInfo
- panic::PanicInfo::payload
- panic::PanicInfo::location
- panic::Location
- panic::Location::file
- panic::Location::line
- ffi::CStr::from_bytes_with_nul
- ffi::CStr::from_bytes_with_nul_unchecked
- ffi::FromBytesWithNulError
- fs::Metadata::modified
- fs::Metadata::accessed
- fs::Metadata::created
- sync::atomic::Atomic{Usize,Isize,Bool,Ptr}::compare_exchange
- sync::atomic::Atomic{Usize,Isize,Bool,Ptr}::compare_exchange_weak
- collections::{btree,hash}_map::{Occupied,Vacant,}Entry::key
- os::unix::net::{UnixStream, UnixListener, UnixDatagram, SocketAddr}
- SocketAddr::is_unnamed
- SocketAddr::as_pathname
- UnixStream::connect
- UnixStream::pair
- UnixStream::try_clone
- UnixStream::local_addr
- UnixStream::peer_addr
- UnixStream::set_read_timeout
- UnixStream::set_write_timeout
- UnixStream::read_timeout
- UnixStream::write_timeout
- UnixStream::set_nonblocking
- UnixStream::take_error
- UnixStream::shutdown
- Read/Write/RawFd impls for UnixStream
- UnixListener::bind
- UnixListener::accept
- UnixListener::try_clone
- UnixListener::local_addr
- UnixListener::set_nonblocking
- UnixListener::take_error
- UnixListener::incoming
- RawFd impls for UnixListener
- UnixDatagram::bind
- UnixDatagram::unbound
- UnixDatagram::pair
- UnixDatagram::connect
- UnixDatagram::try_clone
- UnixDatagram::local_addr
- UnixDatagram::peer_addr
- UnixDatagram::recv_from
- UnixDatagram::recv
- UnixDatagram::send_to
- UnixDatagram::send
- UnixDatagram::set_read_timeout
- UnixDatagram::set_write_timeout
- UnixDatagram::read_timeout
- UnixDatagram::write_timeout
- UnixDatagram::set_nonblocking
- UnixDatagram::take_error
- UnixDatagram::shutdown
- RawFd impls for UnixDatagram
- {BTree,Hash}Map::values_mut
- <[_]>::binary_search_by_key
Libraries
- The abs_submethod of floats is deprecated. The semantics of this minor method are subtle and probably not what most people want.
- Add implementation of Ord for Celland RefCell .where T: Ord 
- On Linux, if HashMaps can't be initialized withgetrandomthey will fall back to/dev/urandomtemporarily to avoid blocking during early boot.
- Implemented negation for wrapping numerals.
- Implement Cloneforbinary_heap::IntoIter.
- Implement DisplayandHashforstd::num::Wrapping.
- Add Defaultimplementation for&CStr,CString.
- Implement From<Vec<T>>andInto<Vec<T>>forVecDeque<T>.
- Implement DefaultforUnsafeCell,fmt::Error,Condvar,Mutex,RwLock.
Cargo
- Cargo.toml supports the profile.*.panicoption. This controls the runtime behavior of thepanic!macro and can be either "unwind" (the default), or "abort". RFC 1513.
- Don't throw away errors with -parguments.
- Report status to stderr instead of stdout.
- Build scripts are passed a CARGO_MANIFEST_LINKSenvironment variable that corresponds to thelinksfield of the manifest.
- Ban keywords from crate names.
- Canonicalize CARGO_HOMEon Windows.
- Retry network requests.
By default they are retried twice, which can be customized with the
net.retryvalue in.cargo/config.
- Don't print extra error info for failing subcommands.
- Add --forceflag tocargo install.
- Don't use flockon NFS mounts.
- Prefer building cargo installartifacts in temporary directories. Makes it possible to install multiple crates in parallel.
- Add cargo test --doc.
- Add cargo --explain.
- Don't print warnings when -qis passed.
- Add cargo doc --liband--bin.
- Don't require build script output to be UTF-8.
- Correctly attempt multiple git usernames.
Performance
- rustc memory usage was reduced by refactoring the context used for type checking.
- Speed up creation of HashMaps by caching the random keys used to initialize the hash state.
- The findimplementation forChainiterators is 2x faster.
- Trait selection optimizations speed up type checking by 15%.
- Efficient trie lookup for boolean Unicode properties. 10x faster than the previous lookup tables.
- Special case #[derive(Copy, Clone)]to avoid bloat.
Usability
- Many incremental improvements to documentation and rustdoc.
- rustdoc: List blanket trait impls.
- rustdoc: Clean up ABI rendering.
- Indexing with the wrong type produces a more informative error.
- Improve diagnostics for constants being used in irrefutable patterns.
- When many method candidates are in scope limit the suggestions to 10.
- Remove confusing suggestion when calling a fntype.
- Do not suggest changing &mut selfto&mut mut self.
Misc
- Update i686-linux-android features to match Android ABI.
- Update aarch64-linux-android features to match Android ABI.
- stdno longer prints backtraces on platforms where the running module must be loaded with- env::current_exe, which can't be relied on.
- This release includes std binaries for the i586-unknown-linux-gnu, i686-unknown-linux-musl, and armv7-linux-androideabi targets. The i586 target is for old x86 hardware without SSE2, and the armv7 target is for Android running on modern ARM architectures.
- The rust-gdbandrust-lldbscripts are distributed on all Unix platforms.
- On Unix the runtime aborts by calling libc::abortinstead of generating an illegal instruction.
- Rust is now bootstrapped from the previous release of Rust, instead of a snapshot from an arbitrary commit.
Compatibility Notes
- AtomicBoolis now bool-sized, not word-sized.
- target_envfor Linux ARM targets is just- gnu, not- gnueabihf,- gnueabi, etc.
- Consistently panic on overflow in Duration::new.
- Change String::truncateto panic less.
- Add :blockto the follow set for:tyand:path. Affects how macros are parsed.
- Fix macro hygiene bug.
- Feature-gated attributes on macro-generated macro invocations are now rejected.
- Suppress fallback and ambiguity errors during type inference. This caused some minor changes to type inference.