Vydanie programovacieho jazyka Rust 1.46

publikovaný vydanie 1.46 systémového programovacieho jazyka Hrdza, ktorú založil projekt Mozilla. Jazyk sa zameriava na bezpečnosť pamäte, poskytuje automatickú správu pamäte a poskytuje nástroje na dosiahnutie vysokého paralelizmu úloh bez použitia zberača odpadu a runtime.

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ď. Vyvíja sa správca balíkov na distribúciu knižníc, zabezpečenie zostavenia a správu závislostí v rámci projektu. náklad, čo vám umožní získať knižnice potrebné pre program jedným kliknutím. Hostiteľské knižnice podporujú úložisko crates.io.

Hlavné inovácie:

  • Rozšírili sa možnosti funkcií definovaných pomocou výrazu „const fn“, ktoré možno volať nielen ako regulárne funkcie, ale namiesto konštánt ich použiť aj v akomkoľvek kontexte. Tieto funkcie sa počítajú v čase kompilácie, nie v čase behu, takže podliehajú určitým obmedzeniam, ako napríklad schopnosť čítať iba z konštánt.

    Nové vydanie odstraňuje zákaz používania booleovských operátorov („&&“ a „||“) v takýchto funkciách a umožňuje použitie konštrukcií „if“, „if let“, „match“,
    „while“, „while let“ a „loop“ a tiež poskytuje možnosť konvertovať na rezy (slice, dynamické polia) pomocou výrazu „&[T]“. Použitie týchto funkcií vo funkciách „const fn“ vám umožňuje presunúť niektoré operácie náročné na zdroje do fázy kompilácie. Napríklad implementácia „const-sha1“ umožňuje vypočítať hash SHA-1 v čase kompilácie, čo vedie k tomu, že väzby WinRT pre Rust bežia takmer 40-krát rýchlejšie.

  • Aby boli chybové hlásenia informatívnejšie, bola stabilizovaná podpora atribútu „#[track_caller]“, čo je užitočné pre funkcie ako rozbalenie, ktoré môže spôsobiť paniku, ak sa typy použijú nesprávne. Zadaný atribút použije obsluha paniky na vytlačenie polohy volajúceho v chybovej správe.
  • Atribút „const“, ktorý určuje možnosť jeho použitia v akomkoľvek kontexte namiesto konštánt, sa používa v metóde std::mem::forget.
  • Nová časť API bola presunutá do stabilnej kategórie, vrátane stabilizovaných Option::zip a vec::Drain::as_slice.
  • V správcovi balíkov Cargo pridané podpora pre nové premenné prostredia nastavené pri kompilácii balíka: CARGO_BIN_NAME (názov výsledného spustiteľného súboru), CARGO_CRATE_NAME (názov balíka), CARGO_PKG_LICENSE (licencia uvedená v manifeste), CARGO_PKG_LICENSE_FILE (cesta k licenčnému súboru).

Zdroj: opennet.ru

Pridať komentár