Vydanie Rust 1.99.0. Microsoft zaradil Rust medzi primárne jazyky

Bol zverejnený release programovacieho jazyka Rust 1.99, ktorý bol pôvodne vyvinutý projektom Mozilla, ale teraz je rozvíjaný pod záštitou nezávislej neziskovej organizácie Rust Foundation. Jazyk je zameraný na bezpečné zaobchádzanie s pamäťou a poskytuje prostriedky na dosiahnutie vysokej paralelizácie vykonávania úloh, pričom sa obchádza bez používania garbage collectora a runtime (runtime sa redukuje na základnú inicializáciu a údržbu štandardnej knižnice).

Metódy práce s pamäťou v Rust sú zamerané na vylúčenie chýb pri manipulácii s ukazovateľmi a ochranu pred problémami vyplývajúcimi z nízkoúrovňovej práce s pamäťou, ako sú prístup k pamäťovým oblastiam po ich uvoľnení, dereferencovanie nulových ukazovateľov, pretečenie buffera a podobne. Na distribúciu knižníc, zabezpečenie zostavenia a správu závislostí sa vyvíja balíkový manažér Cargo. Na hostenie knižníc sa podporuje repozitár crates.io.

Bezpečné zaobchádzanie s pamäťou je v Rust zabezpečené už pri kompilácii prostredníctvom kontroly odkazov, sledovania vlastníctva objektov, zohľadňovania životnosti objektov (rozsah viditeľnosti) a posudzovania správnosti prístupu k pamäti počas vykonávania kódu. Rust tiež poskytuje prostriedky na ochranu pred celočíselnými pretečeniami, vyžaduje povinnú inicializáciu hodnôt premenných pred použitím, lepšie spracováva chyby v štandardnej knižnici, aplikuje koncept nemennosti (immutable) odkazov a premenných ako predvolené a ponúka silnú statickú typizáciu na minimalizáciu logických chýb.

Hlavné novinky:

  • Bola poskytnutá možnosť vytvárania funkcií v jazyku Rust s variabilným počtom argumentov (variadic), exportovaných na volanie z projektov v jazyku C (C ABI). Ako posledný prvok zoznamu parametrov v takýchto funkciách môže byť zadaná konštrukcia „…“, ktorá sa spracováva v Rust pomocou špeciálneho typu VaList, pracujúceho podobne ako va_list v C. 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) } }
  • Boli stabilizované funkcie Layout::for_value_raw, mem::size_of_val_raw a mem::align_of_val_raw, ktoré umožňujú bezpečne určiť veľkosť a zarovnanie pomocou surových ukazovateľov (raw pointer), vrátane typov s dynamickou veľkosťou, ako sú rezy, bez potreby vytvárania odkazov na dáta.
  • Do dokumentácie bola pridaná odporúčanie vyhnúť sa uvoľneniu pamäte, na ktorú bola získaná statická referencia s neobmedzenou životnosťou (&’static) prostredníctvom volania Box::leak (round-trip unleaking), pretože takéto konanie môže potenciálne viesť k problémom kvôli nekompatibilite s budúcimi optimalizáciami kompilátora a pripojenými mechanizmami prideľovania pamäte. Namiesto vytvárania statickej referencie na dočasný prevod vlastníctva sa odporúča používať surové ukazovatele, napríklad prostredníctvom volania Box::into_non_null.
  • Do oblasti stabilných bol prenesený nový balík API, vrátane stabilizovaných metód a implementácií traitov:
    • IntoIterator for Box
    • IntoIterator for &Box
    • IntoIterator for &mut Box
    • 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
    • std::fs::set_times
    • std::fs::set_times_nofollow
  • V balíčkovom manažéri cargo bol implementovaný nový vstavaný profil „debug“, ktorý je analogický profilu „dev“ (v budúcnosti plánujú oddeliť možnosti na ladenie a vývoj). Pri zostavovaní v CI je inkrementálna kompilácia predvolene vypnutá.
  • Cieľová platforma riscv64-unknown-linux-musl bola prevedená na druhú úroveň podpory, čo znamená záruku zostavenia, ale bez záruk pri prechode testovacím súborom.

Dodatočne môžeme spomenúť nedávno oznámené projekty a udalosti týkajúce sa Rust:

  • Spoločnosť Microsoft preložila Rust medzi jazyky prvej úrovne a zabezpečí jeho plnú podporu počas všetkých fáz vývoja v rámci spoločnosti. Predtým bola prvá úroveň podpory v rámci spoločnosti poskytovaná pre jazyky C++, C# a TypeScript. Uvádza sa, že Rust už používa viac ako 100 repozitárov Microsoftu. Okrem iného sa komponenty na Rust už aplikujú v produktoch ako Microsoft 365 a Copilot a pre kompilátor MSVC bol pripravený samostatný backend rustc_codegen_utc pre Rust, založený na kompilátore rustc.

    Ako hlavný cieľ použitia Rust v Microsofte sa uvádza posilnenie bezpečnosti kódu, kritického z pohľadu bezpečnosti. Podľa technického riaditeľa Microsoft Azure je približne 70% všetkých zraniteľností vo Windows spôsobených problémami s pamäťou, ktorých sa možno vyhnúť použitím Rust.

  • Spoločnosť Google odstránila zo systému Linux starú implementáciu mechanizmu medzi procesmi IPC Binder, napísanú v jazyku C, v prospech nového ovládača Binder IPC, ktorý bol prepísaný v Rust. Uvádza sa, že za 15 rokov existencie starej verzie sa nahromadil značný technický dlh a množstvo zložitostí, ktoré sťažovali vyhľadávanie chýb, údržbu a pridávanie nových funkcií. Ovládač Binder IPC na Rust je uznávaný ako hlavný a už sa nepredstavuje ako experimentálna verzia.
  • Bol zverejnený výstup Arti 2.7.0, implementácie nástrojov Tor, napísanej v jazyku Rust. Keď kód Arti dosiahne úroveň, ktorá je schopná úplne nahradiť variant v C, vývojári Tor plánujú pridelit Arti status hlavnej implementácie Tor a postupne ukončiť údržbu implementácie v C. V novej verzii je rozvinutá funkcionalita pre relé a serverov adresár (Directory Authority) súvisiaci s analýzou dokumentov, podporou zrkadlenia serverov adresárov a spracovaním DNS dopravy. Pridaná implementácia RPC na zmenu a kontrolu konfigurácie. Opravených niekoľko zraniteľností — administrátorom onion služieb sa odporúča urgentne aktualizovať svoje systémy.

Zdroj: opennet.ru

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