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

Objavljen je programski jezik Rust 1.99, koji je osnovao Mozilla projekt, ali se sada razvija pod pokroviteljstvom neovisne neprofitne organizacije Rust Foundation. Jezik se fokusira na sigurnost memorije i pruža alate za postizanje visokog paralelizma izvršavanja zadataka, a pritom se ne koristi sakupljač smeća i okruženje za izvođenje (izvođenje je svedeno na osnovnu inicijalizaciju i održavanje standardne biblioteke).

Rustove metode upravljanja memorijom osmišljene su kako bi se uklonile pogreške u manipulaciji pokazivačima i zaštitile od problema koji proizlaze iz upravljanja memorijom na niskoj razini, kao što su pristup memoriji nakon što je oslobođena, dereferenciranje nultih pokazivača, prekoračenje međuspremnika i tako dalje. Projekt razvija upravitelj paketa Cargo za distribuciju biblioteka, olakšavanje izgradnje i upravljanje ovisnostima. Repozitorij crates.io održava se za hosting biblioteka.

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:

  • Rust sada omogućuje stvaranje varijadnih funkcija izvezenih za poziv iz C projekata (C ABI). Posljednji element popisa parametara u takvim funkcijama može biti konstrukcija "...", koja se u Rustu obrađuje pomoću 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 korištenje dinamički dimenzioniranih tipova kao što su slojevi, bez potrebe za stvaranjem 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 otpuštanje), jer bi ta radnja potencijalno mogla dovesti do problema zbog nekompatibilnosti s budućim optimizacijama kompajlera i mehanizmima dodjele memorije s mogućnošću uključivanja. Umjesto stvaranja statičke reference za privremene prijenose vlasništva, preporučuje se korištenje sirovih pokazivača, na primjer, putem poziva Box::into_non_null.
  • Novi dio API-ja premješten je u kategoriju stabilnih, uključujući metode i implementacije karakteristika 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
    • jezgra::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" (mogućnosti otklanjanja grešaka i razvoja planiraju se u budućnosti odvojiti). Inkrementalna kompilacija je prema zadanim postavkama onemogućena prilikom izgradnje u CI-ju.
  • Ciljna platforma riscv64-unknown-linux-musl premještena je na razinu podrške 2, koja pruža jamstvo izgradnje, ali ne i jamstvo prolaza testnog paketa.

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

  • Microsoft je nadogradio Rust na Tier 1 jezik i pružit će mu punu podršku u svim fazama razvoja unutar tvrtke. Prije je Tier 1 podrška bila pružena za C++, C# i TypeScript. Rust se već koristi u preko 100 Microsoftovih repozitorija. Između ostalog, Rustove komponente već se koriste u proizvodima kao što su Microsoft 365 i Copilot, a za MSVC kompajler razvijen je namjenski backend za Rust, rustc_codegen_utc, temeljen 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, zastarjela je u korist novog Binder IPC upravljačkog programa prepisanog u Rustu. Napominje se da je tijekom 15 godina postojanja stari upravljački program nagomilao značajan tehnički dug i brojne komplikacije, što je ometalo otkrivanje grešaka, održavanje i dodavanje novih značajki. Binder IPC upravljački program u Rustu određen je kao glavni upravljački program i više se ne predstavlja kao eksperimentalni razvoj.
  • Arti 2.7.0, Rustova implementacija Tor alata, je objavljena. Nakon što Artijeva kodna baza dosegne razinu sposobnu potpuno zamijeniti C implementaciju, Tor programeri namjeravaju učiniti Arti primarnom Tor implementacijom i postupno ukinuti održavanje C implementacije. Nova verzija uključuje razvoj funkcionalnosti za releje i poslužitelji Funkcionalnost ovlaštenja direktorija (DA) povezana s parsiranjem dokumenata, podrškom za zrcaljenje poslužitelja direktorija i obradom DNS prometa. Dodana je RPC implementacija za promjene i provjere konfiguracije. Ispravljeno je nekoliko ranjivosti - administratorima onion servisa savjetuje se hitno ažuriranje sustava.

Izvor: opennet.ru

Kupite pouzdan hosting za stranice s DDoS zaštitom, VPS VDS poslužiteljima 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster