Mozilla projekti loodud, kuid nüüd sõltumatu mittetulundusühingu Rust Foundation egiidi all arendatud programmeerimiskeel Rust 1.94 on välja antud. Keel keskendub mälu turvalisusele ja pakub tööriistu ülesannete täitmise kõrge paralleelsuse saavutamiseks, ilma prügikogujat ja käituskeskkonda kasutamata (käituskeskkond taandub standardteegi põhilisele initsialiseerimisele ja hooldusele).
Rusti mäluhaldusmeetodid on loodud selleks, et kõrvaldada pointeri manipuleerimisel tekkivad vead ja kaitsta madala taseme mäluhaldusest tulenevate probleemide eest, näiteks mälule juurdepääs pärast selle vabastamist, null-pointerite dereferentsimine, puhvri ületäitumine jne. Projekt arendab Cargo paketihaldurit teekide levitamiseks, ehituse hõlbustamiseks ja sõltuvuste haldamiseks. Teekide majutamiseks hallatakse crates.io hoidlat.
Mälu turvalisus on Rustis kompileerimise ajal tagatud viidete kontrollimise, objekti omandiõiguse jälgimise, objektide eluea (ulatuse) jälgimise ja mälule juurdepääsu õigsuse hindamise kaudu koodi täitmise ajal. Rooste pakub ka kaitset täisarvude ületäitumise eest, nõuab muutujate väärtuste kohustuslikku lähtestamist enne kasutamist, käsitleb standardteegi vigu paremini, rakendab vaikimisi muutumatute viidete ja muutujate kontseptsiooni, pakub tugevat staatilist tippimist loogiliste vigade minimeerimiseks.
Peamised uuendused:
- Tüübil "viil" on nüüd meetod array_windows. See meetod loob iteraatori viilude läbimiseks fikseeritud suurusega akendes, mis liiguvad ühe elemendi võrra edasi. Erinevalt varasemast Windowsi meetodist töötab "array_windows" konstantse akna suurusega ja tagastab iga iteratsiooni puhul viite fikseeritud suurusega massiivile (&[T; N]) määratlemata suurusega viilu (&[T]) asemel. Kuna massiivi suurus on kompilaatorile algselt teada, saab jõudlust parandada, vältides piiride kontrollimist igal iteratsioonietapil. 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());
- Cargo paketihalduri konfiguratsioonifailid (.cargo/config.toml) rakendavad direktiivi "include", mis võimaldab teil kohapeal lisada teiste failide sisu. include = [ "frodo.toml", "samwise.toml", ] include = [ { path = "required.toml" }, { path = "optional.toml", optional = true }, ]
- Manifesti- ja konfiguratsioonifailidele on lisatud TOML 1.1 märgistuskeele uue versiooni tugi. See uus versioon lisab toe mitmerealistele manustatud tabelitele, kuueteistkümnendsüsteemis baitide esituste sisestamiseks mõeldud põgenemisjadale "\xHH" ja "\e" põgenemisjadale "\u001B" jaoks, lisaks võimalusele jätta viimase elemendi lõppu koma ja ajaväärtustest sekundid välja jätta. serde = { version = "1.0", features = ["derive"] } saab nüüd asendada järgmisega: serde = { version = "1.0", features = ["derive"], }
- API uus osa on viidud stabiilsete kategooriasse, sealhulgas on stabiliseeritud meetodid ja tunnuste rakendused:
- <[T]>::array_windows
- <[T]>::elemendi_nihe
- LazyCell::get
- LazyCell::get_mut
- LazyCell::force_mut
- LazyLock::get
- LazyLock::get_mut
- LazyLock::force_mut
- impl Proovi alates kasutamiseks
- std::iter::Peekable::next_if_map
- std::iter::Peekable::next_if_map_mut
- x86 avx512fp16 juhiste olemus
- AArch64 NEON fp16 juhiste olemus
- f32::consts::EULER_GAMMA
- f64::consts::EULER_GAMMA
- f32::consts::KULDNE_SUHE
- f64::consts::KULDNE_SUHE
- Märki "const" kasutatakse funktsioonides:
- f32::mul_add
- f64::mul_add
- Platvorm riscv64im-unknown-none-elf on viidud 3. tugitasemele. 3. tugitase hõlmab küll põhituge, kuid ei hõlma automatiseeritud testimist, ametlikke versiooniuuendusi ega versioonide kontrollimist.
Lisaks soovime esile tõsta hiljuti väljakuulutatud Rustiga seotud projekte ja sündmusi:
- Ayrton Muñoz, kes rakendas Rusti kompilaatoris Sony PlayStation 1 platvormi tuge ja portis FreeBSD Apple Silicon kiipidega arvutitele, on rakendanud Rustis võimaluse kirjutada kerneli komponente ja seadmedraivereid FreeBSD jaoks. Testimiseks on esitatud komplekt KPI (Kernel Programming Interface) seoseid, mis võimaldavad Rusti koodi kasutamist FreeBSD kernelis, koos virtio helidraiveriga (virtio_snd), DockChannel HID draiveriga M2 MacBooki klaviatuurile ja mitmete madala taseme draiveritega Maci arvutite alamsüsteemidele Apple Silicon kiipidel, mis kõik on loodud nende seostega.
Töö Rusti sidumiste kallal on kestnud alates 2024. aasta lõpust. Praegu rakendavad sidumised ainult osa C-KPI-dest ja neid peetakse ebastabiilseteks, kuid aja jooksul plaanitakse nende stabiilsust parandada, et see vastaks sarnase C-keele liidese stabiilsusele. Näitena pakutud virtio_snd draiver sobib muusika esitamiseks QEMU-s. Eeldatakse, et 2026. aastaks on Rusti sidumised piisavalt stabiilsed, et huvitatud arendajad saaksid neid koodi kirjutamiseks kasutama hakata.
- NetBSD arendaja Benny Siegert pakkus välja põhjenduse, miks Rusti tugi NetBSD kernelisse ei ilmu: NetBSD toetab arhitektuure, mille jaoks Rust pole saadaval; olemasoleva Rusti tööriistariba säilitamine pkgsrc-s on märkimisväärne pingutus ja seda toetavad vaid vähesed arendajad; Rusti kerneli tugi nõuab Rusti kompilaatori lisamist baassüsteemi; Rusti käivitamine NetBSD-s kasutab pärandbinaarpaketti, mis on vastuvõetamatu lähtekoodina levitatavate iseseisvate distributsioonide jaoks; Rusti väljalasketsüklid ei ühildu NetBSD arendus- ja tugitsüklitega pärandharude jaoks (näiteks 2020. aastal välja antud NetBSD 9 on endiselt toetatud, mis nõuaks kuue aasta vanuse Rusti kompilaatori saatmist ja toetamist).
- Опубликован выпуск встраиваемой в приложения СУБД Turso 0.5, написанной на языке Rust и совместимой с SQLite на уровне диалекта SQL, формата файлов БД и C API. Из расширенных возможностей отмечается механизм CDC (Change data capture) для отслеживания изменения БД в реальном времени, использование io_uring для асинхронного ввода/вывода в Linux, поддержка векторного поиска, наличие выражения ALTER для изменения схемы БД, возможность шифрования данных в БД, режим инкрементальных вычислений, конструкция «BEGIN CONCURRENT».
- Projekt, mis võimaldab Rusti standardteegi kasutamist GPU-poolsetes programmides.
- Emuko — эмулятор RISC-V, написанный на Rust, способный загружать Linux, поддерживающий JIT-компиляцию, способный сохранять и восстанавливать снапшоты состояния.
- RustConn (flatpak) on graafiline liides väliste võrguühenduste haldamiseks teiste hostidega, toetades SSH, RDP, VNC, SPICE, Telnet, Serial, Kubernetes, Zero Trust ja SFTP protokolli. Kood on kirjutatud Rustis, kasutades GTK4 ja Waylandi.
- Välja on antud zlib-rs 0.6 projekti uus haru, mis tähistab seda kui esimest stabiilset versiooni, mis on täielikult ühilduv zlib C API-ga ja sobib zlibi läbipaistvaks asendamiseks. Projekti eesmärk on luua turvaline alternatiiv zlibi andmetihendusteegile. Arendust tehakse zlib-ng projekti silmas pidades, mis arendab zlibi suure jõudlusega varianti.
- VCAD projekt on parameetrilise arvutipõhise projekteerimissüsteemi (CAD) arendus, mis on kirjutatud Rustis ja integreeritud tehisintellekti agentidega MCP protokolli abil. See toetab 3D-modelleerimist, simulatsiooni, 2D-visandamist, komponentide kokkupanekut, STEP-importi ja STL/GLB/STEP/DXF-eksporti.
- Avaldati Rustis kirjutatud kõnetuvastussüsteem, mis kasutab Mistral Voxtral Mini 4B reaalajas tehisintellekti mudelit ja Burn masinõppe raamistikku. Projekt keskendub otseülekande transkriptsiooni reaalajas kõnetuvastusele.
- Välja on antud tööriistakomplekt c2rust 0.22. See on loodud C-koodi (C99) tõlkimiseks ebaturvaliseks Rusti esituseks, mis on struktuurilt sarnane algse C-koodiga. Saadud tööraamistikku saab kasutada järkjärguliseks üleminekuks idiomaatilisele Rustile ja ebaturvaliste plokkide eemaldamiseks.
Allikas: opennet.ru
