Rust 1.92 väljaanne. Rust-projektid GUI, liivakasti isolatsiooni ja püsivara loomise jaoks.

Avaldati programmeerimiskeele Rust 1.92 versioon, mis põhineb Mozilla projektist, kuid mida arendatakse nüüd sõltumatu mittetulundusühingu Rust Foundation toetusel. Keel keskendub mälu ohutule töötlemisele ja pakub võimalusi tööde kõrge paralleelsuse saavutamiseks, samal ajal ilma prügikoristaja ja runtime'ita (runtime piirdub põhialustamise ja standardraamatukogu hooldamisega).

Mäluga töötamise meetodid Rust'is vabastavad arendajad pointerite manipulatsiooni vigadest ja kaitsevad neid probleemide eest, mis tulenevad madala taseme mälu haldamisest, nagu mälualale pärast selle vabastamist juurdepääs, null-pointerite dereferentseerimine, puhverserveri piiridest väljumine jne. Raamatukogude levitamiseks, kokkupaneku tagamiseks ja sõltuvuste haldamiseks arendatakse paketihaldurit Cargo. Raamatukogude majutamiseks toetatakse repoturite crates.io.

Mäluhügieen Rust'is tagatakse kompileerimise ajal viidete kontrollimise, objektide omandi jälgimise, objektide eluaja (vaateala) arvestamise ja mälule juurdepääsu korrektuse hindamise kaudu koodi täitmise ajal. Rust pakub ka vahendeid täisarvude ülevoolude vältimiseks, nõuab muutujate väärtuste kohustuslikku initsialiseerimist enne kasutamist, käsitleb vigu paremini standardraamatukogus, rakendab muutumatuse (immutable) mõistet viidete ja muutujate jaoks vaikimisi ning pakub tugevat staatilist tüüpimist loogiliste vigade vähendamiseks.

Peamised uuendused:

  • Jätkub tüübi «never» stabiliseerimine, mida tähistab sümbol «!», ja mis määratleb arvutusi, mis ei tagasta kunagi väärtusi (näiteks funktsioon «exits», makro «panic!» ja lõputud tsüklid ei naase kunagi juhtimist). Uues versioonis on lint-kontrollid «never_type_fallback_flowing_into_unsafe» ja «dependency_on_unit_never_type_fallback» vaikimisi lülitatud hoiatustest kompileerimisvigade genereerimisele. Need kontrollid aktiveeruvad, kui koodis esinevad probleemid, mis ilmnevad tüübi «never» kasutamisel.

    Esialgsete hinnangute kohaselt on sarnaseid probleeme ligikaudu 500 crate-paketis. Lint-kontrollide aktiveerimine võimaldab valmistuda tüübi «never» stabiliseerimiseks, mis on praegu klassifitseeritud eksperimentaalsete võimaluste hulka. Lint-kontrollid aktiveeruvad ainult otse pakettide kompileerimisel ja ei ilmu sõltuvuste kompileerimisel. Kontrollid saab ka välja lülitada atribuudi «#[allow]» kaudu.

  • Muudetud on lint-kontrolli «unused_must_use» käitumist, mis aktiveerub, kui ignoreeritakse funktsiooni tagastatud väärtust, kui funktsioon või tagastatav tüüp on märgitud atribuudiga «#[must_use]». Uues versioonis on lõpetatud hoiatused Result ja ControlFlow tüüpide, kus veatase on määratud väärtusteta tüübi («!» või «Infallible») kaudu tagastamise ignoreerimise kohta. Näiteks «fn can_never_fail() -> Result {…}».
  • Muudetud on lipu «-Cpanic=abort» käitumist, mille määramisel on vaikimisi lubatud tagasitõmbetabelite genereerimine tagasijälgimise (backtrace) tegemiseks. Vanade käitumise taastamiseks on ette nähtud valik «-Cforce-unwind-tables=no».
  • Tugevdati atribuudi «#[macro_export]» argumentide kontrolli. Kehtetute attribuutide määramisel antakse nüüd viga, mitte hoiatus. Probleeme «#[macro_export]» kontrollitakse mitte ainult crate-paketi otsese kompileerimise ajal, vaid ka sõltuvuste kompileerimise ajal.
  • Safe-koodis on lubatud raw-viidete («&raw [mut | const]») saamine union-tyüpide väljadele.
  • Sihtplatvormi mips64el-unknown-linux-muslabi64 jaoks on rakendatud dünaamilise sidumise tugi.
  • Väline tööriistade LLVM minimaalne versioon on tõstetud LLVM 20 haru tasemele.
  • Uus hulk API-d on viidud stabiilsuse tasemele, sealhulgas on stabiliseeritud meetodid ja tüübispetsiifikatsioonide 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ärgis „const“ on rakendatud funktsioonides:
    • ::rotate_left
    • ::rotate_right
  • Pakettide halduris Cargo tagatakse „git fetch“ toimingu kordamine esialgse päringu ebaõnnestumise korral. Lisatud komponendid ühendamiseks terminali emulaatoriga Ghostty. Juhendisse on lisatud uus peatükk ehitusprotsessi optimeerimise kohta.

Lisaks võib mainida hiljuti kuulutatud projekte ja sündmusi, mis on seotud Rustiga:

  • Ettevõte Ferrocene teatas, et on läbinud IEC 61508 (SIL 2) sertifitseerimise Rusti standardse põhiraamatukogu funktsioonide alamhulga jaoks sisaldava raamatukogu libcore. Sertifitseerimine kinnitab raamatukogu vastavust kriitiliselt oluliste tööstuslike süsteemide nõuetele. Ferrocene on tuntud tööriistade väljatöötamise poolest Rustis kriitilise tähtsusega süsteemide (Safety-Critical Systems) rakenduste loomiseks ning FLS (Ferrocene keele spetsifikatsiooni) hoidmise poolest, mille alusel areneb Rusti keele referentsspetsifikatsioon.
  • Ilmus Iced 0.14 raamatukogu väljaanne kasutajaliideste loomiseks reaktiivse programmeerimise mudeli abil. Iced rakendab arhitektuuri, mis on tuttav neile arendajatele, kes tunnevad deklareeritud liidese loomise keelt Elm. Pakutakse valmis komplekti vidinaid koos võimalustega asünkroonsete töötlejate loomiseks ja kasutajaliidese elementide kohandatud paigutuse rakendamiseks vastavalt akna ja ekraani suurusele. Pakutakse mitmeid joonistusmootoreid, mis toetavad Vulkanit, Metalit ja DX12. Suuremate projektide seas, mis kasutavad Icedit, tasub märkida COSMIC töölauakeskkonda.

    Uues versioonis on lisatud vidinad „table“, „grid“, „sensor“, „float“ ja „pin“, samuti on laiendatud vidina võimalusi Markdowni vormindamisega töötamiseks. Rakendatud on: reaktiivne joonistamisrežiim; vajadusel ilmuvad kerimisribad; API animatsioonidega töötamiseks; sisendmeetodite tugi; peajõu režiim; muudatuste tegemise võimalus ilma rakenduse peatamiseta (kuum laadimine); piltide dekodeerimise paralleelne töötlemine; tööriistad jõudluse silumiseks ja profileerimiseks.

  • Projekt Ribir arendab raamatukogu mitme platvormi rakenduste loomiseks graafilise liidese jaoks, mis võimaldab kasutada ühtset rakenduse koodibaasi erinevate platvormide (Linux, Windows, macOS, tulevikus Android ja iOS) graafiliste rakenduste loomiseks. Saadaval on deklaratiivne liideseehituse keel Rusti makrode põhjal, rohkem kui 20 vidinat, teema kujundus, wgpu-põhine renderdamine.
  • Esitatud on utiliit Island, mis on mõeldud rakenduste isoleeritud käitamiseks. Sandbox-isolatsiooni tagab Landlock mehhanism. Island võimaldab luua reegleid TOML-formaadis ja rakendada neid Landlocki abil olemasolevate täitmisfailide isoleerimiseks, ilma et oleks vaja koodis muudatusi teha. Erinevalt Firejail'ist ei vaja utiliit Island juurõigusi ega spetsiaalseid volitusi.
  • Ettevõte Google esitles Rustis kirjutatud tööriista Wasefire turvaliste püsivaramudede arendamiseks. Peamine idee on käivitada eraldiseisvaid isoleeritud töötlejat (appletid) püsivaramudede (platvormide) alusel. Püsivaramudede arendamine ei ole seotud programmeerimiskeeltega — püsivaramudede komponendid võivad olla esitatud WebAssembly vormis, koos WASI (WebAssembly System Interface) laiendustega ja neid saab käitada Wasmtime'i abil.
  • Avaldatud on UEFI-püsivaramud Patina 18, kirjutatud Rustis. Patina pakub asendust UEFI püsivaramudede põhikomponentidele ja seda saab kasutada olemasolevate C keeles kirjutatud püsivaramudede järkjärguliseks üleviimiseks Rusti keelde.
  • Projekt Brimstone arendab uut JavaScript'i mootorit, mis on kirjutatud nullist Rusti keeles. Praeguses vormis toetab see juba 97% ECMAScript 2026 võimalustest. Byte-koodi töötlemise virtuaalmasin on loodud, arvestades V8 mootori arhitektuuri.
  • Projekt Catten arendab tuuma eksperimentaalsele operatsioonisüsteemile CharlotteOS, mis on kirjutatud Rustis. Tuum toetab juurdepääsu haldamist „capability” põhjal (sarnaselt Fuchsiale) ja kasutab Plan 9-le sarnast jaotatud ressursside hierarhiat, kus failiteed on adresseeritud URI-de kaudu.
  • Välja on antud interaktiivne käsurea tõlgendus Fish 4.2.0 (sõbralik interaktiivne shell). 4.x haru on tuntud oma koodibaasi täieliku tõlke poolest C++-st Rusti.
  • Ettevõte Cloudflare avas Rusti teeki tokio-quiche koodi, et integreerida QUIC ja HTTP/3 protokollide tugi asünkroonses arenduses, mis põhineb raamistikul Tokio.
  • Projekt Tor avaldas versioonid Arti 1.7 ja 1.8, Rustis kirjutatud Tor tööriistade rakendused. Kui Arti kood jõuab tasemele, mis suudab täielikult asendada C variandi, kavatseb Tor arendajad anda Arti staatuse Tor põhiteostele ja järk-järgult lõpetada C variandi hooldust.

    Uues versioonis on stabiliseeritud piiratud onion-service’ide rakendus, kasutades kliendi autentimist („restricted-discovery”). SOCKS-proksi kõrval on lisatud tugi HTTP-proksile, mis kasutab CONNECT meetodit. Rakendatud on ajastuste kohandamine koormuse põhjal. Lisatud on eksperimentaalne tugi tokio-console jaoks. Funktsionaalsuse arendamine edasistele sõlmedele ja serverid direktoritele (Directory Authority) on jätkuvalt käimas. Lisatud on käsk „arti hsc ctor-migrate”, et üle kanda võtmed C-kliendilt Arti võtmehoidjasse. Lisatud on seaded onion-service’ide käivitamise juhtimiseks.

  • Avaldati RustDB andmebaas, mis on kirjutatud Rustis ning inspiratsiooni on saadud PostgreSQL-ist. Toetatakse põhifunktsioone SQL-is (CREATE/DROP TABLE/VIEW, INSERT, SELECT, UPDATE, DELETE, SHOW TABLES, EXPLAIN, VACUUM), tehingud, MVCC, WAL (Write-Ahead Log), indeksid ja ühendamine PostgreSQL ühilduva protokolli kaudu. RustDB kirjutamiseks kasutati tehisintellekti.

Allikas: opennet.ru

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster