- Released on: 3 March, 2016
- Branched from master on: 15 January, 2016
- Stabilized APIs
- checked, saturated, and overflowing operations
- and checked, saturated, and overflowing operations for other primitive types
- Validating UTF-8 is faster by a factor of between 7 and 14x for
ASCII input. This means that creating
strs from bytes is faster.
- The performance of
io::stdout) was improved by using
memchrto search for newlines.
f32::to_radiansare stable. The
f64variants 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,
Rangeare covariant over their contained type.
LinkedListand its iterators,
IntoIterare covariant over their contained type.
str::replacenow accepts a
Pattern, like other string searching methods.
Anyis implemented for unsized types.
Hashis implemented for
- 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.
--enable-new-dtagsto GNU ld. This makes any RPATH entries (emitted with
-C rpath) not take precedence over
cargo rustcaccepts a
--profileflag that runs
rustcunder any of the compilation profiles, ‘dev’, ‘bench’, or ’test’.
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
- 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.
- Borrows of closure parameters may not outlive the closure.