Programmeerimiskeele Rust 1.94 vĂ€ljaanne on avaldatud, mida arendab Mozilla projekt, kuid mida arendatakse nĂŒĂŒd sĂ”ltumatuks mittetulundusĂŒhinguks Rust Foundationi all. Keele fookus on mĂ€luhalduse ohutul kasutamisel ja see pakub vĂ”imalusi kĂ”rge ĂŒlesannete paralleelsuse saavutamiseks, vĂ€ltides samas prĂŒgikorjaja ja runtime'i kasutamist (runtime piirdub pĂ”hialustamise ja standardraamatukogu hooldamisega).
Rustis mĂ€luga töötamise meetodid on suunatud vigade vĂ€ltimisele pointer'itega manööverdamisel ja probleemide kaitsmisele madala taseme mĂ€lutöötlusest, nagu mĂ€lupiirkonna kasutamine pĂ€rast selle vabastamist, nullpunktide de-referentsimine, mĂ€lupiiri ĂŒletamine jne. Raamatukogude levitamiseks, ehituse tagamiseks 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:
- Slice tĂŒĂŒpi on lisatud meetod array_windows, mis loob iteraatori, et lĂ€bida s lĂ”ikeid, kasutades fikseeritud suurusega aknaid, mis nihkuvad ĂŒhe elemendi kaupa. Erinevalt varasemast meetodist windows opereerib array_windows pĂŒsiva akna suurusega ja tagastab igal iteratsioonil viite mÀÀratud suurusega massiivile (&[T; N]) selle asemel, et tagastada mÀÀramata suurusega lĂ”iget (&[T]). Kuna massiivi suurus on algselt kompilaatorile teada, saab pakkuda paremat jĂ”udlust, vĂ€ltides iga iteratsiooni etapis massiivi piiride kontrollimist. 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());
- Pakettide halduri Cargo (.cargo/config.toml) konfiguratsioonifailides on rakendatud direktiiv âincludeâ, mis vĂ”imaldab kohapeal sisestada teiste failide sisu. include = [ "frodo.toml", "samwise.toml", ] include = [ { path = "required.toml" }, { path = "optional.toml", optional = true }, ]
- Manifesti ja konfiguratsioonifailidesse on lisatud toetus uuele TOML 1.1 mĂ€rgistuskeele versioonile, kus on lisatud mitmerealiste sisseehitatud tabelite tugi, escape-jĂ€rjestusi "\xHH" baitide heksakoodide lisamiseks ja "\e" asendamiseks "\u001B", vĂ”imalus jĂ€tta viimasel elemendil koma maha ja jĂ€tta sekundite mÀÀramine ajavÀÀrtustes vahele. serde = { version = "1.0", features = ["derive"] } nĂŒĂŒd saab asendada jĂ€rgnega: serde = { version = "1.0", features = ["derive"], }
- Stabiilsete versioonide hulka on lisatud uus komplekt API-sid, sealhulgas on stabiliseeritud meetodid ja tĂŒĂŒpide 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
- Sisseehitatud funktsioonid x86 avx512fp16 kÀskude jaoks
- Sisseehitatud funktsioonid AArch64 NEON fp16 kÀskude jaoks
- f32::consts::EULER_GAMMA
- f64::consts::EULER_GAMMA
- f32::consts::GOLDEN_RATIO
- f64::consts::GOLDEN_RATIO
- MĂ€rkus 'const' rakendatud funktsioonides:
- f32::mul_add
- f64::mul_add
- Platvorm riscv64im-unknown-none-elf on viidud kolmandale toetasemele. Kolmas tase hÔlmab pÔhitoetust, kuid ilma automatiseeritud testimise, ametlike koostiste avaldamise ja koodi koostamisvÔimekuse kontrollita.
Kohustuslikud on ka hiljuti vĂ€ljakuulutatud projektid ja ĂŒritused, mis on seotud Rustiga:
- Ayrton Muñoz, kes on kunagi rakendanud Sony PlayStation 1 toe Rusti kompilaatoris ja tegelenud FreeBSD portimisega Apple Silicioni kiipide arvutitele, on FreeBSD jaoks rakendanud vĂ”imalust luua tuuma komponente ja seadme draivereid Rusti keeles. Testimiseks on pakutud KPI-mooduleid (Kernel Programming Interface), mis vĂ”imaldavad kasutada Rusti koodi FreeBSD tuumas, samuti on loodud helidraiver virtio (virtio_snd), HID-draiver DockChannel jaoks M2 MacBooki klaviatuuri jaoks ning mitmed madalama taseme draiverid Maci arvutite alamsĂŒsteemidele Apple Silicioni kiipidel.
Teatatakse, et Rusti moodulite arendamine algas 2024. aasta lÔpust. Moodulites on praegu rakendatud vaid osa C-KPI-st ja neid positsioneeritakse ebastabiilsetena, kuid aja jooksul soovitakse stabiilsus viia samale tasemele nagu C keele liides. NÀiteks on virtio_snd draiver sobilik muusika esitamiseks QEMU-s. Eeldatakse, et 2026. aastaks stabiliseeruvad Rusti moodulid piisavalt, et huvitatud arendajad saaksid hakata neid koodi kirjutamiseks kasutama.
- Benny Siegert, kes osaleb NetBSD arenduses, pĂŒĂŒdis pĂ”hjendada, miks Rusti keele tugi ei tule NetBSD tuumasse: NetBSD toetab arhitektuure, mille jaoks Rust ei ole saadaval; olemasoleva Rust tööriistade komplekti hoidmine pkgsrc'is nĂ”uab suurt pingutust ja seda teevad vaid mĂ”ned arendajad; Rusti toe saamine tuumas nĂ”uab Rusti kompilaatori lisamist pĂ”hissĂŒsteemi; Rusti buustrepeerimise kĂ€igus NetBSD-s kasutatakse vanema versiooni binaarpaketist, mis ei ole aktsepteeritav iseseisvates ja avatud lĂ€htekoodiga distributsioonides; Rusti vĂ€ljaandmistsĂŒklid ei ĂŒhti NetBSD arendamise ja varasemate versioonide toe tsĂŒklitega (nĂ€iteks jĂ€tkub NetBSD 9, mis ilmus 2020. aastal, tugi, mis tĂ€hendaks, et kuue aasta vanuse Rusti kompilaatori tarnimine ja tugi oleks vajalik).
- Avalikustatud on Turso 0.5, mis on rakendustesse sisseehitatud andmebaasihaldussĂŒsteem, kirjutatud Rustis ning ĂŒhilduv SQL-i dialekti, andmebaasi failiformaatide ja C API-ga. Laiendatud vĂ”imalustena mĂ€rgitakse CDC (Change data capture) mehhanism andmebaasi muutuste reaalajas jĂ€lgimiseks, io_uring'i kasutamine Linuxis asĂŒnkroonses sisend-/vĂ€ljundoperatsioonis, vektoriotsingu tugi, ALTER-lause olemasolu andmebaasi skeemi muutmiseks, andmete krĂŒpteerimise vĂ”imalus, inkrementaalsete arvutuste reĆŸiim ja konstruktsioon âBEGIN CONCURRENTâ.
- Projekt, mis vÔimaldab kasutada Rusti standardteeki GPU poolse programmi raames.
- Emuko â RISC-V emulaator, kirjutatud Rustis, suudab laadida Linuxi, toetab JIT-kompileerimist ning suudab salvestada ja taastada olekusnapshote.
- RustConn (flatpak) â graafiline liides vĂ€liste vĂ”rguside haldamiseks teiste hostide juurde, toetades SSH, RDP, VNC, SPICE, Telnet, Serial, Kubernetes, Zero Trust ja SFTP. Kood on kirjutatud Rustis, kasutades GTK4 ja Wayland'i.
- Esitleme uue projekti zlib-rs 0.6 haru, mis on mĂ€rgistusena esimene stabiilne versioon, mis on tĂ€ielikult ĂŒhilduv zlib C API-ga ja sobib zlib-i lĂ€bipaistvaks asendamiseks. Projekt keskendub andmete tihendamise teegi turvalise analooge loomisele. Arendust teostatakse silmas pidades zlib-ng projekti, mis arendab kĂ”rgtehnoloogilist zlib versiooni.
- Esitatud on projekt vcad, mis arendab parameetrilist arvutiprojektimise sĂŒsteemi (SAPS), kirjutatud Rustis ja integreeritav AI-agendidega MCP protokolli kaudu. Toetatakse 3D-modelleerimist, simulatsiooni, 2D-skeemide töötlemist, komponentide kogumist, STEP formaadis importi ning STL/GLB/STEP/DXF formaadist eksportimist.
- Avaldatud on kĂ”netuvastussĂŒsteem, kirjutatud Rustis ja kasutav AI mudelit Mistral Voxtral Mini 4B Realtime ning masinĂ”ppe raamistikku Burn. Projekt on suunatud reaalajas kĂ”netuvastusele, et luua transkriptsiooni voogedastuse kĂ€igus.
- Ilmus C2Rust 0.22 tööriistakomplekt, mis on mĂ”eldud C-koodi (C99) tĂ”lkimiseks Rusti, mille unsafe-esitlus on struktuuriliselt lĂ€hedane algsele C-koodile. Saadud töövĂ”rk on edaspidi kasutatav jĂ€rkjĂ€rguliseks ĂŒleminekuks idiomaatiliseks Rustiks ja unsafe-blokkide eemaldamiseks.
Allikas: opennet.ru
