Izlazak Rusta 1.94. Eksperimenti s Rustom u FreeBSD kernelu. Baza podataka Turso i CAD alat vcad na Rustu.

Objavljen je izdanak programskog jezika Rust 1.94, koji je prvotno razvijen od strane Mozille, a trenutno se dalje razvija pod okriljem neprofitne organizacije Rust Foundation. Jezik se fokusira na sigurnu upotrebu memorije i pruža alate za postizanje visokog paralelizma izvršavanja zadataka, bez upotrebe sakupljača smeća i runtime-a (runtime se svodi na osnovno inicijaliziranje i održavanje standardne biblioteke).

Metode upravljanja memorijom u Rust-u usmjerene su na isključivanje grešaka prilikom manipulacije pokazivačima i zaštitu od problema koji nastaju zbog niskonivojskog rada s memorijom, kao što su pristupanje memorijskom području nakon što je oslobođeno, dereferenciranje nultih pokazivača, izlazak iz okvira bafera itd. Za distribuciju biblioteka, osiguranje gradnje i upravljanje ovisnostima, projekt se razvija preko upravitelja paketa Cargo. Za hosting biblioteka podržava se repozitorij crates.io.

Sigurna manipulacija memorijom osigurava se u Rustu tijekom kompilacije provjerom referenci, praćenjem vlasništva nad objektima, uzimanjem u obzir vremena života objekata (opseg vidljivosti) i ocjenom točnosti pristupa memoriji tijekom izvršavanja koda. Rust također pruža sredstva za zaštitu od cjelobrojnih prekoračenja, zahtijeva obaveznu inicijalizaciju vrijednosti varijabli prije upotrebe, bolje obrađuje greške u standardnoj biblioteci, primjenjuje koncept nepromjenjivosti (immutable) referenci i varijabla kao zadano te nudi snažnu statičku tipizaciju za minimiziranje logičkih grešaka.

Glavne novine:

  • U tip slice dodat je metod array_windows, koji stvara iterator za prolazak kroz rezove (slice) „prozorima“ fiksne veličine, koji se prebacuju za jedan element odjednom. Za razliku od ranije dostupnog metoda windows, metod array_windows upravlja fiksnom veličinom prozora i vraća prilikom svake iteracije referencu na niz fiksne veličine (&[T; N]) umesto na rez neodređene veličine (&[T]). Budući da je veličina niza inicijalno poznata prevoditelju, za poboljšanje performansi može se izbjeći provjera granica niza 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());
  • U konfiguracijskim datotekama menadžera paketa Cargo (.cargo/config.toml) implementirana je direktiva „include“, koja omogućava umetanje sadržaja drugih datoteka na licu mesta. include = [ "frodo.toml", "samwise.toml", ] include = [ { path = "required.toml" }, { path = "optional.toml", optional = true }, ]
  • U datoteke s manifestima i konfiguracijske datoteke dodana je podrška za novu verziju jezika za markup TOML 1.1, koja je uvela podršku za višelinijske ugrađene tablice, escape sekvence "\xHH" za umetanje heksadecimalnog prikaza bajtova i "\e" za zamenu "\u001B", mogućnost ostavljanja zareza na kraju posljednjeg elementa i izostavljanje navođenja sekundi u vremenskim vrednostima. serde = { version = "1.0", features = ["derive"] } može se sada zameniti sa serde = { version = "1.0", features = ["derive"], }
  • U stabilne verzije prebačen je novi set API-ja, uključujući stabilizirane metode i implementacije tipa:
    • ::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
    • Ugrađene funkcije za x86-instrukcije avx512fp16
    • Ugrađene funkcije za AArch64-instrukcije NEON fp16
    • f32::consts::EULER_GAMMA
    • f64::consts::EULER_GAMMA
    • f32::consts::GOLDEN_RATIO
    • f64::consts::GOLDEN_RATIO
  • Znak "const" primijenjen je u funkcijama:
    • f32::mul_add
    • f64::mul_add
  • Platforma riscv64im-unknown-none-elf je prevedena na treći nivo podrške. Treći nivo obuhvata osnovnu podršku, ali bez automatizovanog testiranja, objavljivanja zvaničnih izdanja i proveravanja mogućnosti izrade koda.

