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