Tým vývojářů s radostí představuje Rust 1.36!
Co je nového v Rust 1.36?
A teď podrobněji:
- V Rust 1.36 konečně byl stabilizován trait Future.
- Crate alloc.
Od Rust 1.36, části std, které závisí na globálním alokátoru (například Vec), jsou v crate alloc. Nyní std znovu exportuje tyto části. Více o tom. - MaybeUninit namísto mem::uninitialized.
V předchozích verzích mem::uninitialized umožňoval obejít kontrolu inicializace, používalo se to pro lenivou alokaci polí, ale tato funkce je poměrně nebezpečná (více informací), takže byl stabilizován typ MaybeUninit, který je bezpečnější.
A protože MaybeUninit je bezpečnější alternativou, od Rust 1.38 bude mem::uninitialized deprekovaná.
Pokud se chcete dozvědět více o neinicializované paměti, můžete si přečíst příspěvek na blogu (Alexis Beingessner). - NLL pro Rust 2015.
V oznámení Rust 1.31.0 vývojáři nám vyprávěli o NLL (Non-Lexical Lifetime), vylepšení jazyka, které dělá borrow checker chytřejším a uživatelsky přívětivějším. Příklad:
fn main() {
let mut x = 5;
let y = &x;
let z = &mut x; // Toto nebylo povoleno před 1.31.0.
}V 1.31.0 NLL fungoval pouze v Rust 2018, s příslibem, že vývojáři přidají podporu i pro Rust 2015.
Pokud se chcete dozvědět více o NLL, můžete si přečíst více v této blogovém příspěvku (Felix Klocks). - Nový flag pro Cargo — —offline.
V Rust 1.36 byl stabilizován nový flag pro Cargo. Flag —offline říká Cargo, aby používal místně uložené závislosti, aby je bylo možné použít později bez internetu. Když potřebné závislosti nejsou dostupné offline, a pokud internet je potřeba, Cargo vrátí chybu. Pro předchozí stažení závislostí lze použít příkaz cargo fetch, který stáhne všechny závislosti. - Zde můžete si přečíst podrobnější přehled změn.
Taktéž došlo ke změnám ve standardní knihovně:
- Nyní může makro dbg!() přijímat více argumentů.
- Některé API jsou nyní označeny jako const:
- Nové API, která byla stabilizována:
- Další změny ve standardní knihovně můžete najít zde.
Další změny Rust, Cargo a Clippy.
Zdroj: linux.org.ru
