Vydání programovacího jazyka Rust 1.42

zveřejněno vydání systémového programovacího jazyka Rez 1.42založil projekt Mozilla. Jazyk se zaměřuje na bezpečnou správu paměti, poskytuje automatickou správu paměti a poskytuje prostředky k dosažení vysokého paralelismu úloh a zároveň se vyhýbá použití garbage collectoru a runtime.

Automatická správa paměti Rust osvobozuje vývojáře od manipulace s ukazateli a chrání před problémy vyplývajícími z manipulace s pamětí na nízké úrovni, jako jsou například přístupy k paměti po volném čase, dereference nulového ukazatele, přetečení vyrovnávací paměti a podobně. Vyvíjí se správce balíčků pro distribuci knihoven, zajištění sestavení a správu závislostí v rámci projektu. Náklad, což vám umožní získat knihovny, které potřebujete pro program, jedním kliknutím. Hostitelské knihovny podporují úložiště crates.io.

hlavní inovace:

  • Přidal podpora šablon pro párování částí řezů (dynamická pole, řez). Dříve byly povoleny přesné shody, ale nyní je možné použít konstrukce označené „..“ k pokrytí zbývajících prvků pole. Například:

    fn foo(slova: &[&str]) {
    shoda slov {

    // zkontroluje počáteční prvky pole a ignoruje
    prvky, které je následují
    ["Ahoj", "Světe", "!", ..] => println!("Ahoj světe!"),

    // zkontroluje první dva prvky "Foo" a "Bar" a zbytek není důležitý
    ["Foo", "Bar", ..] => println!("Baz"),

    // ignorovat vše, ale poslední prvek musí být "!".
    [.., "!"] => println!("!!!"),

    // do počátečního řezu zahrneme vše kromě posledního prvku, který by měl být „z“
    [start @ .., "z"] => println!("začíná na: {:?}", start),

    // do konečného řezu vložíme vše kromě prvního prvku, který by měl být „a“.
    ["a", end @ ..] => println!("ends with: {:?}", end),

    zbytek => println!("{:?}", zbytek),
    }
    }

  • Přidáno nové makro „odpovídá!“, které bere výraz a vzor jako vstup a vrací „true“, pokud vzor odpovídá výrazu. Šablona může používat operace „|“. a pokud".

    match self.partial_cmp(other) {
    Některé (méně) => pravda,
    _ => nepravda,
    }

    odpovídá!(self.partial_cmp(ostatní), Některé(méně))

    nechat foo = 'f';
    tvrdit!(odpovídá!(foo, 'A'..='Z' | 'a'..='z'));

    let bar = Some(4);
    tvrdit!(odpovídá!(bar, Some(x) if x > 2));

  • Při nesprávném použití se zobrazují zprávy o panice
    typy Option a Result nyní zobrazují čísla řádků s odkazem na kód, který provedl problematické volání, spíše než odkazy na kód implementující volání v libcore. Změna například ovlivní volání rozbalení a očekávání přes Option::None nebo dojde k selhání při použití metod unwrap_err, expect, expect_err a podobných metod typu Result.

  • Správce balíčků Cargo poskytuje automatické nahrazení „proc_macro crate“ do „externího“ bloku pro balíčky s procedurálními makry. Tato změna umožňuje použít direktivu "use" na procedurální makra, aniž by bylo nutné v kódu specifikovat "extern crate proc_macro;". Pokud například program používá řádek „use proc_macro::TokenStream;“, pak kód nyní zůstane funkční, pokud z něj bude odstraněno „externí přepravka proc_macro;“.
  • Možnosti standardní knihovny byly rozšířeny. In iter::Empty přidal Podpora odesílání a synchronizace pro jakékoli hodnoty T.
    Pin hovorů::{map_unchecked, map_unchecked_mut} doručeno z nutnosti vracet hodnotu typu pro implementaci "Sized".
    V io::Cursor implementováno PartialEq a Eq. Atribut „const“ určuje možnost použití v jakémkoli kontextu místo konstant, aplikovaný pro metodu Layout::new.

  • Nová část API byla převedena do stabilní kategorie, včetně stabilizovaných CondVar::wait_while, CondVar::wait_timeout_while,
    DebugMap::key, DebugMap::value,
    ManuallyDrop::take,
    ptr::slice_from_raw_parts_mut a ptr::slice_from_raw_parts.

  • Metoda Error::description byla zastaralá.
  • Poskytuje podporu druhé úrovně pro platformy armv7a-none-eabi a riscv64gc-unknown-linux-gnu. Byla poskytnuta podpora pro standardní knihovnu pro platformu riscv64gc-unknown-linux-gnu.
    32bitové platformy Apple degradován až na třetí úroveň podpory, což znamená základní podporu, ale bez automatického testování a zveřejňování oficiálních sestavení. Snížení podpory je způsobeno tím, že Apple již nepodporuje 32bitové platformy.

Zdroj: opennet.ru

Přidat komentář