Rust 1.92 väljaanne. Rusti projektid GUI, sandbox-isolatsiooni ja püsivara loomiseks.

Avaldatud on programmeerimiskeele Rust 1.92, mis põhineb Mozilla projektist, kuid praegu arendab seda sõltumatu mittetulundusühing Rust Foundation. Keel keskendub mäluga ohutule tööle ja pakub vahendeid ülesannete kõrge paralleelsuse saavutamiseks, samas puudub prügikoristaja ja režii (režii koosneb vaid baasalgatamisest ja standardraamatukogu hooldamisest).

Rustis olevad mäluhaldusmeetodid vabastavad arendajad probleemidest, mis on seotud osutitega, ning kaitsevad madala taseme mälutöötlusest tulenevate probleemide, nagu vabanenud mälu alale juurdepääs, nullosutite de-referentseerimine, mälupiiride ületamine jne. Raamatukogude levitamiseks, projekti koostamise ja sõltuvuste haldamiseks arendatakse pakihaldurit Cargo. Raamatukogude paigutamiseks toetatakse repo crates.io.

Rust tagab turvalise mälutöötluse kompilatsiooni ajal, kontrollides viiteid, jälgides objektide omandit, arvestades objektide elutsüklit (nähtavust) ja hinnates mälule juurdepääsu õigsust koodi käitamise ajal. Rust pakub ka meetmeid enamike täisarvude ületamiste vältimiseks, nõuab muutujate väärtuste algväärtustamist enne kasutamist, käsitleb vigasid paremini oma standardraamatukogus, rakendab immutamatuse (immutable) kontseptsiooni viidetes ja muutujates vaikimisi ning pakub tugevat staatilist tüüpimist loogiliste vigade minimeerimiseks.

Põhilised uuendused:

  • Jätkub tüübi «never» stabiilsus, mida tähistatakse sümboliga «!» ja mis määratleb arvutused, mis kunagi tulemusi ei too (näiteks funktsioon «exits», makro «panic!» ja lõpmatud tsüklid ei naase kunagi juhtimisele). Uues versioonis on lint-kontrollid «never_type_fallback_flowing_into_unsafe» ja «dependency_on_unit_never_type_fallback» vaikimisi lülitatud hoiatusate väljastamiselt kompileerimisvigade genereerimisele. Need kontrollid aktiveeruvad, kui koodis esinevad probleemid kasutades tüüpi «never».

    Eelmisel hinnangul on sarnased probleemid umbes 500 crate-paketis. Lint-kontrollide lubamine aitab valmistuda "never" tüübi stabiliseerimiseks, mis on praegu eksperimenteerimise tasemel. Lint-kontrollid aktiveeruvad ainult otse paketide koostamisel ja ei ilmne sõltuvuste koostamisel. Kontrollid saab samuti välja lülitada atribuudiga "#[allow]".

  • Lint-kontrolli "unused_must_use" käitumine on muudetud, kui funktsiooni tagastatud väärtust ignoreeritakse, kui funktsioon või tagastatud tüüp on märgistatud atribuudiga "#[must_use]". Uues versioonis lõpetatakse hoiatused tüüpide Result ja ControlFlow ignorimise kohta, kus vea seisund määratakse väärtuseta tüübi "!" või "Infallible" kaudu. Näiteks "fn can_never_fail() -> Result {…}".
  • Flagi "-Cpanic=abort" käitumine on muudetud, mille korral lubatakse vaikimisi unwind-tabelite genereerimine tagasivaate teostamiseks. Vana käitumise tagasitulekuks on optioon "-Cforce-unwind-tables=no".
  • Atribuudiga «#[macro_export]» seotud argumentide kontrollimist on tugevdatud. Kehtetute atribuutide määramisel kuvatakse nüüd viga, mitte hoiatus. Probleeme «#[macro_export]» kontrollitakse mitte ainult crate-paketi otse koostamisel, vaid ka sõltuvuste koostamisel.
  • Safe-koodis on lubatud saada raw-viiteid («&raw [mut | const]») uniooni tüüpide väli.
  • Sihtplatvormile mips64el-unknown-linux-muslabi64 on rakendatud dünaamilise sidumise tugi.
  • Toetatud minimaalne versioon välist tööriistade puhul on tõstetud LLVM 20 haru peale.
  • Stabiilsete versioonide hulka on lisatud uus komplekt API-sid, sealhulgas on stabiliseeritud meetodid ja tüüpide rakendused:
    • NonZero::div_ceil
    • Location::file_as_c_str
    • RwLockWriteGuard::downgrade
    • Box::new_zeroed
    • Box::new_zeroed_slice
    • Rc::new_zeroed
    • Rc::new_zeroed_slice
    • Arc::new_zeroed
    • Arc::new_zeroed_slice
    • btree_map::Entry::insert_entry
    • btree_map::VacantEntry::insert_entry
    • impl Extend for proc_macro::TokenStream
    • impl Extend for proc_macro::TokenStream
    • impl Extend for proc_macro::TokenStream
    • impl Extend for proc_macro::TokenStream
  • Märkus 'const' rakendatud funktsioonides:
    • ::rotate_left
    • ::rotate_right
  • Cargo paketihalduris on tagatud «git fetch» toimingu kordamine esialgse päringu ebaõnnestumise korral. Lisatud koostisosad Ghostty terminali emulaatoriga integreerimiseks. Käsiraamatusse on lisatud uus peatükk ehitusprotsessi optimeerimise kohta.

