Vydání programovacího jazyka Rust 1.52

Bylo zveřejněno vydání systémového programovacího jazyka Rust 1.52, 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:

  • Odstraněna vazba na pořadí provádění příkazů „kontrola nákladu“ a „přistřihnutí nákladu“. Dříve volání "cargo clippy" po "cargo check" nespustilo obslužný program clippy (linter) kvůli chybějícímu oddělení mezipaměti pro tyto režimy kontroly. Nyní je tento problém vyřešen a na pořadí, ve kterém jsou volány „cargo clippy“ a „cargo check“, již nezáleží.
  • Nová část API byla převedena do stabilní kategorie, včetně následujících metod byly stabilizovány:
    • Argumenty::as_str
    • znak::MAX
    • char::REPLACEMENT_CHARACTER
    • char::UNICODE_VERSION
    • char::decode_utf16
    • char::from_digit
    • char::from_u32_unchecked
    • char::from_u32
    • slice::partition_point
    • str::rsplit_once
    • str::rozdělit_jednou
  • Atribut „const“, který určuje možnost jeho použití v libovolném kontextu místo konstant, se používá v metodách:
    • char::len_utf8
    • char::len_utf16
    • char::to_ascii_uppercase
    • char::to_ascii_lowercase
    • char::eq_ignore_ascii_case
    • u8::to_ascii_uppercase
    • u8::to_ascii_lowercase
    • u8::eq_ignore_ascii_case
  • Přidána kontrola lint unsafe_op_in_unsafe_fn, aby se zjistilo, zda je nebezpečný kód používaný v nebezpečných funkcích orámován nebezpečnými bloky.
  • Je povoleno přetypovat proměnné ukazatele na pole do tvaru ukazatelů na typ prvku pole. let mut x: [použití; 2] = [0, 0]; nechť p = &mut x jako *mut useize; nechť p = &mut x jako *const use;
  • Do clippy (linter) bylo přidáno 9 nových kontrol.
  • Správce cargo balíčků nyní podporuje pole „manifest_path“ v JSON pro balíčky. Do repozitáře crates.io byla přidána podpora pro specifikaci licenčních informací ve formátu SPDX 3.11.
  • Při spouštění testů je povoleno zadat více filtrů, například spuštěním "test nákladu - foo bar" se spustí všechny testy odpovídající maskám "foo" a "bar".
  • Výchozí sada nástrojů LLVM byla aktualizována na LLVM 12.
  • Třetí úroveň podpory byla implementována pro platformy s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl a powerpc-unknown-openbsd. 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ář