Vydanie programovacieho jazyka Rust 1.52

Vyšlo vydanie systémového programovacieho jazyka Rust 1.52, založeného projektom Mozilla, no teraz vyvinutého pod záštitou nezávislej neziskovej organizácie Rust Foundation. Jazyk sa zameriava na bezpečnosť pamäte, poskytuje automatickú správu pamäte a poskytuje prostriedky na dosiahnutie vysokého paralelizmu úloh bez použitia garbage collectora alebo runtime (runtime je zredukované na základnú inicializáciu a údržbu štandardnej knižnice).

Automatická správa pamäte Rust eliminuje chyby pri manipulácii s ukazovateľmi a chráni pred problémami vznikajúcimi pri manipulácii s pamäťou na nízkej úrovni, ako je prístup k oblasti pamäte po jej uvoľnení, dereferencie nulového ukazovateľa, pretečenie vyrovnávacej pamäte atď. Na distribúciu knižníc, zabezpečenie montáže a správu závislostí projekt vyvíja správcu balíkov Cargo. Úložisko crates.io je podporované pre hosťovanie knižníc.

Hlavné inovácie:

  • Odstránená väzba na poradie vykonávania príkazov „kontrola nákladu“ a „clippy nákladu“. Predtým volanie "cargo clippy" po "cargo check" nespustilo obslužný program clippy (linter) kvôli nedostatku oddelenia vyrovnávacej pamäte pre tieto režimy kontroly. Teraz je tento problém vyriešený a na poradí, v ktorom sa volajú „nákladová kontrola“ a „kontrola nákladu“, už nezáleží.
  • Nová časť API bola presunutá do stabilnej kategórie, vrátane nasledujúcich metód boli stabilizované:
    • 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::rozdeliť_raz
  • Atribút „const“, ktorý určuje možnosť jeho použitia v akomkoľvek kontexte namiesto konštánt, sa používa v metódach:
    • 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
  • Pridaná kontrola lint unsafe_op_in_unsafe_fn na určenie, či je nebezpečný kód používaný v nebezpečných funkciách orámovaný nebezpečnými blokmi.
  • Je povolené prenášať meniteľné ukazovatele na polia do tvaru ukazovateľov na typ prvku poľa. nech mut x: [použitie; 2] = [0, 0]; nech p = &mut x ako *mut useize; nech p = &mut x ako *const use;
  • Do clippy (linter) bolo pridaných 9 nových kontrol.
  • Správca nákladných balíkov teraz podporuje pole „manifest_path“ v JSON pre balíky. Pridaná podpora pre špecifikáciu licenčných informácií vo formáte SPDX 3.11 do úložiska crates.io.
  • Pri spúšťaní testov je povolené zadať viacero filtrov, napríklad spustením „test nákladu – bar foo“ sa spustia všetky testy zodpovedajúce maskám „foo“ a „bar“.
  • Predvolená sada nástrojov LLVM bola aktualizovaná na LLVM 12.
  • Tretia úroveň podpory bola implementovaná pre platformy s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl a powerpc-unknown-openbsd. Tretia úroveň zahŕňa základnú podporu, ale bez automatického testovania, zverejňovania oficiálnych verzií alebo kontroly, či je možné kód zostaviť.

Zdroj: opennet.ru

Pridať komentár