Kohustuslikud on ka hiljuti väljakuulutatud projektid ja üritused, mis on seotud Rustiga:

  • Ferrocene teatas, et on läbinud IEC 61508 (SIL 2) sertifitseerimise oma libcore teegi jaoks, mis sisaldab alamhulka Rusti standardse põhiteegi kõnedest. Sertifitseerimine kinnitab, et teek vastab kriitiliste tööstussüsteemide nõuetele. Ferrocene on tuntud Rusti keeles kriitiliste süsteemide (Safety-Critical Systems) rakenduste arendamiseks mõeldud tööriistade loomise poolest ning toetab FLS-i (Ferrocene Language Specification) spetsifikatsiooni, mille alusel arendatakse Rusti keele referentsspetsifikatsiooni.
  • On välja antud Iced 0.14 raamatukogu, mis on mõeldud graafiliste kasutajaliideste loomiseks reaktiivse programmeerimise mudeli abil. Iced on rakendanud arhidektuuri, millele on tuttav arendajatele, kes tunnevad ära Elm deklaratiivsete liideste loomise keelt. Pakutakse valmis vidinate komplekti koos asünkroonsete käitlejate loomise võimalusega ning liidese elementide kohandatud paigutusega vastavalt akna ja ekraani suurusele. Saadaval on mitu renderdusmootorit, mis toetavad Vulkanit, Metali ja DX12. Suurematest projektidest, mis kasutavad Iced'i, võib välja tuua COSMIC töölaua keskkonna.

    Uues versioonis on lisatud vidinad 'table', 'grid', 'sensor', 'float' ja 'pin', samuti on laiendatud Markdown'i vormindamise vidina võimalusi. Tehtud on järgmised täiustused: reaktiivne renderdamise režiim; vajadusel ilmuvad kerimisribad; API animatsioonide haldamiseks; sisendmeetodite tugi; headless-režiim; võimalus teha muudatusi ilma rakenduse peatamiseta (kuum reloading); kuvade dekodeerimise paralleelne töötlemine; tööriistad jõudluse silumiseks ja profileerimiseks.

  • Ribir projekt arendab raamatukogu platvormidevaheliste rakenduste loomiseks, mis võimaldab kasutada ühte rakenduse ühiskoodibaasi erinevate platvormide (Linux, Windows, macOS; tulevikus ka Android ja iOS) graafiliste rakenduste loomiseks. Pakutakse deklaratiivset liidese ehitamise keelt Rust-makrode põhjal, üle 20 vidina, teemasid ja wgpu põhist renderingut.
  • Esitletud on utiliit Island, mis on mõeldud rakenduste isoleeritud käivitamiseks. Sandbox-isoleerimiseks kasutatakse Landlocki mehhanismi. Island võimaldab luua reegleid TOML-formaadis ja rakendada neid Landlock abil olemasolevate käivitatavate failide isoleerimiseks, ilma et oleks vaja koodi muuta. Erinevalt Firejailist ei vaja utiliit Island root-õigusi ega erilisi volitusi.
  • Google esitles Rusti programmeerimiskeele põhjal loodud Wasefire tööriistu kaitstud püsivara arendamiseks. Peamine idee on käivitada eraldi isoleeritud töötlejad (appletid) püsivara (platvormi) põhikeskkonna kohal. Püsivara arendus ei ole seotud programmeerimiskeeltega — püsivara komponente saab tarnida WebAssembly kujul koos WASI (WebAssembly System Interface) laiendustega ja neid saab käitada Wasmtime'i abil.
  • Ilmus Rustis kirjutatud UEFI püsivara Patina 18. Patina pakub asendust UEFI püsivara põhikoostisosadele ja seda saab kasutada olemasolevate C keeles kirjutatud püsivarade järk-järgulisel üleviimisel Rusti keelele.
  • Brimstone projekt arendab uut JavaScripti mootorit, mis on kirjutatud nullist Rusti keeles. Praeguses vormis toetab see juba üle 97% ECMAScript 2026 võimalustest. Baidi kodeerimise täitmise virtuaalne masin on loodud V8 mootori arhitektuuri alusel.
  • Catteni projekt arendab eksperimentaalse operatsioonisüsteemi CharlotteOS tuuma, mis on kirjutatud Rustis. Tuum toetab ligipääsu haldamist 'capability' alusel (sarnaselt Fuchsiaga) ja kasutab sarnast Plan 9 jaotatud ressursside hierarhiat, kus failide aadresseerimine toimub URI-de kaudu.
  • Käideti interaktiivse käskude tõlgendaja Fish 4.2.0 (sõbralik interaktiivne shell). 4.x haru eristub täieliku koodibaasi tõlkimisega C++ keelest Rusti.
  • Ettevõte Cloudflare avaldas Rusti teegi tokio-quiche koodi, et integreerida QUIC ja HTTP/3 protokollide tugi asünkroonseid rakendusi põhineva Tokio raamistikuga.
  • Tor projekt avaldas väljaanded Arti 1.7 ja 1.8, Tor tööriistade rakenduse, mis on kirjutatud Rust keeles. Kui Arti kood saavutab taseme, mis suudab täielikult asendada C keeles kirjutatud variandi, kavatsevad Tor arendajad anda Artile Tor peamise rakenduse staatuse ja järk-järgult lõpetada C keeles kirjutatud variandi hooldamise.

    Uues versioonis on stabiliseeritud piiratud onion-teenuste määratlemise teostus kliendi autentimisega ("restricted-discovery"). SOCKS-proksi kõrval on lisatud toetust HTTP-proksile, mis kasutab CONNECT meetodit. Töökoormuse põhjal on rakendatud kohandatavad ajavahemikud. Lisatud katsetatav toetus tokio-console'ile. Funktsionaalsuse arendamine releede ja direktorite (Directory Authority) jaoks jätkub. serverite Lisatud käsk "arti hsc ctor-migrate" võtmete üleviimiseks C-klientidest Arti võtmehoidjasse. Lisatud seadistused onion-teenuste käivitamise juhtimiseks.

  • Avaldatud on RustDB, andmebaas, mis on loodud Rusti keeles, inspireerituna PostgreSQL-st. Toetatakse põhiskeemi SQL-operatsioone (CREATE/DROP TABLE/VIEW, INSERT, SELECT, UPDATE, DELETE, SHOW TABLES, EXPLAIN, VACUUM), tehingud, MVCC, WAL (Write-Ahead Log), indeksid, ühendamine PostgreSQL-i ühilduva protokolli kaudu. RustDB kirjutamisel kasutati tehisintellekti.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster