Izdaja programskega jezika Rust 1.43

Objavljeno izdaja sistemskega programskega jezika Rja 1.43, ki ga je ustanovil projekt Mozilla. Jezik se osredotoča na varnost pomnilnika, zagotavlja samodejno upravljanje pomnilnika in ponuja orodja za doseganje visoke vzporednosti nalog brez uporabe zbiralnika smeti in runtime.

Rustovo samodejno upravljanje pomnilnika reši razvijalca pred manipulacijo kazalcev in ščiti pred težavami, ki izhajajo iz manipulacije pomnilnika na nizki ravni, kot je dostop do območja pomnilnika, potem ko je bilo osvobojeno, dereferenciranje ničelnih kazalcev, prekoračitev medpomnilnika itd. Za distribucijo knjižnic, zagotavljanje sestavljanja in upravljanje odvisnosti projekt razvija upravitelja paketov Cargo, ki vam omogoča, da z enim klikom pridobite knjižnice, ki jih potrebujete za program. Repozitorij je podprt za gostovanje knjižnic zaboji.io.

Glavni inovacije:

  • Makri omogočajo uporabo fragmentov elementov, da jih pretvorite v kodo za lastnosti (trait), izvedbe (impl) ali zunanje bloke. Na primer:

    makro_pravila! mac_trait {
    ($i:predmet) => {
    lastnost T { $i }
    }
    }
    mac_trait! {
    fn foo() {}
    }

    Privede do generacije:

    lastnost T {
    fn foo() {}
    }

  • Izboljšano zaznavanje vrste primitivov, referenc in binarnih operacij.
    Na primer, naslednjo kodo, ki je prej povzročila napako, bo zdaj mogoče prevesti (Rust zdaj pravilno ugotovi, da morata biti 0.0 in &0.0 tipa f32):

    naj bo n: f32 = 0.0 + &0.0;

  • V Cargo je bila dodana nova spremenljivka okolja CARGO_BIN_EXE_{name}, ki je nastavljena pri gradnji integracijskih testov in vam omogoča, da določite celotno pot do izvršljive datoteke, definirane v razdelku »[[bin]]« paketa.
  • Stavki If smejo uporabljati atribute, kot je "#[cfg()]".
  • Knjižnica omogoča neposredno uporabo povezanih konstant za celoštevilske in delne vrste, brez uvoza modula. Takoj lahko na primer napišete u32::MAX ali f32::NAN, ne da bi najprej navedli »uporabi std::u32« in »uporabi std::f32«.
  • Dodan nov modul primitivna, ki ponovno izvozi primitivne tipe Rust, na primer, ko morate napisati makro in zagotoviti, da tipi niso skriti.
  • Nov del API-jev je bil prenesen v kategorijo stabilnih, vključno s stabiliziranimi

    Once::is_completed,
    f32::LOG10_2,
    f32::LOG2_10,
    f64::LOG10_2,
    f64::LOG2_10 in
    iter::once_with.

Vir: opennet.ru

Dodaj komentar