Izdanje Rust 1.94. Eksperimentiranje s Rustom u FreeBSD kernelu. Turso baza podataka i VCAD u Rustu

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

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