Version 1.7.0 (2016-03-03)
Libraries
- Stabilized APIs
PathPath::strip_prefix(renamed from relative_from)path::StripPrefixError(new error type returned from strip_prefix)
Ipv4AddrIpv6AddrVecString- Slices
<[T]>::clone_from_slice, which now requires the two slices to be the same length<[T]>::sort_by_key
- checked, saturated, and overflowing operations
i32::checked_rem,i32::checked_neg,i32::checked_shl,i32::checked_shri32::saturating_muli32::overflowing_add,i32::overflowing_sub,i32::overflowing_mul,i32::overflowing_divi32::overflowing_rem,i32::overflowing_neg,i32::overflowing_shl,i32::overflowing_shru32::checked_rem,u32::checked_neg,u32::checked_shl,u32::checked_shlu32::saturating_mulu32::overflowing_add,u32::overflowing_sub,u32::overflowing_mul,u32::overflowing_divu32::overflowing_rem,u32::overflowing_neg,u32::overflowing_shl,u32::overflowing_shr- and checked, saturated, and overflowing operations for other primitive types
- FFI
ffi::IntoStringErrorCString::into_stringCString::into_bytesCString::into_bytes_with_nulFrom<CString> for Vec<u8>
IntoStringErrorIntoStringError::into_cstringIntoStringError::utf8_errorError for IntoStringError
- Hashing
- Validating UTF-8 is faster by a factor of between 7 and 14x for
ASCII input. This means that creating
Strings andstrs from bytes is faster. - The performance of
LineWriter(and thusio::stdout) was improved by usingmemchrto search for newlines. f32::to_degreesandf32::to_radiansare stable. Thef64variants were stabilized previously.BTreeMapwas rewritten to use less memory and improve the performance of insertion and iteration, the latter by as much as 5x.BTreeSetand its iterators,Iter,IntoIter, andRangeare covariant over their contained type.LinkedListand its iterators,IterandIntoIterare covariant over their contained type.str::replacenow accepts aPattern, like other string searching methods.Anyis implemented for unsized types.Hashis implemented forDuration.
Misc
- When running tests with
--test, rustdoc will pass--cfgarguments to the compiler. - The compiler is built with RPATH information by default.
This means that it will be possible to run
rustcwhen installed in unusual configurations without configuring the dynamic linker search path explicitly. rustcpasses--enable-new-dtagsto GNU ld. This makes any RPATH entries (emitted with-C rpath) not take precedence overLD_LIBRARY_PATH.
Cargo
cargo rustcaccepts a--profileflag that runsrustcunder any of the compilation profiles, 'dev', 'bench', or 'test'.- The
rerun-if-changedbuild script directive no longer causes the build script to incorrectly run twice in certain scenarios.
Compatibility Notes
- Soundness fixes to the interactions between associated types and lifetimes, specified in RFC 1214, now generate errors for code that violates the new rules. This is a significant change that is known to break existing code, so it has emitted warnings for the new error cases since 1.4 to give crate authors time to adapt. The details of what is changing are subtle; read the RFC for more.
- Several bugs in the compiler's visibility calculations were
fixed. Since this was found to break significant amounts of
code, the new errors will be emitted as warnings for several release
cycles, under the
private_in_publiclint. - Defaulted type parameters were accidentally accepted in positions that were not intended. In this release, defaulted type parameters appearing outside of type definitions will generate a warning, which will become an error in future releases.
- Parsing "." as a float results in an error instead of 0.
That is,
".".parse::<f32>()returnsErr, notOk(0.0). - Borrows of closure parameters may not outlive the closure.