Ësht publikuar lëshimi i gjuhës së programimit Rust 1.94, e cila është e bazuar në projektin Mozilla, por tani po zhvillohet nën mbështetje të Organizatës Jo-Fitimprurëse Rust Foundation. Gjuha është e fokusuar në sigurimin e punës me memorien dhe ofron mjete për të arritur paralelizm të lartë në ekzekutimin e detyrave, ndërkohë që shmang përdorimin e grumbulluesit të plehrave dhe runtime (runtime reduktohet në inicializimin bazë dhe mbështetje të bibliotekës standarde).
Metodat e punës me memorien në Rust kanë si objektiv të ekskludojnë gabimet gjatë manipulimit të treguesve dhe të mbrojnë nga problemet që lindin për shkak të punës me memorien në nivel të ulët, siç janë qasja në hapësirën e memories pas çlirimit të saj, dereferencimi i treguesve zero, dalja jashtë kufijve të tamponit, etj. Për shpërndarjen e librarive, sigurimin e ndërtimit dhe menaxhimin e varësive, projekti zhvillohet me menaxherin e paketave Cargo. Për mbështetje të librarive, mbahet repozitori crates.io.
Përdorimi i sigurt i memories sigurohet në Rust gjatë kompilimit përmes verifikimit të lidhjeve, gjurmimit të pronësisë së objekteve, përllogaritjes së kohëzgjatjes së objekteve (fushave të dukshmërisë) dhe vlerësimit të saktësisë së qasjes në memorie gjatë ekzekutimit të kodit. Rust gjithashtu ofron mjete për mbrojtje nga tejkalimet e numrave të plotë, kërkon inicializim të detyrueshëm të vlerave të variablave para përdorimit, menaxhon më mirë gabimet në bibliotekën standarde, aplikon konceptin e lidhjeve dhe variablave të pandryshueshëm (immutable) si parazgjedhje, dhe ofron tipizim të fortë statik për minimizimin e gabimeve logjike.
Të rejat kryesore:
- Në tipin slice është shtuar metoda array_windows, e cila krijon një iterator për të kaluar nëpër sërë (slice) "dritare" me përmasë fikse, duke u zhvendosur një element në herë. Ndryshe nga metoda e mëparshme windows, metoda array_windows operon me një madhësi të vazhdueshme dritare dhe kthen në secilën iteraim një referencë në një array me përmasë fikse (&[T; N]) në vend të një sere me madhësi të pacaktuar (&[T]). Pasi madhësia e array-it është e njohur fillimisht nga kompilatorin, për të rritur performancën mund të kursehet kontrolli i kufijve të array-it në çdo fazë itereimi. 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());
- Në skedarët e konfigurimit të menaxherit të paketave Cargo (.cargo/config.toml) është implementuar direktiva "include", e cila lejon që në vend të përfshihet përmbajtja e skedareve të tjera. include = [ "frodo.toml", "samwise.toml", ] include = [ { path = "required.toml" }, { path = "optional.toml", optional = true }, ]
- Në skedarët e manifestëve dhe skedarët e konfiguracionit është shtuar mbështetje për versionin e ri të gjuhës së shenjtë TOML 1.1, e cila ka sjellë mbështetje për tabela të shumëfishta të brendshme, sekuenca të escapes «\xHH» për të futur përfaqësimin hexadecimal të bajtëve dhe «\e» për të zëvendësuar «\u001B», mundësinë për të lënë një presje në fund të elementit të fundit dhe për të anashkaluar caktimin e sekondave në vlerat e kohës. serde = { version = «1.0», features = [«derive»] } tani mund të zëvendësohet me serde = { version = «1.0», features = [«derive»], }
- Një sasi e re API është kaluar në kategorinë stabile, përfshirë stabilizimin e metodave dhe implementimeve të tipazheve:
- ::array_windows
- ::element_offset
- LazyCell::get
- LazyCell::get_mut
- LazyCell::force_mut
- LazyLock::get
- LazyLock::get_mut
- LazyLock::force_mut
- impl TryFrom për usize
- std::iter::Peekable::next_if_map
- std::iter::Peekable::next_if_map_mut
- Funksionet e brendshme për instrukcionet x86 avx512fp16
- Funksionet e brendshme për instrukcionet NEON fp16 të AArch64
- f32::consts::EULER_GAMMA
- f64::consts::EULER_GAMMA
- f32::consts::GOLDEN_RATIO
- f64::consts::GOLDEN_RATIO
- T symboli «const» është aplikuar në funksionet:
- f32::mul_add
- f64::mul_add
- Platforma riscv64im-unknown-none-elf është kaluar në nivelin e tretë të mbështetjes. Nivelin e tretë përfshin mbështetje bazë, por pa testim automatizuar, publikimin e mbledhjeve zyrtare dhe verifikimin e mundësive për ndërtimin e kodit.
Gjithashtu, mund të theksojmë projektet dhe ngjarjet e sapo shpallura që lidhen me Rust:
- Ayrton Muñoz, i cili në të kaluarën implementoi mbështetje për platformën Sony PlayStation 1 në kompajlerin Rust dhe u angazhua në portimin e FreeBSD në kompjuterë me çipa Apple Silicon, krijoi për FreeBSD mundësinë e zhvillimit të komponenteve të kernelit dhe driverave të pajisjeve në gjuhën Rust. Për testim u ofrua një grup KPI-esh (Kernel Programming Interface), që lejon përdorimin e kodit në Rust në kernelin e FreeBSD, si dhe një driver audio virtio (virtio_snd) i krijuar duke përdorur këto KPI, dhe një driver HID DockChannel për tastierën në M2 MacBook, si dhe disa drivera të nivelit të ulët për nën-sistemet e kompjuterëve Mac me çipa Apple Silicon.
Vërehet se puna mbi KPI-të e Rust ka nisur në fund të vitit 2024. Në KPI deri më tani është implementuar vetëm një pjesë e C-KPI-së dhe ato pozicionohen si jo të stabilizuara, megjithatë me kalimin e kohës plani është që niveli i stabilitetit të arrijë atë të njëjtin me ndërfaqen për gjuhën C. Driveri virtio_snd i propozuar si shembull është i përshtatshëm për reproduktimin e muzikës në QEMU. Pritet që deri në vitin 2026 KPI-të e Rust të stabilizohen sa mjaftueshëm që zhvilluesit e interesuar të mund të fillojnë t'i përdorin ato për të shkruar kod.
- Benny Siegert, i angazhuar në zhvillimin e NetBSD, përpiqej të justifikonte arsyet pse mbështetja për gjuhën Rust nuk do të shfaqet në bërthamën e NetBSD: NetBSD mbështet arkitekturën për të cilat Rust nuk është i disponueshëm; mbajtja e mjetit aktual të Rust në pkgsrc kërkon shumë përpjekje dhe është në përputhje me disa zhvillues; mbështetja e Rust në bërthamë kërkon përfshirjen e kompjilatorit Rust në sistemin bazë; gjatë bootstrapping-ut të Rust në NetBSD, përdoret një version i kaluar i paketës binaire, e cila nuk është e pranueshme për distribuimet e pavarura që shpërndahen në kodin burim; ciklet e formimit të lëshimeve të Rust nuk janë kompatibile me ciklin e zhvillimit të NetBSD dhe mbështetjes së degëve të vjetra (p.sh., degën NetBSD 9, e cila u lëshua në vitin 2020, vazhdon të mbështetet, në këto kushte do të kërkohej shpërndarja dhe mbështetje e kompjilatorit Rust me gjashtë vjet të vjetër).
- Është publikuar rregullimi i bazës së të dhënave Turso 0.5, e ndërtuar në gjuhën Rust dhe e përshtatshme me SQLite në nivelin e dialektit SQL, formatin e skedarëve të bazës së të dhënave dhe C API. Nga funksionalitetet e përmirësuara, është e rëndësishme të përmendet mekanizmi CDC (Capture e të dhënave të ndryshuar) për ndjekjen e ndryshimeve në bazën e të dhënave në kohë reale, përdorimi i io_uring për hyrje / dalje asinkrone në Linux, mbështetje për kërkimin me vektorë, prania e shprehjes ALTER për ndryshimin e skemës së bazës së të dhënave, mundësia e enkriptimit të të dhënave në bazën e të dhënave, mënyra e llogaritjeve inkrementale, konstrukti “BEGIN CONCURRENT”.
- Projekti për të mundësuar përdorimin e bibliotekës standarde Rust në programe që ekzekutohen nga GPU.
- Emuko — një emulator RISC-V, i shkruar në Rust, i aftë të ngarkojë Linux, përkrah JIT-kompilimin, duke qenë i aftë të ruajë dhe rikthejë snapshotet e gjendjes.
- RustConn (flatpak) — një ndërfaqe grafike për menaxhimin e lidhjeve të jashtme me hoste të tjerë, mbështet SSH, RDP, VNC, SPICE, Telnet, Serial, Kubernetes, Zero Trust dhe SFTP. Kodi është shkruar në Rust duke përdorur GTK4 dhe Wayland.
- Është prezantuar dega e re e projektit zlib-rs 0.6, e cila është shënuar si versioni i parë stabil, plotësisht i pajtueshëm me API-në e zlib C dhe i përshtatshëm për zëvendësimin e qartë të zlib. Projekti ka si qëllim krijimin e një ekuivalent të sigurt të bibliotekës së kompresionit të të dhënave zlib. Zhvillimi po bëhet me syrin mbi projektin zlib-ng, i cili zhvillon një variant me performancë të lartë të zlib.
- Është prezantuar projekti vcad, i cili zhvillon një sistem parametërik të projektimit të automatizuar (CAD), i shkruar në Rust dhe i integrueshëm me agjentë AI përmes protokollit MCP. Ai mbështet modelimin 3D, simulimin, punën me skica 2D, ndërtimin e komponenteve, importimin në formatin STEP dhe eksportimin në formatet STL/GLB/STEP/DXF.
- Është publikuar një sistem njohjeje të fjalës, i shkruar në Rust dhe që përdor modelin AI Mistral Voxtral Mini 4B Realtime dhe kornizën e mësimit të makinerive Burn. Projekti është orientuar për njohjen e zërit në kohë reale për të formuar transkriptime gjatë transmetimit të drejtpërdrejtë.
- Hapši lëshimi i instrumenteve c2rust 0.22, të destinuara për të përkthyer kodin C (C99) në një përfaqësim të papërshtatshëm në Rust, i afërt me strukturën e kodit origjinal në C. Strukturat e punës të marra mund të përdoren më vonë për një përkthim të ngadaltë në Rust idiomatik dhe për të eliminuar blloqet e papërshtatshme.
Burimi: opennet.ru
