Izdanje Rust programskog jezika 1.67

Objavljen je programski jezik opće namjene Rust 1.67, utemeljen na projektu Mozilla, ali sada razvijen pod pokroviteljstvom nezavisne neprofitne organizacije Rust Foundation. Jezik se fokusira na sigurnost memorije i pruža sredstva za postizanje visokog paralelizma poslova uz izbjegavanje upotrebe skupljača smeća i vremena izvođenja (vrijeme izvođenja je smanjeno na osnovnu inicijalizaciju i održavanje standardne biblioteke).

Rustove metode rukovanja memorijom spašavaju programere od pogrešaka pri manipuliranju pokazivačima i štite od problema koji nastaju zbog rukovanja memorijom na niskoj razini, kao što je pristup memorijskom području nakon što je ono oslobođeno, dereferenciranje nultih pokazivača, prekoračenje međuspremnika, itd. Za distribuciju biblioteka, pružanje nadogradnji i upravljanje ovisnostima, projekt razvija upravitelja paketa Cargo. Repozitorij crates.io podržan je za smještaj knjižnica.

Sigurnost memorije osigurana je u Rustu tijekom kompajliranja provjerom referenci, praćenjem vlasništva objekta, praćenjem životnih vijekova objekta (opsega) i procjenom ispravnosti pristupa memoriji tijekom izvođenja koda. Rust također pruža zaštitu od prekoračenja cjelobrojnih brojeva, zahtijeva obaveznu inicijalizaciju vrijednosti varijabli prije upotrebe, bolje obrađuje pogreške u standardnoj biblioteci, primjenjuje koncept nepromjenjivih referenci i varijabli prema zadanim postavkama, nudi snažno statično tipkanje za smanjenje logičkih pogrešaka.

Glavne inovacije:

  • Za asinkrone funkcije s Future::Outputom sada je moguće navesti "#[must_use]" komentare koji uključuju upozorenje ako se povratna vrijednost zanemari, što pomaže identificirati pogreške uzrokovane pretpostavkom da će funkcija promijeniti vrijednosti umjesto vraćanja nove vrijednosti. #[must_use] async fn bar() -> u32 { 0 } async fn caller() { bar().await; } upozorenje: neiskorišteni izlaz budućnosti vraća `bar` koji se mora koristiti —> src/lib.rs:5:5 | 5 | bar().čekaj; | ^^^^^^^^^^^ | = napomena: `#[warn(unused_must_use)]` uključeno prema zadanim postavkama
  • Implementacija FIFO redova čekanja std::sync::mpsc (multi-producer-one-consumer) je ažurirana, koja je prebačena na korištenje crossbeam-channel modula uz zadržavanje prethodnog API-ja. Novu implementaciju ističe rješavanje niza problema, veća izvedba i pojednostavljeno održavanje koda.
  • Novi dio API-ja premješten je u kategoriju stabilnih, uključujući metode i implementacije karakteristika koje su stabilizirane:
    • {integer}::checked_ilog
    • {integer}::checked_ilog2
    • {integer}::checked_ilog10
    • {cijeli broj}::ilog
    • {cijeli broj}::ilog2
    • {cijeli broj}::ilog10
    • NenulaU*::ilog2
    • NenulaU*::ilog10
    • Ne-nula*::BITS
  • Atribut "const", koji određuje mogućnost korištenja u bilo kojem kontekstu umjesto konstanti, koristi se u funkcijama:
    • char::from_u32
    • char::from_digit
    • char::to_digit
    • jezgra::char::from_u32
    • jezgra::char::from_digit
  • Implementirana je treća razina podrške za korištenje Rusta u jezgri Linuxa (linuxkernel), kao i za Sony PlayStation 1 (mipsel-sony-psx), PowerPC s AIX-om (powerpc64-ibm-aix), QNX Neutrino RTOS ( aarch64-unknown-nto-) platforme qnx710, x86_64-pc-nto-qnx710). Treća razina uključuje osnovnu podršku, ali bez automatiziranog testiranja, objavljivanja službenih međugradnji ili provjere može li se kod izgraditi.

Dodatno, možemo primijetiti da je ARM objavio zakrpe koje omogućuju korištenje jezika Rust za razvoj upravljačkih programa i modula jezgre Linuxa sastavljenih za sustave temeljene na arhitekturi AArch64.

Izvor: opennet.ru

Dodajte komentar