A equipe Rust tem o prazer de anunciar o lançamento de uma nova versão, 1.41.0. Rust é uma linguagem de programação que permite a todos criar software confiável e eficiente.
Se você instalou a versão anterior do Rust usando ferramentas rustup, para atualizar para a versão 1.41.0, basta executar o seguinte comando:
rustup update stable
Se você ainda não o instalou rustup, pode instalá-lo na página correspondente do nosso site, bem como ver notas de versão detalhadas no GitHub.
O que está incluído na versão estável 1.41.0
As principais inovações do Rust 1.41.0 são a redução de restrições na implementação de características, melhorias cargo install, o novo formato de arquivo é Cargo.lockmais amigável de se trabalhar gite novas garantias para os Box<T>associados ao FFI. Veja as notas de versão para mais informações.
Facilitando as restrições na implementação de características
, , Rust (orphan rule). , , , , .. . , .
Rust 1.41.0 , . , BetterVec<T>, Vec<T> . :
impl<T> From<BetterVec<T>> for Vec<T> {
}
… :
impl<T> ForeignTrait<LocalType> for ForeignType<T> {
}
Rust 1.40.0 impl , From Vec , . , newtype, .
From Vec , ( From) . , Rust 1.41.0 impl.
RFC.
cargo install
cargo install . CLI-, Rust.
Rust 1.41.0, cargo install , . --force, .
, Cargo Cargo.lock, . , .
Rust 1.41.0 , . lock-, . , , PR, .
Box<T> FFI
Rust 1.41.0, , Box<T>, T: Sized, ABI C (T*). , extern "C" Rust C, Rust Box<T> - T, T* C. , C :
struct Foo* foo_new(void);
void foo_delete(struct Foo*);
… Rust :
#[repr(C)]
pub struct Foo;
#[no_mangle]
pub extern "C" fn foo_new() -> Box<Foo> {
Box::new(Foo)
}
#[no_mangle]
pub extern "C" fn foo_delete(_: Option<Box<Foo>>) {}
, , Box<T> T* ABI, Box<T> -null, . , — Box', .
: Box<T> , C, Rust. C. Box<T>, C T* .
, Box<T>.
Rust 1.41.0, :
Rust 1.41.0 32- Apple, i686-apple-darwin. Rust 1.42.0 .
.
, Cargo Clippy . MIR, : "Inside Rust".
1.41.0
, Rust 1.41.0. , !
Rust - .
andreevlex, blandger, funkill, P0lunin nlinker.