Mozilla 編程語言,Rust 1.4 發布
Rust 是 Mozilla 的一個新的編程語言,由web語言的領軍人物Brendan Eich(js之父),Dave Herman以及Mozilla公司的Graydon Hoare 合力開發。
創建這個新語言的目的是為了解決一個很頑疾的問題:軟件的演進速度大大低于硬件的演進,軟件在語言級別上無法真正利用多核計算帶來的性能提升。Rust是針對多核體系提出的語言,并且吸收一些其他動態語言的重要特性,比如不需要管理內存,比如不會出現Null指針等等。
特點:
-
零成本的抽象
-
移動語義
-
保證內存安全
-
線程沒有數據競爭
-
trait-based泛型
-
模式匹配
-
類型推斷
-
最小運行時
-
高效的C綁定
重點
-
Windows builds targeting the 64-bit MSVC ABI and linker (instead of GNU) are now supported and recommended for use.
重大更新
-
Several changes have been made to fix type soundness and improve the behavior of associated types. See RFC 1214. Although we have mostly introduced these changes as warnings this release, to become errors next release, there are still some scenarios that will see immediate breakage.
-
The
str::lines
andBufRead::lines
iterators treat\r\n
as line breaks in addition to\n
.
語言
-
use
statements that import multiple items can now rename them, as inuse foo::{bar as kitten, baz as puppy}
. -
pub extern crate
, which does not behave as expected, issues a warning until a better solution is found.
Libraries
-
Many APIs were stabilized:
<Box<str>>::into_string
,Arc::downgrade
,Arc::get_mut
,Arc::make_mut
,Arc::try_unwrap
,Box::from_raw
,Box::into_raw
,CStr::to_str
,CStr::to_string_lossy
,CString::from_raw
,CString::into_raw
,IntoRawFd::into_raw_fd
,IntoRawFd
,IntoRawHandle::into_raw_handle
,IntoRawHandle
,IntoRawSocket::into_raw_socket
,IntoRawSocket
,Rc::downgrade
,Rc::get_mut
,Rc::make_mut
,Rc::try_unwrap
,Result::expect
,String::into_boxed_str
,TcpStream::read_timeout
,TcpStream::set_read_timeout
,TcpStream::set_write_timeout
,TcpStream::write_timeout
,UdpSocket::read_timeout
,UdpSocket::set_read_timeout
,UdpSocket::set_write_timeout
,UdpSocket::write_timeout
,Vec::append
,Vec::split_off
,VecDeque::append
,VecDeque::retain
,VecDeque::split_off
,rc::Weak::upgrade
,rc::Weak
,slice::Iter::as_slice
,slice::IterMut::into_slice
,str::CharIndices::as_str
,str::Chars::as_str
,str::split_at_mut
,str::split_at
,sync::Weak::upgrade
,sync::Weak
,thread::park_timeout
,thread::sleep
. -
Some APIs were deprecated:
BTreeMap::with_b
,BTreeSet::with_b
,Option::as_mut_slice
,Option::as_slice
,Result::as_mut_slice
,Result::as_slice
,f32::from_str_radix
,f64::from_str_radix
. -
Reverse-searching strings is faster with the 'two-way' algorithm.
-
The
Windows
,Chunks
, andChunksMut
iterators over slices alloverridecount
,nth
andlast
with an O(1) implementation. -
Extend<String>
andFromIterator<String
are both implemented forString
. -
HashMap
andHashSet
implementExtend<&T>
whereT: Copy
as part of RFC 839. -
extern fn
s of with the "Rust" and "C" ABIs implement common traits includingEq
,Ord
,Debug
,Hash
. -
&mut T
whereT: Write
also implementsWrite
. -
A stable regression in
VecDec::push_back
that caused panics for zero-sized types was fixed.
Miscellaneous
-
The compiler no longer uses the 'morestack' feature to prevent stack overflow. Instead it uses guard pages and stack probes (though stack probes are not yet implemented on any platform but Windows).
-
The compiler matches traits faster when projections are involved.
-
The 'improper_ctypes' lint no longer warns about use of
isize
andusize
. -
Cargo now displays useful information about what its doing during
cargo update
.
更新日志:RELEASES.md
下載地址:1.4.0