Izdaja programskega jezika Rust 1.67

Objavljena je bila izdaja splošnega programskega jezika Rust 1.67, ki ga je ustanovil projekt Mozilla, zdaj pa se razvija pod okriljem neodvisne neprofitne organizacije Rust Foundation. Jezik se osredotoča na varnost pomnilnika in zagotavlja sredstva za doseganje visoke paralelnosti opravil, hkrati pa se izogiba uporabi zbiralnika smeti in izvajalnega okolja (izvajalni čas je zmanjšan na osnovno inicializacijo in vzdrževanje standardne knjižnice).

Rustove metode ravnanja s pomnilnikom rešijo razvijalca pred napakami pri ravnanju s kazalci in ščitijo pred težavami, ki nastanejo zaradi ravnanja s pomnilnikom 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 gradenj in upravljanje odvisnosti projekt razvija upravitelja paketov Cargo. Repozitorij crates.io je podprt za gostovanje knjižnic.

Varnost pomnilnika je v Rustu zagotovljena v času prevajanja s preverjanjem sklicevanj, spremljanjem lastništva objekta, spremljanjem življenjskih dob objektov (obseg) in ocenjevanjem pravilnosti dostopa do pomnilnika med izvajanjem kode. Rust zagotavlja tudi zaščito pred celoštevilskimi prelivi, zahteva obvezno inicializacijo vrednosti spremenljivk pred uporabo, bolje obravnava napake v standardni knjižnici, privzeto uporablja koncept nespremenljivih referenc in spremenljivk, ponuja močno statično tipkanje za zmanjšanje logičnih napak.

Glavne novosti:

  • Za asinhrone funkcije s Future::Output je zdaj mogoče podati opombe »#[must_use]«, ki vključujejo opozorilo, če je vrnjena vrednost prezrta, kar pomaga prepoznati napake, ki nastanejo zaradi predpostavke, da bo funkcija spremenila vrednosti namesto da vrne novo vrednost. #[must_use] async fn bar() -> u32 { 0 } async fn caller() { bar().await; } opozorilo: neuporabljen izhod prihodnosti, ki ga vrne `bar`, ki ga je treba uporabiti —> src/lib.rs:5:5 | 5 | bar().čakajte; | ^^^^^^^^^^^ | = opomba: `#[warn(unused_must_use)]` privzeto vklopljeno
  • Izvedba čakalnih vrst FIFO std::sync::mpsc (multi-producer-one-consumer) je bila posodobljena, ki je bila preklopljena na uporabo modula crossbeam-channel, medtem ko je ohranil prejšnji API. Novo izvedbo odlikujejo reševanje številnih problemov, večja zmogljivost in poenostavljeno vzdrževanje kode.
  • Nov del API-ja je bil premaknjen v kategorijo stabilnega, vključno s stabiliziranimi metodami in implementacijami lastnosti:
    • {integer}::preverjen_ilog
    • {celo število}::preverjeno_ilog2
    • {celo število}::preverjeno_ilog10
    • {celo}::ilog
    • {celo}::ilog2
    • {celo}::ilog10
    • NonZeroU*::ilog2
    • NonZeroU*::ilog10
    • NonZero*::BITS
  • Atribut "const", ki določa možnost uporabe v katerem koli kontekstu namesto konstant, se uporablja v funkcijah:
    • char::from_u32
    • char::from_digit
    • char::to_digit
    • core::char::from_u32
    • jedro::char::from_digit
  • Izvedena je bila tretja raven podpore za uporabo Rust v jedru Linuxa (linuxkernel), pa tudi za Sony PlayStation 1 (mipsel-sony-psx), PowerPC z AIX (powerpc64-ibm-aix), QNX Neutrino RTOS ( aarch64-unknown-nto-) platforme qnx710, x86_64-pc-nto-qnx710). Tretja raven vključuje osnovno podporo, vendar brez avtomatiziranega testiranja, objave uradnih gradenj ali preverjanja, ali je kodo mogoče zgraditi.

Poleg tega lahko opazimo, da je ARM objavil popravke, ki omogočajo uporabo jezika Rust za razvoj gonilnikov in modulov jedra Linuxa, sestavljenih za sisteme, ki temeljijo na arhitekturi AArch64.

Vir: opennet.ru

Dodaj komentar