Vydanie programovacieho jazyka Rust 2021 (1.56)

Vyšlo vydanie systémového programovacieho jazyka Rust 1.56, založeného projektom Mozilla, no teraz vyvinutého pod záštitou nezávislej neziskovej organizácie Rust Foundation. Okrem bežného čísla verzie je vydanie označené aj ako Rust 2021 a predstavuje stabilizáciu zmien navrhnutých za posledné tri roky. Rust 2021 bude slúžiť aj ako základ pre zvýšenie funkčnosti počas nasledujúcich troch rokov, podobne ako sa vydanie Rust 2018 stalo základom pre vývoj jazyka v posledných troch rokoch.

V záujme zachovania kompatibility môžu vývojári vo svojich programoch používať štítky „2015“, „2018“ a „2021“, ktoré umožňujú prepojenie programov s jazykovými časťami zodpovedajúcimi vybraným vydaniam Rustu. Vydania boli zavedené na oddelenie nekompatibilných zmien a konfigurujú sa v metaúdajoch nákladných balíkov prostredníctvom poľa „edícia“ v sekcii „[balík]“. Napríklad vydanie „2018“ obsahuje funkcie stabilizované ku koncu roka 2018 a zahŕňa aj všetky ďalšie zmeny, ktoré nenarušia kompatibilitu. Vydanie 2021 navyše obsahuje funkcie narúšajúce interoperabilitu navrhnuté v aktuálnom vydaní 1.56 a schválené na budúcu implementáciu. Okrem samotného jazyka editori zohľadňujú aj stav nástrojov a dokumentácie.

Hlavné nekompatibility zaznamenané v Rust 2021:

  • Samostatný záznam v uzáveroch – uzávery teraz môžu zachytávať názvy jednotlivých polí namiesto celého identifikátora. Napríklad "|| sekera + 1“ zachytí iba „sekeru“ namiesto „a“.
  • Vlastnosť IntoIterator pre polia: array.into_iter() vám umožňuje iterovať prvky poľa podľa hodnôt, a nie podľa odkazov.
  • Spracovanie výrazov „|“ bolo zmenené v makro_rules (Boolean OR) vo vzoroch – Špecifikátor „:pat“ v zhodách teraz rešpektuje „A | B".
  • Správca nákladných balíkov štandardne obsahuje druhú verziu prekladača funkcií, ktorej podpora sa objavila v Rust 1.51.
  • Vlastnosti TryFrom, TryInto a FromIterator boli pridané do modulu štandardnej knižnice prelude.
  • Makrá panika!(..) a tvrdiť!(expr, ..) teraz vždy používajú format_args!(..) na formátovanie reťazcov, podobne ako println!().
  • Výrazy ident#, ident»..." a ident'...' sú vyhradené v syntaxi jazyka.
  • Upozornenia bare_trait_objects a ellipsis_inclusive_range_patterns boli presunuté na chyby.

Novinka v Rust 1.56:

  • V Cargo.toml v sekcii “[package]” bolo pridané pole rust-version, cez ktoré môžete určiť minimálnu podporovanú verziu Rust pre balík prepravky. Ak aktuálna verzia nezodpovedá zadanému parametru, Cargo prestane fungovať s chybovým hlásením.
  • Pri porovnávaní vzorov pomocou výrazov "binding @ pattern" je poskytovaná podpora pre špecifikovanie ďalších väzieb (napríklad "let matrix @ Matrix { row_len, .. } = get_matrix();").
  • Nová časť API bola presunutá do kategórie stabilných, vrátane metód a implementácií vlastností boli stabilizované:
    • std::os::unix::fs::chroot
    • UnsafeCell::raw_get
    • BufWriter::into_parts
    • core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • Vec::zmenšiť_na
    • Reťazec::shrink_to
    • OsString::shrink_to
    • PathBuf::shrink_to
    • BinaryHeap::shrink_to
    • VecDeque::shrink_to
    • HashMap::shrink_to
    • HashSet::shrink_to
  • Vo funkciách sa používa atribút „const“, ktorý určuje možnosť použitia v akomkoľvek kontexte namiesto konštánt
    • std::mem::transmute
    • [T]:: prvý
    • [T]::split_first
    • [T]:: posledný
    • [T]::rozdeliť_posledný
  • Kompilátor bol prepnutý na používanie LLVM verzie 13.
  • Druhá úroveň podpory bola implementovaná pre platformu aarch64-apple-ios-sim a tretia úroveň pre platformy powerpc-unknown-freebsd a riscv32imc-esp-espidf. 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ť.

Pripomeňme, že Rust sa zameriava na bezpečnosť pamäte, poskytuje automatickú správu pamäte a poskytuje prostriedky na dosiahnutie vysokej paralelnosti pri vykonávaní úloh bez použitia garbage collectora alebo runtime (beh 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.

Zdroj: opennet.ru

Pridať komentár