Avaldatud Rust 1.94 programmeerimiskeel, mille arendust alustas Mozilla, kuid mida praegu arendab sĂ”ltumatu mittetulundusĂŒhing Rust Foundation. Keel keskendub mĂ€lu ohutule kĂ€sitlemisele ja pakub vahendeid kĂ”rge paralleelsuse saavutamiseks ĂŒlesannete tĂ€itmisel, ilma et oleks vaja prĂŒgikogujat ja runtime'i (runtime sisaldab vaid algset initsialiseerimist ja standardraamatukogu hooldamist).
Rust'i mĂ€lu töötlemise meetodid on suunatud pointerite manipuleerimise vigade vĂ€ltimisele ja probleemide kaitsmisele, mis tulenevad madala taseme mĂ€lu töötlemisest, nagu juurdepÀÀs vabastatud mĂ€lupiirkondadele, nullpointerite de-referentseerimine, mĂ€lupuhvri ĂŒletamine jne. Raamatukogude levitamiseks, ehituste tagamiseks ja sĂ”ltuvuste haldamiseks arendatakse pakihaldurit Cargo. Raamatukogude majutamiseks toetatakse repotites 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:
- TĂŒĂŒbile slice on lisatud meetod array_windows, mis loob iteraatori, et liikuda lĂ€bi lĂ”ikude "akendena" fikseeritud suurusega, millest igaĂŒht liigutatakse ĂŒhe elemendi kaupa. Erinevalt varasemalt saadaval olnud meetodist windows, opereerib meetod array_windows konstantse akna suurusega ja tagastab igas iteratsioonis viite fikseeritud suurusega massiivile (&[T; N]) asemel mÀÀramata suurusega lĂ”igule (&[T]). Kuna massiivi suurus on kompilaatori poolt algselt teada, saab jĂ”udluse tĂ”stmiseks piiride kontrollist loobuda igal iteratsiooni etapil. let slice = [0, 1, 2, 3]; let mut iter = slice.array_windows(); assert_eq!(iter.next().unwrap(), &[0, 1]); assert_eq!(iter.next().unwrap(), &[1, 2]); assert_eq!(iter.next().unwrap(), &[2, 3]); assert!(iter.next().is_none());
- Pakihalduri Cargo konfiguratsioonifailides (.cargo/config.toml) on sisse viidud direktiiv "include", mis vÔimaldab kohapeal teiste failide sisu sisestada. include = [ "frodo.toml", "samwise.toml", ] include = [ { path = "required.toml" }, { path = "optional.toml", optional = true }, ]
- Manifesti ja konfiguratsioonifailidesse on lisatud uus TOML 1.1 mĂ€rgistuskeele versioon, kus on lisatud tugi mitmerealine embedded tabelite, escape-jĂ€rjestuste "\xHH" kasutamiseks baitide kuuekĂŒmnendas vormis ja "\e" jahimehe asendamiseks "\u001B" ning vĂ”imalus jĂ€tta koma viimase elemendi lĂ”ppu ja jĂ€tta vĂ€lja sekundite mÀÀramine ajavÀÀrtustes. serde = { version = "1.0", features = ["derive"] } nĂŒĂŒd saab asendada serde = { version = "1.0", features = ["derive"], };
- Uus hulk API-d on viidud stabiilsuse tasemele, sealhulgas on stabiliseeritud meetodid ja tĂŒĂŒbispetsiifikatsioonide rakendused:
- ::array_windows
- ::element_offset
- LazyCell::get
- LazyCell::get_mut
- LazyCell::force_mut
- LazyLock::get
- LazyLock::get_mut
- LazyLock::force_mut
- impl TryFrom for usize
- std::iter::Peekable::next_if_map
- std::iter::Peekable::next_if_map_mut
- Kaasas olevad funktsioonid x86-juhtkÀskude avx512fp16 jaoks
- Kaasas olevad funktsioonid AArch64-juhtkÀskude NEON fp16 jaoks
- f32::consts::EULER_GAMMA
- f64::consts::EULER_GAMMA
- f32::consts::GOLDEN_RATIO
- f64::consts::GOLDEN_RATIO
- MĂ€rgis âconstâ on rakendatud funktsioonides:
- f32::mul_add
- f64::mul_add
- Riscv64im-unknown-none-elf platvorm on tÔlgitud kolmandasse toetustaseme. Kolmas tase katab pÔhitugi, kuid ilma automatiseeritud testimise, ametlike kogude avaldamise ja koodi kompileerimise kontrollimiseta.
Lisaks vĂ”ib mainida hiljuti kuulutatud projekte ja sĂŒndmusi, mis on seotud Rustiga:
- Ayrton Muñoz, kes kunagi realiseeris Sony PlayStation 1 platvormi toe Rust kompilaatoris ja portis FreeBSD Apple Siliconi kiipidega arvutitele, on rakendanud FreeBSD-s vĂ”imalust luua kerneli komponente ja seadme draivereid Rust keeles. Testimiseks on pakutud KPI-ĂŒmbriseid (Kernel Programming Interface), mis vĂ”imaldavad kasutada Rust koodi FreeBSD tuumas, samuti loodud nende kasutamisega helidraiver virtio (virtio_snd), HID-draiver DockChannel M2 MacBooki klaviatuuri jaoks ning mitmed madala taseme draiverid Mac arvutite alamsĂŒsteemidele Apple Siliconi kiipidel.
Tööd Rust-ĂŒmbriste kallal on olnud kĂ€imas alates 2024. aasta lĂ”pust. Ămbristes on praegu rakendatud vaid osa C-KPI-st ja need on positsioneeritud kui ebastabiilsed, kuid ajaga kavatsetakse stabiilsus viia sarnasele tasemele C keele liidesega. NĂ€idisena pakutud virtio_snd draiver sobib muusika taasesitamiseks QEMU-s. Eeldatakse, et 2026. aastaks stabiliseeruvad Rust-ĂŒmbrised piisavalt, et huvitatud arendajad saaksid alustada nende kasutamist koodi kirjutamiseks.
- Benny Siegert, kes osaleb NetBSD arendamisel, pĂŒĂŒdis selgitada, miks Rust keele tugi ei ilmu NetBSD tuuma: NetBSD toetab arhitektuure, mille jaoks Rust ei ole saadaval; olemasoleva pkgsrc Rust tööriistaku sĂ€ilitamine nĂ”uab suuri pingutusi ning on sellega seotud vaid vĂ€heste arendajatega; Rust toe lisamine tuuma nĂ”uab Rust kompilaatori lisamist pĂ”hissĂŒsteemi; Rusti bootstrapping NetBSD-s kasutab vanemat binaarpakett, mis on aktsepteerimatu isesaadaval allika koodi jaotustes; Rusti vĂ€ljaannete tsĂŒklid ei ĂŒhildu NetBSD arendustsĂŒkli ja varasemate harude toetusega (nĂ€iteks jĂ€tkub NetBSD 9 haru, mis ilmus 2020. aastal, toetamine, nii et selles olukorras oleks vajalik kuue aasta vanuse Rust kompilaatori pakkumine ja toetamine).
- Avaldati rakendustesse integreeritav andmebaas Turso 0.5, mis on kirjutatud Rust'i keeles ja ĂŒhilduv SQLi dialektide, andmebaasi failivormingute ja C API-ga. Uute vĂ”imaluste seas on CDC (Change data capture) mehhanism, et reaalajas jĂ€lgida andmebaasi muutusi, io_uring'i kasutamine asĂŒnkroonse sisendi/sisendi jaoks Linuxis, vektorlseekuse tugi, ALTER lause olemasolu andmebaasi skeemi muutmiseks, andmete krĂŒpteerimise vĂ”imalus, inkrementaalsete arvutuste reĆŸiim, konstruktsioon "BEGIN CONCURRENT".
- Projekt, mis vÔimaldab kasutada Rust'i standardkogu GPU-poolsetes programmides.
- Emuko â RISC-V emulaator, mis on kirjutatud Rust'is, suudab laadida Linuxi, toetab JIT-kompileerimist ning suudab salvestada ja taastada olekusnapshot'e.
- RustConn (flatpak) â graafiline liides vĂ€liste vĂ”rguĂŒhenduste haldamiseks teiste hostide juurde, toetades SSH, RDP, VNC, SPICE, Telnet, Serial, Kubernetes, Zero Trust ja SFTP. Kood on kirjutatud Rust'is kasutades GTK4 ja Wayland'i.
- Esitatud on uus versioon zlib-rs 0.6 projektist, mis on tĂ€histatud kui esimene stabiilne versioon, tĂ€ielikult ĂŒhilduv zlib C API ja sobib zlib'i lĂ€bipaistvaks asendamiseks. Projekt on suunatud erineva kaitsega andmesuru tööriista loomiseks, mille arendamisel arvestatakse zlib-ng projekti, mis arendab kĂ”rge jĂ”udlusega zlib varianti.
- Esitatud projekt vcad, mis arendab parameetrilist automatiseeritud projekteerimissĂŒsteemi (CAD), mis on kirjutatud Rust'is ja integreeritav AI-agendiga MCP protokolli kaudu. Toetatakse 3D-modelleerimist, simulatsiooni, 2D-skeemide töötlemist, komponentide koostamist, STEP vormingus importimist ja STL/GLB/STEP/DXF vormingutes eksportimist.
- Avaldatud on kĂ”netuvastussĂŒsteem, mis on kirjutatud Rust'is ja kasutab AI mudelit Mistral Voxtral Mini 4B Realtime ja masinĂ”ppe raamistikku Burn. Projekt on suunatud kĂ”ne reaalajas tuvastamisele voogedastuse transkribeerimise loomiseks.
- Ilmus tööriistakomplekt c2rust 0.22, mis on mĂ”eldud C-koodi (C99) ĂŒleviimiseks Rust'i unsafe-esitlusse, mis on struktuurilt lĂ€hedane algsele C-koodile. Saadud töövormi saab hiljem kasutada jĂ€rkjĂ€rguliseks viimiseks idiomaatilisse Rust'i ja unsafe-blokkide eemaldamiseks.
Allikas: opennet.ru
