Programski jezik Rust 1.65 izdanje

Objavljeno je izdanje Rust 1.65 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:

  • Dodata podrška za generičke povezane tipove (GAT, Generic Associated Types), koji omogućavaju kreiranje pseudonima tipa povezanih sa drugim tipom i omogućavaju vam da povežete konstruktore tipa sa osobinama. osobina Foo { type Bar<'x>; }
  • Implementiran je izraz “neka ... else” koji vam omogućava da provjerite uvjet podudaranja uzorka direktno unutar “let” izraza i izvršite proizvoljni kod ako se obrazac ne podudara. let Ok(count) = u64::from_str(count_str) else { panic!("Ne mogu raščlaniti cijeli broj: '{count_str}'"); };
  • Dozvolite upotrebu naredbe break za prerano izlazak iz imenovanih blokova, koristeći ime bloka (oznaku) za identifikaciju bloka koji treba prekinuti. pusti rezultat = 'blokiraj: { do_thing(); if condition_not_met() { break 'blok 1; } do_next_thing(); if condition_not_met() { break 'block 2; } do_last_thing(); 3 };
  • Za Linux je dodana mogućnost odvojenog spremanja informacija za otklanjanje grešaka (split-debuginfo), koja je ranije bila dostupna samo za macOS platformu. Kada navedete opciju "-Csplit-debuginfo=unpacked", podaci za debuginfo u DWARF formatu biće sačuvani u nekoliko zasebnih objektnih datoteka sa ekstenzijom ".dwo". Određivanjem "-Csplit-debuginfo=packed" kreirat će se jedan paket u ".dwp" formatu koji uključuje sve podatke o debuginfo za projekat. Da biste integrirali debuginfo direktno u .debug_* odjeljak ELF objekata, možete koristiti opciju "-Csplit-debuginfo=off".
  • Novi dio API-ja je premješten u kategoriju stabilnih, uključujući metode i implementacije osobina koje su stabilizirane:
    • std::backtrace::Backtrace
    • Vezano::as_ref
    • std::io::read_to_string
    • <*const T>::cast_mut
    • <*mut T>::cast_const
  • Atribut “const”, koji određuje mogućnost korištenja u bilo kojem kontekstu umjesto konstanti, koristi se u funkcijama <*const T&>::offset_from i <*mut T>::offset_from
  • Kao dio završne faze prijenosa implementacije LSP (Language Server Protocol) protokola na rust-analyzer, zastarjela implementacija Rust Language Server (RLS) zamijenjena je stub serverom koji izdaje upozorenje sa prijedlogom za prebacivanje na pomoću analizatora rđe.
  • Tokom kompilacije, omogućena je podrška za inline implementaciju MIR međukoda, što ubrzava kompilaciju tipičnih paketa za 3-10%.
  • Da bi ubrzao planirane gradnje, Cargo paket menadžer pruža sortiranje poslova koji čekaju izvršenje u redu čekanja.

Osim toga, možete primijetiti intervju o korištenju jezika Rust u Volvu za razvoj komponenti automobilskih informacionih sistema. Nema planova za prepisivanje postojećeg i testiranog koda u Rustu, ali za novi kod, Rust je jedna od preferiranih opcija za poboljšanje kvaliteta uz niže troškove. Radne grupe koje se odnose na upotrebu jezika Rust takođe su formirane u automobilskim udruženjima AUTOSAR (AUTomotive Open System ARchitecture) i SAE (Society of Automotive Engineers).

Osim toga, David Kleidermacher, Google-ov potpredsjednik inženjeringa, govorio je o prijevodu koda koji se koristi na Android platformi za upravljanje ključevima za šifriranje u Rust, kao i o korištenju Rusta u implementaciji DNS preko HTTPS protokola u stog. za UWB-čipove (Ultra-Wideband) i u okviru virtuelizacije (Android Virtualization Framework) povezanom sa Tensor G2 čipom. Novi stekovi za Bluetooth i Wi-Fi, prepisani u Rustu, također se razvijaju za Android. Opšta strategija je postepeno jačanje sigurnosti, prvo pretvaranjem najranjivijih i vitalnih softverskih komponenti u Rust, a zatim širenjem na druge povezane podsisteme. Prošle godine Rust jezik je uvršten na listu jezika dozvoljenih za razvoj Android platforme.

izvor: opennet.ru

Dodajte komentar