Rust 1.41.0 Release: Neue Garantien für Box in FFI, Verbesserungen bei der Frachtinstallation, Lockerung der Einschränkungen für Merkmale

Das Rust-Team freut sich, die Veröffentlichung einer neuen Version 1.41.0 bekannt zu geben. Rust ist eine Programmiersprache, mit der jeder zuverlässige und effiziente Software erstellen kann.


Wenn Sie die vorherige Version von Rust mit Tools installiert haben rustup, müssen Sie zum Upgrade auf Version 1.41.0 nur den folgenden Befehl ausführen:


rustup update stable

Wenn Sie es noch nicht installiert haben rustup, können Sie es auf der entsprechenden Seite unserer Website installieren und detaillierte Versionshinweise auf GitHub lesen.


Was ist in der stabilen Version 1.41.0 enthalten


Die wichtigsten Neuerungen von Rust 1.41.0 die Lockerung der Beschränkungen für die Umsetzung der Merkmale sind Verbesserungen cargo install, das neue Dateiformat Cargo.lockist freundlicher zu der Arbeit mit gitund neuen Garantien für diejenigen Box<T>mit FFI verbunden. Siehe Release Notes für weitere Informationen.


Lockerung der Einschränkungen bei der Umsetzung von Merkmalen


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