Izdanje Rust programskog jezika 1.43

Objavljeno izdanje sistemskog programskog jezika Rđa 1.43, osnovan projektom Mozilla. Jezik se fokusira na sigurnost memorije, omogućuje automatsko upravljanje memorijom i pruža alate za postizanje visokog paralelizma zadataka bez korištenja skupljača smeća i runtime.

Rustovo automatsko upravljanje memorijom oslobađa programera od manipulacije pokazivačima i štiti od problema koji proizlaze iz manipulacije memorijom niske razine, kao što su pristupi memoriji nakon oslobađanja, dereferencije nultog pokazivača, prekoračenja međuspremnika i slično. Upravitelj paketa se razvija za distribuciju biblioteka, osiguranje sklapanja i upravljanje ovisnostima projekta. Naboj, što vam omogućuje da jednim klikom dobijete biblioteke potrebne za program. Repozitorij je podržan za host knjižnica sanduci.io.

Glavni inovacije:

  • Makronaredbe daju mogućnost korištenja fragmenata elemenata za njihovo pretvaranje u kod za značajke (trait), implementacije (impl) ili vanjske blokove. Na primjer:

    makro_pravila! mac_trait {
    ($i:stavka) => {
    osobina T { $i }
    }
    }
    mac_trait! {
    fn foo() {}
    }

    Dovest će do generacije:

    osobina T {
    fn foo() {}
    }

  • Poboljšano otkrivanje tipa primitiva, referenci i binarnih operacija.
    Na primjer, sljedeći kod, koji je prethodno uzrokovao pogrešku, sada će se moći kompajlirati (Rust sada ispravno utvrđuje da 0.0 i &0.0 moraju biti tipa f32):

    neka je n: f32 = 0.0 + &0.0;

  • Nova varijabla okruženja CARGO_BIN_EXE_{name} dodana je u Cargo, koja se postavlja prilikom izrade integracijskih testova i omogućuje vam određivanje pune staze do izvršne datoteke definirane u odjeljku paketa “[[bin]]”.
  • Ako je izjavama dopušteno koristiti atribute kao što je "#[cfg()]".
  • Knjižnica pruža mogućnost izravnog korištenja povezanih konstanti za cjelobrojne i frakcijske tipove, bez uvoza modula. Na primjer, možete odmah napisati u32::MAX ili f32::NAN bez prethodnog navođenja "use std::u32" i "use std::f32".
  • Dodan je novi modul primitivan, koji ponovno izvozi Rust primitivne tipove, na primjer kada trebate napisati makro i osigurati da tipovi nisu skriveni.
  • Novi dio API-ja prebačen je u stabilnu kategoriju, uključujući stabilizirane

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

Izvor: opennet.ru

Dodajte komentar