La programlingvo Rust 1.94, fondita de la projekto Mozilla sed nun evoluigita sub la aŭspicioj de la sendependa neprofitcela organizaĵo Rust Foundation, estis publikigita. La lingvo fokusiĝas al memorsekureco kaj provizas ilojn por atingi altan paralelecon de taskoplenumado, samtempe rezignante pri la uzo de rubkolektilo kaj rultempo (la rultempo estas reduktita al baza inicialigo kaj bontenado de la norma biblioteko).
La memoradministraj metodoj de Rust estas desegnitaj por elimini erarojn en manipulado de montriloj kaj protekti kontraŭ problemoj rezultantaj el malaltnivela memoradministrado, kiel ekzemple aliro al memoro post kiam ĝi estis liberigita, malreferenco de nulaj montriloj, bufro-troŝarĝoj, kaj tiel plu. La projekto disvolvas la pakaĵadministrilon Cargo por distribui bibliotekojn, faciligi konstruojn kaj administri dependecojn. La deponejo crates.io estas prizorgata por gastigi bibliotekojn.
Memorsekureco estas disponigita en Rust ĉe kompiltempo tra referenckontrolado, konservante trakon de objektoposedo, konservante trakon de objektovivdaŭroj (kampoj), kaj taksante la ĝustecon de memoraliro dum kodekzekuto. Rusto ankaŭ provizas protekton kontraŭ entjeraj superfluoj, postulas devigan inicialigon de variaj valoroj antaŭ uzo, pli bone pritraktas erarojn en la norma biblioteko, aplikas la koncepton de neŝanĝeblaj referencoj kaj variabloj defaŭlte, ofertas fortan senmovan tajpadon por minimumigi logikajn erarojn.
Ĉefaj novigoj:
- La tranĉaĵo-tipo nun havas metodon array_windows. Ĉi tiu metodo kreas iteratoron por trairi tranĉaĵojn en fiks-grandecaj fenestroj, kiuj antaŭeniras unu elementon samtempe. Male al la antaŭe havebla metodo windows, array_windows funkcias sur konstanta fenestrograndeco kaj redonas referencon al fiks-grandeca tabelo (&[T; N]) anstataŭ tranĉaĵo de nedifinita grandeco (&[T]) por ĉiu iteracio. Ĉar la tabelgrandeco estas komence konata al la kompililo, la rendimento povas esti plibonigita evitante limkontroladon ĉe ĉiu iteracia stadio. 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());
- La agordodosieroj de la pakaĵadministrilo Cargo (.cargo/config.toml) efektivigas la direktivon "include", kiu permesas al vi enmeti la enhavon de aliaj dosieroj surloke. include = [ "frodo.toml", "samwise.toml", ] include = [ { path = "required.toml" }, { path = "optional.toml", optional = true }, ]
- Subteno por la nova versio de la etikedlingvo TOML 1.1 estis aldonita al manifesto- kaj agordo-dosieroj. Ĉi tiu nova versio aldonas subtenon por plurliniaj enigitaj tabeloj, la eskap-sekvencon "\xHH" por enmeti deksesumajn bajtajn prezentojn, kaj la eskap-sekvencon "\e" por "\u001B", kune kun la ebleco lasi postan komon ĉe la fino de la lasta elemento kaj preterlasi sekundojn en tempo-valoroj. serde = { version = "1.0", features = ["derive"] } nun povas esti anstataŭigita per serde = { version = "1.0", features = ["derive"], }
- Nova parto de la API estis movita al la kategorio de stalo, inkluzive de la metodoj kaj efektivigoj de trajtoj estis stabiligitaj:
- <[T]>::ara_fenestroj
- <[T]>::elementa_ofseto
- LazyCell::akiri
- LazyCell::get_mut
- LazyCell::force_mut
- LazyLock::akiri
- LazyLock::get_mut
- LazyLock::force_mut
- simpl ProvuDe por uzo
- std::iter::Peekable::next_if_map
- std::iter::Peekable::next_if_map_mut
- Internesaĵoj por x86 avx512fp16 instrukcioj
- Internesaĵoj por AArch64 NEON fp16 instrukcioj
- f32::konstoj::EULER_GAMMA
- f64::konstoj::EULER_GAMMA
- f32::consts::GOLDEN_RATIO
- f64::consts::GOLDEN_RATIO
- La "konst" signo estas uzata en funkcioj:
- f32::mul_add
- f64::mul_add
- La platformo riscv64im-unknown-none-elf estis movita al subtennivelo 3. Subtennivelo 3 inkluzivas bazan subtenon, sed ne inkluzivas aŭtomatan testadon, oficialajn eldonojn de konstruoj aŭ konstrukontrolon.
Plie, ni ŝatus reliefigi ĵus anoncitajn projektojn kaj eventojn rilatajn al Rust:
- Ayrton Muñoz, kiu efektivigis subtenon por la platformo Sony PlayStation 1 en la kompililo Rust kaj portis FreeBSD al komputiloj kun Apple Silicon-ĉipoj, efektivigis la kapablon skribi kernajn komponantojn kaj pelilojn en Rust por FreeBSD. Aro de KPI (Kernel Programming Interface) ligiloj ebligantaj la uzon de Rust-kodo en la FreeBSD-kerno estis provizita por testado, kune kun la virtio-sonpelilo (virtio_snd), la DockChannel HID-pelilo por la M2 MacBook-klavaro, kaj pluraj malaltnivelaj peliloj por Mac-komputilaj subsistemoj sur Apple Silicon-ĉipoj, ĉiuj kreitaj uzante ĉi tiujn ligilojn.
Laboro pri la Rust-ligaĵoj daŭras ekde la fino de 2024. Nuntempe, la ligaĵoj nur efektivigas parton de la C-KPI-oj kaj estas konsiderataj malstabilaj, sed laŭlonge de la tempo, ili planas plibonigi sian stabilecon por egali tiun de simila interfaco por la lingvo C. La pelilo virtio_snd, proponita kiel ekzemplo, taŭgas por ludi muzikon en QEMU. Oni atendas, ke antaŭ 2026, la Rust-ligaĵoj estos sufiĉe stabilaj por ke interesitaj programistoj komencu uzi ilin por skribi kodon.
- La programisto de NetBSD, Benny Siegert, proponis pravigon por kial subteno por Rust ne aperos en la kerno de NetBSD: NetBSD subtenas arkitekturojn por kiuj Rust ne haveblas; konservi la ekzistantan ilaron de Rust en pkgsrc estas signifa peno kaj estas subtenata nur de kelkaj programistoj; kerna subteno por Rust postulas, ke la Rust-kompililo estu inkludita en la baza sistemo; startigi Rust sur NetBSD uzas heredaĵan duuman pakaĵon, kio estas neakceptebla por memstaraj distribuaĵoj distribuitaj kiel fontkodo; la eldoncikloj de Rust estas nekongruaj kun la evoluigaj kaj subtencikloj de NetBSD por heredaĵaj branĉoj (ekzemple, NetBSD 9, publikigita en 2020, daŭre estas subtenata, kio postulus la liveron kaj subtenon de sesjara Rust-kompililo).
- Опубликован выпуск встраиваемой в приложения СУБД Turso 0.5, написанной на языке Rust и совместимой с SQLite на уровне диалекта SQL, формата файлов БД и C API. Из расширенных возможностей отмечается механизм CDC (Change data capture) для отслеживания изменения БД в реальном времени, использование io_uring для асинхронного ввода/вывода в Linux, поддержка векторного поиска, наличие выражения ALTER для изменения схемы БД, возможность шифрования данных в БД, режим инкрементальных вычислений, конструкция «BEGIN CONCURRENT».
- Projekto por ebligi la uzon de la norma biblioteko Rust en GPU-flankaj programoj.
- Emuko — эмулятор RISC-V, написанный на Rust, способный загружать Linux, поддерживающий JIT-компиляцию, способный сохранять и восстанавливать снапшоты состояния.
- RustConn (flatpak) estas grafika interfaco por administri eksterajn retkonektojn al aliaj gastigantoj, subtenante SSH, RDP, VNC, SPICE, Telnet, Serial, Kubernetes, Zero Trust, kaj SFTP. La kodo estas skribita en Rust uzante GTK4 kaj Wayland.
- Nova branĉo de la projekto zlib-rs 0.6 estis publikigita, markante ĝin kiel la unuan stabilan version plene kongruan kun la zlib C API kaj taŭgan por travidebla anstataŭaĵo por zlib. La projekto celas krei sekuran alternativon al la datumkunprema biblioteko zlib. Disvolviĝo estas farata kun okulo al la projekto zlib-ng, kiu evoluigas alt-efikecan variaĵon de zlib.
- La projekto VCAD estas evoluigo de parametra komputil-helpata dezajno (CAD) sistemo skribita en Rust kaj integrita kun AI-agentoj uzante la protokolon MCP. Ĝi subtenas 3D-modeladon, simuladon, 2D-skizadon, komponentan asembleon, STEP-importon kaj STL/GLB/STEP/DXF-eksporton.
- Parolrekono-sistemo skribita en Rust kaj uzanta la Mistral Voxtral Mini 4B Realtime AI-modelon kaj la Burn-maŝinlernadan kadron estis publikigita. La projekto fokusiĝas al surloka parolrekono por rekta transskribo.
- La ilaro c2rust 0.22 estis publikigita. Ĝi estas desegnita por traduki C-kodon (C99) en nesekuran Rust-reprezentaĵon, similan laŭ strukturo al la originala C-kodo. La rezulta laborkadro povas esti uzata por laŭgrada migrado al idioma Rust kaj la forigo de nesekuraj blokoj.
fonto: opennet.ru
