Vydání programovacího jazyka Rust 1.55

Bylo zveřejněno vydání systémového programovacího jazyka Rust 1.55, založeného projektem Mozilla, ale nyní vyvíjeného pod záštitou nezávislé neziskové organizace Rust Foundation. Jazyk se zaměřuje na bezpečnost paměti, poskytuje automatickou správu paměti a poskytuje prostředky k dosažení vysokého paralelismu úloh bez použití garbage collectoru nebo runtime (runtime je redukováno na základní inicializaci a údržbu standardní knihovny).

Automatická správa paměti Rust eliminuje chyby při manipulaci s ukazateli a chrání před problémy vyplývajícími z manipulace s pamětí na nízké úrovni, jako je přístup k oblasti paměti po jejím uvolnění, dereference nulového ukazatele, přetečení vyrovnávací paměti atd. Pro distribuci knihoven, zajištění sestavování a správu závislostí projekt vyvíjí správce balíčků Cargo. Úložiště crates.io je podporováno pro hostování knihoven.

Hlavní inovace:

  • Správce balíčků Cargo má schopnost sloučit duplicitní chyby a varování, ke kterým dochází během sestavování. Při provádění příkazů, jako je „test nákladu“ a „kontrola nákladu --all-targets“, které vedou k více sestavení balíčku s různými parametry, se nyní uživateli namísto zobrazení zobrazí souhrn výskytu opakujícího se problému. více identických varování při opakovaném budování stejné věci. $ cargo +1.55.0 check —all-targets Kontrola foo v0.1.0 varování: funkce se nikdy nepoužívá: ‘foo’ —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = note: '#[warn(dead_code)]' zapnuto ve výchozím nastavení varování: 'foo' (lib) vygenerováno 1 varování: 'foo' (test lib) vygenerováno 1 varování (1 duplikát) Dokončeno vývoj [unoptimized + debuginfo] cíl (s) za 0.84 s
  • Kód analýzy s pohyblivou řádovou čárkou ve standardní knihovně byl přesunut tak, aby používal rychlejší a přesnější algoritmus Eisel-Lemire, který vyřešil některé dříve pozorované problémy se zaokrouhlováním a analýzou čísel s velmi velkým počtem číslic.
  • Možnost specifikovat neuzavřené rozsahy v šablonách byla stabilizována („X..“ je interpretováno jako rozsah, který začíná hodnotou X a končí maximální hodnotou typu integer): match x jako u32 { 0 => println! (“nula!”), 1.. => println!("kladné číslo!"), }
  • Rozšířené varianty chyb pokryté std::io::ErrorKind (klasifikuje chyby do kategorií, jako je NotFound a WouldBlock). Dříve chyby, které se nevešly do existujících kategorií, spadaly do kategorie ErrorKind::Other, která se používala i pro chyby v kódu třetích stran. Nyní existuje samostatná interní kategorie ErrorKind::Uncategorized pro chyby, které se nevejdou do existujících kategorií, a kategorie ErrorKind::Other je omezena na chyby, které se nevyskytují ve standardní knihovně (standardní funkce knihovny, které vracejí io::Error již nepoužívejte kategorii ErrorKind:: Other).
  • Nová část API byla přesunuta do kategorie stabilní, včetně metod a implementací vlastností byly stabilizovány:
    • Vázaný::klonovaný
    • Drain::as_str
    • IntoInnerError::into_error
    • IntoInnerError::into_parts
    • MaybeUninit::assume_init_mut
    • MaybeUninit::assume_init_ref
    • MaybeUninit::pište
    • pole::map
    • ops::ControlFlow
    • x86::_bittest
    • x86::_bittestandcomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • Atribut „const“, který určuje možnost jeho použití v libovolném kontextu místo konstant, se používá v metodě str::from_utf8_unchecked.
  • Třetí úroveň podpory byla implementována pro platformu powerpc64le-unknown-freebsd. Třetí úroveň zahrnuje základní podporu, ale bez automatického testování, publikování oficiálních sestavení nebo kontroly, zda lze kód sestavit.

Zdroj: opennet.ru

Přidat komentář