Vydaný Rust 1.99.0. Microsoft si z Rustu urobil primárny jazyk.

Programovací jazyk Rust 1.99, založený projektom Mozilla, ale teraz vyvíjaný pod záštitou nezávislej neziskovej organizácie Rust Foundation, bol vydaný. Jazyk sa zameriava na bezpečnosť pamäte a poskytuje nástroje na dosiahnutie vysokého paralelizmu vykonávania úloh, pričom sa zaobíde bez použitia garbage collectoru a runtime prostredia (runtime prostredie je redukované na základnú inicializáciu a údržbu štandardnej knižnice).

Metódy správy pamäte v Ruste sú navrhnuté tak, aby eliminovali chyby pri manipulácii s ukazovateľmi a chránili pred problémami vyplývajúcimi z nízkoúrovňovej správy pamäte, ako je prístup k pamäti po jej uvoľnení, dereferencovanie nulových ukazovateľov, preplnenie vyrovnávacej pamäte atď. Projekt vyvíja správcu balíčkov Cargo na distribúciu knižníc, uľahčenie zostavovania a správu závislostí. Na hosťovanie knižníc sa udržiava repozitár crates.io.

Bezpečnosť pamäte je v Rust zabezpečená v čase kompilácie prostredníctvom kontroly referencií, sledovania vlastníctva objektu, sledovania životnosti objektov (rozsahov) a hodnotenia správnosti prístupu do pamäte počas vykonávania kódu. Rust tiež poskytuje ochranu proti pretečeniu celých čísel, vyžaduje povinnú inicializáciu hodnôt premenných pred použitím, lepšie zvláda chyby v štandardnej knižnici, štandardne aplikuje koncept nemenných referencií a premenných, ponúka silné statické typovanie na minimalizáciu logických chýb.

Hlavné inovácie:

  • Rust teraz umožňuje vytvárať variadic funkcie exportované na volanie z projektov v jazyku C (C ABI). Posledným prvkom zoznamu parametrov v takýchto funkciách môže byť konštrukt "...", ktorý sa v Ruste spracováva pomocou špeciálneho typu VaList, ktorý funguje podobne ako va_list v jazyku C. unsafe extern "C" fn sum(mut args: ...) -> i32 { let a = unsafe { args.next_arg:: () }; nech b = nebezpečné { args.next_arg:: () }; a + b } fn foo() -> i32 { nebezpečné { súčet(0i32, 2i32) } }
  • Funkcie Layout::for_value_raw, mem::size_of_val_raw a mem::align_of_val_raw boli stabilizované, aby umožňovali bezpečnú zmenu veľkosti a zarovnanie nespracovaných ukazovateľov, a to aj pri použití dynamicky dimenzovaných typov, ako sú napríklad slices, bez nutnosti vytvárať odkazy na údaje.
  • Dokumentácia teraz odporúča vyhnúť sa uvoľňovaniu pamäte, na ktorú sa staticky odkazovalo s neurčitou životnosťou (&'static) prostredníctvom volania Box::leak (round-trip unleaking), pretože táto akcia by mohla viesť k problémom v dôsledku nekompatibility s budúcimi optimalizáciami kompilátora a mechanizmami alokácie zásuvnej pamäte. Namiesto vytvárania statickej referencie pre dočasné prenosy vlastníctva sa odporúča použiť surové ukazovatele, napríklad prostredníctvom volania Box::into_non_null.
  • Nová časť API bola presunutá do kategórie stabilných, vrátane metód a implementácií vlastností boli stabilizované:
    • IntoIterator pre Box<[T; N]>
    • IntoIterator pre &Box<[T; N]>
    • IntoIterator pre &mut Box<[T; N]>
    • VecDeque::retain_back
    • core::ffi::VaList
    • Box::into_non_null
    • Box::from_non_null
    • Vec::do_častí
    • Vec::from_parts
    • jadro::mem::veľkosť_hodnoty_raw
    • jadro::mem::zarovnanie_val_raw
    • jadro::alloc::rozloženie::pre_hodnotu_raw
    • Reťazec::from_utf8_lossy_owned
    • reťazec::FromUtf8Error::into_utf8_lossy
    • FusedIterator pre StepBy
    • std::fs::set_times
    • std::fs::set_times_nofollow
  • Správca balíkov cargo teraz obsahuje nový vstavaný profil „debug“, podobný profilu „dev“ (v budúcnosti sa plánuje oddelenie funkcií ladenia a vývoja). Inkrementálna kompilácia je pri zostavovaní v CI predvolene vypnutá.
  • Cieľová platforma riscv64-unknown-linux-musl bola presunutá na úroveň podpory 2, ktorá poskytuje záruku zostavenia, ale nie záruku úspešného prejdenia testovacej sady.

Okrem toho by sme chceli zdôrazniť nedávno ohlásené projekty a udalosti súvisiace s Rustom:

  • Spoločnosť Microsoft povýšila jazyk Rust na jazyk Tier 1 a bude mu poskytovať plnú podporu vo všetkých fázach vývoja v rámci spoločnosti. Predtým bola podpora Tier 1 poskytovaná pre jazyky C++, C# a TypeScript. Rust sa už používa vo viac ako 100 repozitároch spoločnosti Microsoft. Komponenty Rustu sa okrem iného už používajú v produktoch ako Microsoft 365 a Copilot a pre kompilátor MSVC bol vyvinutý špecializovaný backend pre Rust, rustc_codegen_utc, založený na kompilátore rustc.

    Spoločnosť Microsoft uvádza, že primárnym cieľom je použiť Rust na posilnenie bezpečnostne kritického kódu. Podľa technického riaditeľa spoločnosti Microsoft Azure približne 70 % všetkých zraniteľností v Windows sú spôsobené problémami so správou pamäte, ktorým sa dá vyhnúť používaním Rustu.

  • Google ho odstránil z jadra. Linux Stará implementácia Binder IPC, napísaná v jazyku C, bola zastaraná v prospech nového ovládača Binder IPC prepísaného v Ruste. Je potrebné poznamenať, že za 15 rokov svojej existencie starý ovládač nahromadil značný technický dlh a početné komplikácie, ktoré bránili detekcii chýb, údržbe a pridávaniu nových funkcií. Ovládač Binder IPC v Ruste bol určený ako hlavný ovládač a už sa neprezentuje ako experimentálny vývoj.
  • Bola vydaná verzia Arti 2.7.0, implementácia nástroja Tor v jazyku Rust. Akonáhle kódová základňa Arti dosiahne úroveň schopnú úplne nahradiť implementáciu v jazyku C, vývojári systému Tor plánujú urobiť z Arti primárnu implementáciu v jazyku Tor a postupne ukončiť údržbu implementácie v jazyku C. Nová verzia zahŕňa vývoj funkcií pre relé a serverov Funkcia Directory Authority (DA) súvisiaca s analýzou dokumentov, podporou zrkadlenia adresárových serverov a spracovaním prevádzky DNS. Bola pridaná implementácia RPC pre zmeny a kontroly konfigurácie. Bolo opravených niekoľko zraniteľností – správcom služby Onion sa odporúča urýchlená aktualizácia ich systémov.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster