Ă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
