Rust 1.6 發布,libcore 變穩定
Rust 是 Mozilla 的一個新的編程語言,由web語言的領軍人物Brendan Eich(js之父),Dave Herman以及Mozilla公司的Graydon Hoare 合力開發。
Rust 1.6 發布,該版本最主要的新特性是 libcore 變穩定,主要更新如下:
Language
The
#![no_std]attribute causes a crate to not be linked to the standard library, but only the core library, as described in RFC 1184. The core library defines common types and traits but has no platform dependencies whatsoever, and is the basis for Rust software in environments that cannot support a full port of the standard library, such as operating systems. Most of the core library is now stable.
Libraries
Stabilized APIs:
Read::read_exact,ErrorKind::UnexpectedEof,fs::DirBuilder,fs::DirBuilder::new,fs::DirBuilder::recursive,fs::DirBuilder::create,os::unix::fs::DirBuilderExt,os::unix::fs::DirBuilderExt::mode,vec::Drain,vec::Vec::drain,string::Drain,string::String::drain,vec_deque::Drain,vec_deque::VecDeque::drain,collections::hash_map::Drain,collections::hash_map::HashMap::drain,collections::hash_set::Drain,collections::hash_set::HashSet::drain,collections::binary_heap::Drain,collections::binary_heap::BinaryHeap::drain,Vec::extend_from_slice,Mutex::get_mut,Mutex::into_inner,RwLock::get_mut,RwLock::into_inner,Iterator::min_by_key,Iterator::max_by_key.The core library is stable, as are most of its APIs.
The
assert_eq!macro supports arguments that don't implementSized, such as arrays. In this way it behaves more likeassert!.Several timer functions that take duration in milliseconds are deprecated in favor of those that take
Duration. These includeCondvar::wait_timeout_ms,thread::sleep_ms, andthread_park_timeout_ms.The algorithm by which
Vecreserves additional elements wastweaked to not allocate excessive space while still growing exponentially.Fromconversions are implemented from integers to floatsin cases where the conversion is lossless. Thus they are not implemented for 32-bit ints tof32, nor for 64-bit ints tof32orf64. They are also not implemented forisizeandusizebecause the implementations would be platform-specific.Fromis also implemented fromf32tof64.From<&Path>andFrom<PathBuf>are implemented forCow<Path>.From<T>is implemented forBox<T>,Rc<T>andArc<T>.IntoIteratoris implemented for&PathBufand&Path.BinaryHeapwas refactored for modest performance improvements.Sorting slices that are already sorted is 50% faster in some cases.
Cargo
Cargo will look in
$CARGO_HOME/binfor subcommands by default.Cargo build scripts can specify their dependencies by emitting the
rerun-if-changedkey.crates.io will reject publication of crates with dependencies that have a wildcard version constraint. Crates with wildcard dependencies were seen to cause a variety of problems, as described in RFC 1241. Disallowing them will create more predictable development experience and a more stable ecosystem. Since 1.5 publication of such crates has emitted a warning.
cargo cleanaccepts a--releaseflag to clean the release folder. A variety of artifacts that Cargo failed to clean are now correctly deleted.
Misc
The
unreachable_codelint warns when a function call's argument diverges.The parser indicates failures that may be caused by confusingly-similar Unicode characters
Certain macro errors are reported at definition time, not expansion.
Compatibility Notes
The compiler no longer makes use of the
RUST_PATHenvironment variable when locating crates. This was a pre-cargo feature for integrating with the package manager that was accidentally never removed.A number of bugs were fixed in the privacy checker that could cause previously-accepted code to break.
Bugs in pattern matching unit structs were fixed: the tuple struct pattern syntax (
Foo(..)) no longer can be used with unit structs; patterns that share the same name as a const are now an error.A bug was fixed that causes rustc not to apply default type parameters when resolving certain method implementations of traits defined in other crates.
更多內容請看:release notes。
下載頁面:1.6.0
來自: http://www.oschina.net//news/70107/rust-1-6