Dodatno se mogu istaknuti nedavno najavljeni projekti i događaji vezani za Rust:

  • Ayrton Muñoz, koji je u svoje vreme implementirao podršku za platformu Sony PlayStation 1 u Rust kompilatoru i bio angažovan na portiranju FreeBSD na računare sa Apple Silicon čipovima, omogućio je za FreeBSD kreiranje komponenti jezgra i drajvera uređaja na jeziku Rust. Za testiranje je predložen set KPI omota (Kernel Programming Interface), koji omogućavaju korišćenje Rust koda u FreeBSD jezgru, kao i kreirani sa ovim omotima zvučni drajver virtio (virtio_snd), HID drajver DockChannel za tastaturu u M2 MacBook-u i nekoliko niskonivojnih drajvera za podsisteme računara Mac sa Apple Silicon čipovima.

    Napominje se da se rad na Rust omotima vodi od kraja 2024. godine. U omotima je za sada implementirana samo delimična C-KPI i oni se pozicioniraju kao nestabilni, ali se vremenom planira da se nivo stabilnosti podigne na sličan interfejs za jezik C. Predloženi drajver virtio_snd je pogodan za reprodukciju muzike u QEMU. Očekuje se da će do 2026. godine Rust omoti biti dovoljno stabilni da zainteresovani programeri mogu početi da ih koriste za pisanje koda.

  • Benny Siegert, koji učestvuje u razvoju NetBSD-a, pokušao je da obrazloži razloge zbog kojih podrška za jezik Rust neće biti uključena u NetBSD jezgro: NetBSD podržava arhitekture za koje Rust nije dostupan; održavanje postojećeg alata za Rust u pkgsrc zahteva velika ulaganja i obavlja ga samo nekoliko programera; podrška za Rust u jezgru zahteva uključivanje Rust kompilatora u osnovni sistem; prilikom bootstrapping-a Rust-a u NetBSD koristi se stara verzija binarnog paketa, što je neprihvatljivo za samostalne distribucije koje se distribuiraju u izvoru; ciklusi izdanja Rust-a nisu kompatibilni sa ciklusom razvoja NetBSD-a i podrškom starih grana (na primer, još uvek se podržava grana NetBSD 9, izdata 2020. godine, i u tim uslovima bila bi potrebna isporuka i podrška za Rust kompilator star šest godina).
  • Objavljen je izdanak ugrađene u aplikacije SGBD-a Turso 0.5, napisane na jeziku Rust i kompatibilne sa SQLite na nivou SQL dijalekta, formatu datoteka baza podataka i C API-jem. Od naprednih mogućnosti ističe se mehanizam CDC (Change data capture) za praćenje promjena u bazi podataka u stvarnom vremenu, korištenje io_uring za asinkroni ulaz/izlaz u Linuxu, podrška za vektorsko pretraživanje, prisutnost izraza ALTER za promjenu sheme baze podataka, mogućnost enkriptiranja podataka u bazi podataka, režim inkrementalnih proračuna i konstrukcija „BEGIN CONCURRENT“.
  • Projekt kojim se omogućava korištenje standardne biblioteke Rusta u programima koji se izvršavaju sa strane GPU-a.
  • Emuko — emulator RISC-V, napisan na Rustu, sposoban za učitavanje Linuxa, podržava JIT-kompilaciju i može spremati i obnavljati snimke stanja.
  • RustConn (flatpak) — grafičko sučelje za upravljanje vanjskim mrežnim vezama prema drugim domaćinima, podržava SSH, RDP, VNC, SPICE, Telnet, Serijski, Kubernetes, Zero Trust i SFTP. Kod je napisan na Rustu koristeći GTK4 i Wayland.
  • Predstavljen je novi izdvojeni projekt zlib-rs 0.6, označen kao prva stabilna verzija, potpuno kompatibilna sa zlib C API-jem i pogodna za transparentnu zamjenu zlib-a. Projekt ima za cilj stvoriti siguran analog biblioteke za kompresiju podataka zlib. Razvoj se vodi imajući na umu projekt zlib-ng, koji razvija visoko performantan varijantu zlib-a.
  • Predstavljen je projekt vcad, koji razvija parametarsku sustav automatiziranog dizajniranja (CAD), napisan na Rustu i integrira se s AI-agentima putem protokola MCP. Podržava 3D-modeliranje, simulaciju, rad s 2D-skicama, komponentno sastavljanje, uvoz u STEP formatu i izvoz u STL/GLB/STEP/DXF formatima.
  • Objavljen je sustav prepoznavanja govora, napisan na Rustu i koristi AI-model Mistral Voxtral Mini 4B Realtime i okvir za strojno učenje Burn. Projekt je usmjeren na prepoznavanje govora u stvarnom vremenu za formiranje transkripcije tijekom streaminga.
  • Izdano je sredstvo c2rust 0.22, namijenjeno za prevođenje C koda (C99) u unsafe-predstavu na Rustu, blizu svoje strukture izvornoj kodu na C-u. Dobivena radna struktura može se dalje koristiti za postupni prijelaz na idiomatski Rust i uklanjanje unsafe-blokova.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster