Objavljen Rust 1.99.0. Microsoft je učinio Rust primarnim jezikom.

Programski jezik Rust 1.99, koji je osnovao Mozilla projekat, ali se sada razvija pod pokroviteljstvom nezavisne neprofitne organizacije Rust Foundation, je objavljen. Jezik se fokusira na sigurnost memorije i pruža alate za postizanje visokog paralelizma izvršavanja zadataka, bez upotrebe sakupljača smeća i okruženja za izvršavanje (izvršavanje je svedeno na osnovnu inicijalizaciju i održavanje standardne biblioteke).

Rustove metode upravljanja memorijom su dizajnirane da eliminišu greške u manipulaciji pokazivačima i zaštite od problema koji proizlaze iz upravljanja memorijom na niskom nivou, kao što su pristup memoriji nakon što je oslobođena, dereferenciranje nultih pokazivača, prekoračenje bafera i tako dalje. Projekat razvija Cargo upravitelj paketa za distribuciju biblioteka, olakšavanje izgradnje i upravljanje zavisnostima. Repozitorij crates.io se održava 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:

  • Rust sada omogućava kreiranje varijadnih funkcija izvezenih za poziv iz C projekata (C ABI). Posljednji element liste parametara u takvim funkcijama može biti konstrukcija "...", koja se u Rustu obrađuje korištenjem posebnog tipa, VaList, koji radi slično kao va_list u C-u. unsafe extern "C" fn sum(mut args: ...) -> i32 { let a = unsafe { args.next_arg:: () }; neka b = nesigurno { args.next_arg:: () }; a + b } fn foo() -> i32 { nesigurno { suma(0i32, 2i32) } }
  • Funkcije Layout::for_value_raw, mem::size_of_val_raw i mem::align_of_val_raw su stabilizirane kako bi se omogućilo sigurno određivanje veličine i poravnanje sirovih pokazivača, uključujući i korištenje dinamički dimenzioniranih tipova kao što su sliceovi, bez potrebe za kreiranjem referenci podataka.
  • Dokumentacija sada preporučuje izbjegavanje oslobađanja memorije koja je statički referencirana s neograničenim vijekom trajanja (&'static) putem poziva Box::leak (kružno odustajanje), jer bi ova radnja potencijalno mogla dovesti do problema zbog nekompatibilnosti s budućim optimizacijama kompajlera i mehanizmima alokacije memorije koji se mogu uključiti. Umjesto kreiranja statičke reference za privremeni prijenos vlasništva, preporučuje se korištenje sirovih pokazivača, na primjer, putem poziva Box::into_non_null.
  • Novi dio API-ja je premješten u kategoriju stabilnih, uključujući metode i implementacije osobina koje su stabilizirane:
    • IntoIterator za Box<[T; N]>
    • IntoIterator za &Box<[T; N]>
    • IntoIterator za &mut Box<[T; N]>
    • VecDeque::retain_back
    • core::ffi::VaList
    • Kutija::u_ne_null
    • Kutija::from_non_null
    • Vec::u_dijelove
    • Vec::from_parts
    • jezgro::mem::veličina_vrijednosti_sirove
    • core::mem::align_of_val_raw
    • core::alloc::Layout::for_value_raw
    • String::from_utf8_lossy_owned
    • string::FromUtf8Error::into_utf8_lossy
    • FusedIterator za StepBy
    • std::fs::set_times
    • std::fs::set_times_nofollow
  • Upravitelj cargo paketa sada ima novi ugrađeni profil "debug", sličan profilu "dev" (planirano je da se mogućnosti debugiranja i razvoja u budućnosti odvoje). Inkrementalna kompilacija je podrazumevano onemogućena prilikom izgradnje u CI.
  • Ciljna platforma riscv64-unknown-linux-musl je premještena na nivo podrške 2, koji pruža garanciju izgradnje, ali ne i garanciju prolaznosti testnog paketa.

Osim toga, željeli bismo istaknuti nedavno najavljene projekte i događaje vezane za Rust:

  • Microsoft je unaprijedio Rust na Tier 1 jezik i pružit će mu punu podršku u svim fazama razvoja unutar kompanije. Ranije je Tier 1 podrška bila pružena za C++, C# i TypeScript. Rust se već koristi u preko 100 Microsoft repozitorija. Između ostalog, Rust komponente se već koriste u proizvodima kao što su Microsoft 365 i Copilot, a za MSVC kompajler je razvijen namjenski backend za Rust, rustc_codegen_utc, zasnovan na rustc kompajleru.

    Microsoft navodi primarni cilj korištenja Rusta za jačanje sigurnosno kritičnog koda. Prema riječima tehničkog direktora Microsoft Azurea, otprilike 70% svih ranjivosti u Windows uzrokovani su problemima upravljanja memorijom koji se mogu izbjeći korištenjem Rusta.

  • Google ga je uklonio iz kernela. Linux Stara implementacija Binder IPC-a, napisana u C-u, je zastarjela u korist novog Binder IPC drajvera prepisanog u Rustu. Napominje se da je tokom 15 godina svog postojanja, stari drajver akumulirao značajan tehnički dug i brojne komplikacije, što je ometalo otkrivanje grešaka, održavanje i dodavanje novih funkcija. Binder IPC drajver u Rustu je određen kao glavni drajver i više se ne predstavlja kao eksperimentalni razvoj.
  • Arti 2.7.0, Rust implementacija Tor alata, je objavljena. Kada Artijeva kodna baza dostigne nivo sposoban da u potpunosti zamijeni C implementaciju, Tor programeri namjeravaju da Arti učine primarnom Tor implementacijom i postepeno ukinu održavanje C implementacije. Nova verzija uključuje razvoj funkcionalnosti za releje i serveri Funkcionalnost ovlaštenja direktorija (DA) vezana za parsiranje dokumenata, podršku za zrcaljenje direktorijskog servera i obradu DNS prometa. Dodana je RPC implementacija za promjene i provjere konfiguracije. Ispravljeno je nekoliko ranjivosti - administratorima onion servisa se savjetuje da hitno ažuriraju svoje sisteme.

izvor: opennet.ru

Kupite pouzdan hosting za sajtove sa DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster