Objavljen je programski jezik Rust 1.94, koji je osnovao Mozilla projekt, ali se sada razvija pod pokroviteljstvom neovisne neprofitne organizacije Rust Foundation. Jezik se fokusira na sigurnost memorije i pruža alate za postizanje visokog paralelizma izvršavanja zadataka, a pritom se ne koristi sakupljač smeća i okruženje za izvođenje (izvođenje je svedeno na osnovnu inicijalizaciju i održavanje standardne biblioteke).
Rustove metode upravljanja memorijom osmišljene su kako bi se uklonile pogreške u manipulaciji pokazivačima i zaštitile od problema koji proizlaze iz upravljanja memorijom na niskoj razini, kao što su pristup memoriji nakon što je oslobođena, dereferenciranje nultih pokazivača, prekoračenje međuspremnika i tako dalje. Projekt razvija upravitelj paketa Cargo za distribuciju biblioteka, olakšavanje izgradnje i upravljanje ovisnostima. Repozitorij crates.io održava se za hosting biblioteka.
Sigurnost memorije osigurana je u Rustu tijekom kompajliranja provjerom referenci, praćenjem vlasništva objekta, praćenjem životnih vijekova objekta (opsega) i procjenom ispravnosti pristupa memoriji tijekom izvođenja koda. Rust također pruža zaštitu od prekoračenja cjelobrojnih brojeva, zahtijeva obaveznu inicijalizaciju vrijednosti varijabli prije upotrebe, bolje obrađuje pogreške u standardnoj biblioteci, primjenjuje koncept nepromjenjivih referenci i varijabli prema zadanim postavkama, nudi snažno statično tipkanje za smanjenje logičkih pogrešaka.
Glavne inovacije:
- Tip slice sada ima metodu array_windows. Ova metoda stvara iterator za pomicanje slojeva u prozorima fiksne veličine koji se pomiču za jedan element odjednom. Za razliku od prethodno dostupne metode windows, array_windows radi s konstantnom veličinom prozora i vraća referencu na niz fiksne veličine (&[T; N]) umjesto sloja nedefinirane veličine (&[T]) za svaku iteraciju. Budući da je veličina niza inicijalno poznata kompajleru, performanse se mogu poboljšati izbjegavanjem provjere granica u svakoj fazi iteracije. 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());
- Konfiguracijske datoteke upravitelja paketa Cargo (.cargo/config.toml) implementiraju direktivu "include" koja vam omogućuje umetanje sadržaja drugih datoteka na mjesto. include = [ "frodo.toml", "samwise.toml", ] include = [ { path = "required.toml" }, { path = "optional.toml", optional = true }, ]
- U datoteke manifesta i konfiguracije dodana je podrška za novu verziju jezika za označavanje TOML 1.1. Ova nova verzija dodaje podršku za višeredne ugrađene tablice, izlazni niz "\xHH" za umetanje heksadecimalnih bajtnih prikaza i izlazni niz "\e" za "\u001B", uz mogućnost ostavljanja zareza na kraju posljednjeg elementa i izostavljanja sekundi u vremenskim vrijednostima. serde = { version = "1.0", features = ["derive"] } sada se može zamijeniti sa serde = { version = "1.0", features = ["derive"], }
- Novi dio API-ja premješten je u kategoriju stabilnih, uključujući metode i implementacije karakteristika koje su stabilizirane:
- <[T]>::array_windows
- <[T]>::pomak_elementa
- LazyCell::uzmi
- LazyCell::get_mut
- LazyCell::force_mut
- LazyLock::uzmi
- LazyLock::get_mut
- LazyLock::force_mut
- imp TryFrom za upotrebu
- std::iter::Peekable::next_if_map
- std::iter::Peekable::next_if_map_mut
- Intrinzične funkcije za x86 avx512fp16 instrukcije
- Intrinzične funkcije za AArch64 NEON fp16 instrukcije
- f32::consts::EULER_GAMMA
- f64::consts::EULER_GAMMA
- f32::consts::ZLATNI_OMJER
- f64::consts::ZLATNI_OMJER
- Znak “const” koristi se u funkcijama:
- f32::mul_add
- f64::mul_add
- Platforma riscv64im-unknown-none-elf premještena je na razinu podrške 3. Razina podrške 3 uključuje osnovnu podršku, ali ne uključuje automatizirano testiranje, službena izdanja ili provjeru verzija.
Osim toga, željeli bismo istaknuti nedavno najavljene projekte i događaje vezane uz Rust:
- Ayrton Muñoz, koji je implementirao podršku za platformu Sony PlayStation 1 u Rust kompajleru i prenio FreeBSD na računala s Apple Silicon čipovima, implementirao je mogućnost pisanja komponenti kernela i upravljačkih programa uređaja u Rustu za FreeBSD. Za testiranje je osiguran skup KPI (Kernel Programming Interface) povezivanja koji omogućuju korištenje Rust koda u FreeBSD kernelu, zajedno s virtio upravljačkim programom za zvuk (virtio_snd), DockChannel HID upravljačkim programom za tipkovnicu M2 MacBook i nekoliko niskorazinskih upravljačkih programa za podsustave Mac računala na Apple Silicon čipovima, a svi su stvoreni pomoću ovih povezivanja.
Rad na Rust vezama traje od kraja 2024. Trenutno veze implementiraju samo dio C-KPI-jeva i smatraju se nestabilnima, ali s vremenom se planira poboljšati njihova stabilnost kako bi se uskladila sa sličnom sučeljem za C jezik. Drajver virtio_snd, predložen kao primjer, prikladan je za reprodukciju glazbe u QEMU-u. Očekuje se da će do 2026. Rust veze biti dovoljno stabilne da ih zainteresirani programeri počnu koristiti za pisanje koda.
- NetBSD-ov programer Benny Siegert ponudio je obrazloženje zašto se podrška za Rust neće pojaviti u NetBSD kernelu: NetBSD podržava arhitekture za koje Rust nije dostupan; održavanje postojećeg Rust alata u pkgsrc-u predstavlja značajan napor i podržava ga samo nekoliko programera; podrška za Rust u kernelu zahtijeva da Rust kompajler bude uključen u osnovni sustav; pokretanje Rusta na NetBSD-u koristi naslijeđeni binarni paket, što je neprihvatljivo za samostalne distribucije distribuirane kao izvorni kod; Rustovi ciklusi izdanja nisu kompatibilni s NetBSD-ovim ciklusima razvoja i podrške za naslijeđene grane (na primjer, NetBSD 9, objavljen 2020. godine, i dalje se podržava, što bi zahtijevalo isporuku i podršku šest godina starog Rust kompajlera).
- Опубликован выпуск встраиваемой в приложения СУБД Turso 0.5, написанной на языке Rust и совместимой с SQLite на уровне диалекта SQL, формата файлов БД и C API. Из расширенных возможностей отмечается механизм CDC (Change data capture) для отслеживания изменения БД в реальном времени, использование io_uring для асинхронного ввода/вывода в Linux, поддержка векторного поиска, наличие выражения ALTER для изменения схемы БД, возможность шифрования данных в БД, режим инкрементальных вычислений, конструкция «BEGIN CONCURRENT».
- Projekt koji omogućuje korištenje standardne biblioteke Rust u programima na strani GPU-a.
- Emuko — эмулятор RISC-V, написанный на Rust, способный загружать Linux, поддерживающий JIT-компиляцию, способный сохранять и восстанавливать снапшоты состояния.
- RustConn (flatpak) je grafičko sučelje za upravljanje vanjskim mrežnim vezama s drugim hostovima, koje podržava SSH, RDP, VNC, SPICE, Telnet, Serial, Kubernetes, Zero Trust i SFTP. Kod je napisan u Rustu koristeći GTK4 i Wayland.
- Objavljena je nova grana projekta zlib-rs 0.6, označavajući ga kao prvu stabilnu verziju u potpunosti kompatibilnu sa zlib C API-jem i prikladnu za transparentnu zamjenu za zlib. Cilj projekta je stvoriti sigurnu alternativu zlib biblioteci za kompresiju podataka. Razvoj se provodi s fokusom na projekt zlib-ng, koji razvija visokoučinkovitu varijantu zliba.
- VCAD projekt je razvoj parametarskog CAD (computer-aided design) sustava napisanog u Rustu i integriranog s AI agentima pomoću MCP protokola. Podržava 3D modeliranje, simulaciju, 2D skiciranje, sastavljanje komponenti, STEP uvoz i STL/GLB/STEP/DXF izvoz.
- Objavljen je sustav za prepoznavanje govora napisan u Rustu koji koristi Mistral Voxtral Mini 4B Realtime AI model i Burn framework za strojno učenje. Projekt se fokusira na prepoznavanje govora u hodu za transkripciju uživo.
- Objavljen je c2rust 0.22 alat. Dizajniran je za prevođenje C koda (C99) u nesigurnu Rust reprezentaciju, sličnu strukturi izvornom C kodu. Rezultirajući radni okvir može se koristiti za postupnu migraciju na idiomatski Rust i uklanjanje nesigurnih blokova.
Izvor: opennet.ru
