Vydanie programovacieho jazyka Rust 1.39

publikovaný vydanie systémového programovacieho jazyka Hrdza 1.39, ktorú založil projekt Mozilla. Jazyk sa zameriava na bezpečnosť pamäte, poskytuje automatickú správu pamäte a poskytuje prostriedky na dosiahnutie vysokej paralelnosti úloh bez použitia garbage collectora alebo runtime.

Automatická správa pamäte Rust oslobodzuje vývojára od manipulácie s ukazovateľmi a chráni pred problémami vznikajúcimi pri manipulácii s pamäťou na nízkej úrovni, ako sú napríklad prístupy do pamäte po uvoľnení, dereferences nulového ukazovateľa, pretečenie vyrovnávacej pamäte a podobne. 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:

  • Stabilizované nová syntax asynchrónneho programovania založená na funkcii "async", bloku async move { ... } a operátori ".await", čo uľahčuje písanie obslužných programov, ktoré neblokujú hlavný tok príkazov. V porovnaní s predtým ponúkaným API pre asynchrónne I/O sú konštrukcie async/.await jednoduché na pochopenie, sú dobre čitateľné a umožňujú vám implementovať zložité asynchrónne interakcie pomocou známych techník riadenia toku založených na slučkách, podmienených príkazoch a výnimkách.

    Syntax Async-await vám umožňuje vytvárať funkcie, ktoré môžu pozastaviť ich vykonávanie, vrátiť riadenie hlavnému vláknu a potom obnoviť vykonávanie od miesta, kde skončili. Takáto pauza je napríklad potrebná pri spracovávaní I/O, v ktorom je možné vykonať inú prácu pri čakaní na príchod ďalšej časti údajov. Funkcie a bloky definované pomocou „async fn“ a „async move“ vracajú vlastnosť Budúcnosť, ktorý definuje odloženú asynchrónnu výpočtovú reprezentáciu. Môžete priamo spustiť odložený výpočet a získať výsledok pomocou operátora „.wait“. Nevykoná sa žiadna akcia ani nie je vopred naplánovaná, kým sa nezavolá .await, čo umožňuje vytváranie zložitých vnorených konštruktov bez dodatočnej réžie.

    async fn first_function() -> u32 { .. }
    ...
    nech buducnost = prva_funkcia();
    ...
    nech vysledok: u32 = buducnost.cakat;

  • Stabilizované "#![feature(bind_by_move_pattern_guards)]", ktorý umožňuje použitie premenných s typom väzby "vedľajším ťahom" v šablónach a použite odkazy na tieto premenné v sekcii "if" výrazu "zápas". Teraz sú povolené napríklad tieto konštrukcie:

    fnmain() {
    nech pole: Box<[u8; 4]> = Box::new([1, 2, 3, 4]);

    zhoda pole {
    čísla
    if nums.iter().sum::() == 10

    => {
    drop(nums);
    }
    _ => nedostupné!(),
    }
    }

  • Indikácia povolená atribúty pri definovaní parametrov funkcií, uzáverov a ukazovateľov funkcií. Podporované sú atribúty podmienenej kompilácie (cfg, cfg_attr), ktoré riadia diagnostiku cez lint (povoliť, varovať, zakázať a zakázať) a pomocné atribúty volania makier.

    fn len(
    #[cfg(windows)] slice: &[u16], // použite parameter v systéme Windows
    #[cfg(not(windows))] slice: &[u8], // použitie v inom OS
    ) -> použiť {
    slice.len()
    }

  • upozornenia na problémy zistené pri kontrole vypožičiavania premenných (kontrola požičiavania) pomocou techniky NLL (Non-Lexical Lifetimes), preložené do kategórie fatálnych chýb. Pripomeňme, že overovací systém založený na novom mechanizme zohľadňovania životnosti vypožičaných premenných umožnil identifikovať niektoré problémy, ktoré si starý overovací kód nevšimol. Keďže chybový výstup pre takéto kontroly by mohol ovplyvniť kompatibilitu s predtým fungujúcim kódom, namiesto chýb sa pôvodne vydávali varovania. Varovania boli teraz nahradené chybami pri spustení v režime Rust 2018. V ďalšom vydaní bude chybový výstup implementovaný aj v režime Rust 2015, ktorý sa konečne zbaví starého nástroja na kontrolu výpožičiek;
  • Atribút „const“, ktorý určuje možnosť použitia v akomkoľvek kontexte namiesto konštánt, sa používa pre funkcie Vec::new, String::new, LinkedList::new, str::len, [T]::len , str::as_bytes,
    abs, wrapping_abs a overflowing_abs;

  • Do stabilnej kategórie bola presunutá nová časť API, vrátane metód, ktoré boli stabilizované
    Pin::into_inner, Instant::checked_duration_since a Instant::saturating_duration_since;

  • Správca nákladných balíkov má teraz možnosť používať príponu „.toml“ pre konfiguračné súbory. Pridaná predbežná podpora pre budovanie štandardnej knižnice priamo z Cargo. Pridaný príznak „--workspace“, ktorý nahradil kontroverzný príznak „--all“. Do metadát bolo pridané nové pole "publikovať", ktorý vám umožňuje publikovať závislosti zadaním značky git a čísla verzie. Pridaná testovacia možnosť "-Ztimings" na generovanie HTML správy o časoch vykonávania rôznych fáz kompilácie.
  • V kompilátore rustc diagnostické správy zahŕňajú orezanie koncov kódu, ktorý sa nezmestí do terminálu. Poskytuje tretiu úroveň podpory pre cieľové platformy
    i686-unknown-uefi a sparc64-unknown-openbsd. Tretia úroveň zahŕňa základnú podporu, ale bez automatického testovania a zverejňovania oficiálnych verzií.

Zdroj: opennet.ru

Pridať komentár