Rilis Rust 1.41.0: jaminan baru untuk Box di FFI, peningkatan dalam pemasangan kargo, mengurangi batasan untuk sifat

Tim Rust senang mengumumkan rilis versi baru, 1.41.0. Rust adalah bahasa pemrograman yang memungkinkan semua orang membuat perangkat lunak yang andal dan efisien.


Jika Anda menginstal versi Rust menggunakan alat sebelumnya rustup, maka untuk meningkatkan ke versi 1.41.0 Anda hanya perlu menjalankan perintah berikut:


rustup update stable

Jika Anda belum menginstalnya rustup, Anda dapat menginstalnya dari halaman yang sesuai di situs web kami, serta melihat catatan rilis terperinci di GitHub.


Apa yang termasuk dalam versi stabil 1.41.0


Inovasi utama dari Rust 1.41.0 adalah pelonggaran pembatasan implementasi sifat-sifat, peningkatan cargo install, format file baru yang Cargo.locklebih ramah untuk digunakan git, dan jaminan baru bagi mereka yang Box<T>terkait dengan FFI. Lihat catatan rilis untuk informasi lebih lanjut.


Mempermudah pembatasan pada implementasi sifat-sifat


, , 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.lock


, 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 :


// C header */

//     
struct Foo* foo_new(void);

//     ; no-op   NULL.
void foo_delete(struct Foo*);

โ€ฆ Rust :


#[repr(C)]
pub struct Foo;

#[no_mangle]
pub extern "C" fn foo_new() -> Box<Foo> {
    Box::new(Foo)
}

//   NULL    `Option<_>`.
#[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, :



32- Apple


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.

Source: https://habr.com/ru/post/undefined/


All Articles