Changelog:
Version 1.25.0 (2018-03-29)
Language
Stabilised #[repr(align(x))]. RFC 1358
You can now use nested groups of imports. e.g. use std::{fs::File, io::Read, path::{Path, PathBuf}};
You can now have | at the start of a match arm. e.g.
enum Foo { A, B, C }
fn main() {
let x = Foo::A;
match x {
| Foo::A
| Foo::B => println!("AB"),
| Foo::C => println!("C"),
}
}
Compiler
Upgraded to LLVM 6.
Added -C lto=val option.
Added i586-unknown-linux-musl target
Libraries
Impl Send for process::Command on Unix.
Impl PartialEq and Eq for ParseCharError.
UnsafeCell::into_inner is now safe.
Implement libstd for CloudABI.
Float::{from_bits, to_bits} is now available in libcore.
Implement AsRef<Path> for Component
Implemented Write for Cursor<&mut Vec<u8>>
Moved Duration to libcore.
Stabilized APIs
Location::column
ptr::NonNull
The following functions can now be used in a constant expression. eg. static MINUTE: Duration = Duration::from_secs(60);
Duration::new
Duration::from_secs
Duration::from_millis
Cargo
cargo new no longer removes rust or rs prefixs/suffixs.
cargo new now defaults to creating a binary crate, instead of a library crate.
Misc
Rust by example is now shipped with new releases
Compatibility Notes
Deprecated net::lookup_host.
rustdoc has switched to pulldown as the default markdown renderer.
The borrow checker was sometimes incorrectly permitting overlapping borrows around indexing operations (see #47349). This has been fixed (which also enabled some correct code that used to cause errors (e.g. #33903 and #46095).
Removed deprecated unstable attribute #[simd].