Programski jezik Rust 1.67 izdanje

Objavljeno je izdanje Rust 1.67 programskog jezika opšte namjene, koji je osnovan od strane Mozilla projekta, a koji je sada razvijen pod okriljem nezavisne neprofitne organizacije Rust Foundation. Jezik se fokusira na sigurnost memorije i pruža sredstva za postizanje visokog paralelizma poslova uz izbjegavanje upotrebe sakupljača smeća i vremena izvođenja (vrijeme izvođenja je svedeno na osnovnu inicijalizaciju i održavanje standardne biblioteke).

Rustove metode rukovanja memorijom spašavaju programera od grešaka prilikom manipulacije pokazivačima i štite od problema koji nastaju zbog rukovanja memorijom na niskom nivou, kao što je pristup memorijskoj oblasti nakon što je ona oslobođena, dereferenciranje nultih pokazivača, prekoračenje bafera itd. Za distribuciju biblioteka, izradu i upravljanje ovisnostima, projekt razvija Cargo paket menadžer. Crates.io spremište je podržano za hostovanje biblioteka.

Sigurnost memorije je osigurana u Rustu u vrijeme kompajliranja kroz provjeru referenci, praćenje vlasništva nad objektom, praćenje životnog vijeka objekata (opsega) i procjenu ispravnosti pristupa memoriji tokom izvršavanja koda. Rust također pruža zaštitu od prekoračenja cijelih brojeva, zahtijeva obaveznu inicijalizaciju vrijednosti varijabli prije upotrebe, bolje obrađuje greške u standardnoj biblioteci, primjenjuje koncept nepromjenjivih referenci i varijabli po defaultu, nudi snažno statičko kucanje kako bi se minimizirale logičke greške.

Glavne inovacije:

  • Za asinhronizirane funkcije s Future::Output, sada je moguće navesti "#[must_use]" napomene koje uključuju upozorenje ako se povratna vrijednost zanemari, što pomaže u identifikaciji grešaka uzrokovanih pretpostavkom da će funkcija promijeniti vrijednosti umjesto da vrati novu vrijednost. #[must_use] async fn bar() -> u32 { 0 } async fn caller() { bar().await; } upozorenje: neiskorišćeni izlaz budućnosti vraća `bar` koji se mora koristiti —> src/lib.rs:5:5 | 5 | bar().await; | ^^^^^^^^^^^^ | = napomena: `#[upozorenje(unused_must_use)]` uključeno po defaultu
  • Ažurirana je implementacija FIFO redova std::sync::mpsc (višeproizvođač i jedan potrošač), koji je prebačen na korištenje modula crossbeam-channel uz zadržavanje prethodnog API-ja. Novu implementaciju odlikuje rješavanje niza problema, veće performanse i pojednostavljeno održavanje koda.
  • Novi dio API-ja je premješten u kategoriju stabilnih, uključujući metode i implementacije osobina koje su stabilizirane:
    • {integer}::checked_ilog
    • {integer}::checked_ilog2
    • {integer}::checked_ilog10
    • {integer}::ilog
    • {integer}::ilog2
    • {integer}::ilog10
    • NonZeroU*::ilog2
    • NonZeroU*::ilog10
    • NonZero*::BITS
  • Atribut "const", koji određuje mogućnost korištenja u bilo kojem kontekstu umjesto konstanti, koristi se u funkcijama:
    • char::from_u32
    • char::od_cifre
    • char::to_digit
    • core::char::from_u32
    • core::char::from_digit
  • Implementiran je treći nivo podrške za korištenje Rusta u Linux kernelu (linuxkernel), kao i za Sony PlayStation 1 (mipsel-sony-psx), PowerPC sa AIX (powerpc64-ibm-aix), QNX Neutrino RTOS ( aarch64-unknown-nto-) platforme qnx710, x86_64-pc-nto-qnx710). Treći nivo uključuje osnovnu podršku, ali bez automatskog testiranja, objavljivanja službenih verzija ili provjere da li se kod može izgraditi.

Dodatno, možemo primijetiti objavljivanje zakrpa od strane ARM-a koje omogućavaju korištenje jezika Rust za razvoj drajvera i modula jezgra Linuxa sastavljenih za sisteme bazirane na arhitekturi AArch64.

izvor: opennet.ru

Dodajte komentar