Izdan je Rust 1.99.0. Microsoft je prenesel Rust med primarne jezike

Objavljen je izdanak programskog jezika Rust 1.99, koji je izvorno razvila organizacija Mozilla, a sada ga održava neprofitna organizacija Rust Foundation. Jezik je usmjeren na sigurnu obradu memorije i pruža sredstva za postizanje visokog paralelizma u izvršavanju zadataka, bez upotrebe sakupljača smeća i runtime-a (runtime se svodi na osnovnu inicijalizaciju i podršku za standardnu biblioteku).

Metode rada s memorijom u Rustu usmjerene su na isključivanje grešaka prilikom manipulacije pokazivačima i zaštitu od problema koji nastaju zbog niskog nivoa rada s memorijom, kao što su pristupanje oblasti memorije nakon njenog oslobađanja, dereferenciranje nultih pokazivača, izlazak izvan granica bafera itd. Za distribuciju biblioteka, osiguranje gradnje i upravljanje zavisnostima, projekat se razvija koristeći alat za upravljanje paketima Cargo. Za hostovanje biblioteka podržava se repozitorij crates.io.

Sigurno upravljanje memorijom u Rust-u osigurano je tokom kompajliranja pomoću provjere referenci, praćenja vlasništva nad objektima, uzimanja u obzir vremena života objekata (vidljivost) i procjene ispravnosti pristupa memoriji tokom izvršavanja koda. Rust takođe pruža sredstva za zaštitu od prelivanja cijelih brojeva, zahtijeva obaveznu inicijalizaciju vrijednosti varijabli prije korišćenja, bolje obrađuje greške u standardnoj biblioteci, primjenjuje koncept nepromjenjivosti (immutable) referenci i varijabli kao podrazumijevano, te nudi jaku statičku tipizaciju za minimiziranje logičkih grešaka.

Glavne novosti:

  • Omogućeno je kreiranje funkcija u jeziku Rust s promenljivim brojem argumenata (variadic), koje se mogu eksportovati za pozivanje iz projekata napisanih na jeziku C (C ABI). Kao posljednji element u listi parametara u takvim funkcijama može se koristiti konstrukcija „…”, koja se obrađuje u Rustu pomoću specijalnog tipa VaList, koji funkcioniše slično kao va_list u C-u. unsafe extern "C" fn sum(mut args: …) -> i32 { let a = unsafe { args.next_arg::() }; let b = unsafe { args.next_arg::() }; a + b } fn foo() -> i32 { unsafe { sum(0i32, 2i32) } }
  • Stabilizovane su funkcije Layout::for_value_raw, mem::size_of_val_raw i mem::align_of_val_raw, koje omogućavaju sigurno određivanje veličine i poravnanja po sirovim pokazivačima (raw pointers), uključujući upotrebu tipova dinamičke veličine, kao što su svesci, bez potrebe za stvaranjem referenci na podatke.
  • V dokumentacijo je bila dodana priporočila, da se izogibamo sproščanju pomnilnika, za katerega smo pridobili statično povezavo z neomejenim časom trajanja (&’static), preko klica Box::leak (round-trip unleaking), saj lahko to dejanje potencialno povzroči težave zaradi nezdružljivosti z morebitnimi prihodnjimi optimizacijami prevajalnika in vključenimi mehanizmi za dodeljevanje pomnilnika. Namesto ustvarjanja statične povezave za začasno predajo lastništva priporočamo uporabo surovih kazalcev, na primer, preko klica Box::into_non_null.
  • У розряд стабільних переведено нову порцію API, зокрема стабілізовані методи та реалізації типажів:
    • IntoIterator for Box<[T; N]>
    • IntoIterator for &Box<[T; N]>
    • IntoIterator for &mut Box<[T; N]>
    • VecDeque::retain_back
    • core::ffi::VaList
    • Box::into_non_null
    • Box::from_non_null
    • Vec::into_parts
    • Vec::from_parts
    • core::mem::size_of_val_raw
    • core::mem::align_of_val_raw
    • core::alloc::Layout::for_value_raw
    • String::from_utf8_lossy_owned
    • string::FromUtf8Error::into_utf8_lossy
    • FusedIterator for StepBy<I>
    • std::fs::set_times
    • std::fs::set_times_nofollow
  • V paketnem upravitelju cargo je bil implementiran nov vgrajeni profil "debug", ki je podoben profilu "dev" (v prihodnje načrtujemo razdelitev možnosti za odpravljanje napak in razvoj). Pri avtomatiziranem sestavljanju (CI) je po privzetku izključena inkrementalna kompajlacija.
  • Ciljna platforma riscv64-unknown-linux-musl je bila prenesena na drugo raven podpore, kar pomeni zagotovilo za sestavljanje, vendar brez garancij pri prehodu testne zbirke.

Dodatno lahko omenimo nedavno napovedane projekte in dogodke v povezavi z Rust:

  • Podjetje Microsoft je Rust uvrstilo med jezike prve ravni ter bo zagotovilo njegovo popolno podporo v vseh fazah razvoja znotraj podjetja. Pred tem je bila prva raven podpore v podjetju dodeljena jezikom C++, C# in TypeScript. Omenja se, da se Rust že uporablja v več kot 100 repozitorijih Microsofta. Med drugim se komponenti v Rustu že uporabljajo v izdelkih, kot sta Microsoft 365 in Copilot, za prevajalnik MSVC pa je bil pripravljen poseben backend rustc_codegen_utc za Rust, ki temelji na prevajalniku rustc.

    Kot glavni cilj uporabe Rust v Microsoftu se omenja krepitev varnosti kode, ki je kritična z vidika varnosti. Po besedah tehničnega direktorja Microsoft Azure približno 70 % vseh ranljivosti v sistemu Windows izhaja iz težav pri upravljanju s pomnilnikom, ki se jim lahko izognemo z uporabo Rust.

  • Podjetje Google je odstranilo staro implementacijo mehanizma medprocesnega komuniciranja Binder, napisano v jeziku C, iz jedra Linux v korist novega gonilnika Binder IPC, prepisanega v Rust. Opaženo je, da je v 15 letih obstoja starega gonilnika zbralo znatne tehnične dolgove in obilico zapletov, ki so otežili iskanje napak, vzdrževanje in dodajanje novih funkcionalnosti. Gonilnik Binder IPC na Rustu je bil priznan kot osnovni in ne bo več predstavljen kot eksperimentalni razvoj.
  • Objavljen je izid Arti 2.7.0, implementacije orodij Tor, napisanih v jeziku Rust. Ko bo koda Arti dosegla nivo, ki lahko popolnoma nadomesti različico v C-ju, nameravajo razvijalci Tor dodeliti Arti status osnovne implementacije Tor in postopoma prenehati z vzdrževanjem različice v C-ju. V novi različici je bilo napredovano funkcionalnosti za relacije in strežnikov direktorije (Directory Authority), povezane z analiziranjem dokumentov, podporo za umestitev strežnikov direktorijev in obdelavo DNS prometa. Dodana je bila implementacija RPC za spreminjanje in preverjanje konfiguracije. Odpravljene so bile številne ranljivosti — skrbnikom onion-storitev priporočajo, da hitro posodobijo svoje sisteme.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster