ĂshtĂ« publikuar lĂ«shimi i gjuhĂ«s sĂ« programimit Rust 1.97, e cila Ă«shtĂ« zhvilluar fillimisht nga projekti Mozilla, por tani zhvillohet nĂ«n mbikĂ«qyrjen e organizatĂ«s jo fitimprurĂ«se Rust Foundation. Gjuha fokusohet nĂ« punĂ«n e sigurt me memorien dhe ofron mjete pĂ«r tĂ« arritur njĂ« paralelizĂ«m tĂ« lartĂ« nĂ« ekzekutimin e detyrave, duke shmangur pĂ«rdorimin e mbledhĂ«sit tĂ« plehrave dhe runtime (runtime reduktohet nĂ« inicializimin bazĂ« dhe mbĂ«shtetje pĂ«r librarinĂ« 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:
- Një plan i ri i dekorimit (mangling) të emrave të funksioneve, variablave globale dhe strukturave të dhënash në skedarët objekt dhe ekzekutues është aktivizuar si parazgjedhje (-Csymbol-mangling-version=v0). Emrat dekorohen për të parandaluar konflikte gjatë lidhjes së programeve të ndryshme, duke i bashkangjitur një kontekst specifik, si rruga në modul dhe emri i paketës crate.
Skema e mëparshme e dekodimit të emrave, e bazuar në Itanium ABI, kishte disavantazhe si zëvendësimi i parametrave të gjenerikëve me hash-e të palexueshme dhe praninë e pjesëve të kompilatorit që nuk përdornin Itanium ABI, gjë që kërkonte përdorimin e dekodifikuesve të emrave specifik për Rust. Në Rust 1.97, skema e dekodimit të projektuar posaçërisht për Rust është e aktivizuar si parazgjedhje dhe është liruar nga të metat e përmendura. Skema e vjetër pritet të hiqet në një nga lëshimet e ardhshme.
- Menaxheri i paketave cargo ka integruar mundĂ«sinĂ« pĂ«r tĂ« menaxhuar reagimin ndaj gjenerimit tĂ« paralajmĂ«rimeve nga kompilatori gjatĂ« ndĂ«rtimit. NjĂ« variabĂ«l mjedisore e re, CARGO_BUILD_WARNINGS, Ă«shtĂ« shtuar dhe mund tĂ« marrĂ« tre vlera: warn (parazgjedhje) â shfaq paralajmĂ«rimin nĂ« ekran; allow â fsheh shfaqjen e paralajmĂ«rimeve; deny â trajton paralajmĂ«rimet si gabime qĂ« ndalojnĂ« ndĂ«rtimin.
Në versionet e kaluara, për të përfunduar ndërtimin pas daljes së paralajmërimit, ishte e nevojshme të specifikohej «-Dwarnings» në RUSTFLAGS për kompilatorin, por kur RUSTFLAGS ndryshonte, menaxheri i paketave cargo e konsideronte ndërtimin si të ri, nuk merrte parasysh të dhënat në cache dhe rindërtonte të gjithë projektin nga fillimi. Duke e zhvendosur konfigurimin në anën e cargo, u eliminuar nevoja për të pastruar cache-n dhe nevojën për një rikompilim të plotë kur modifikoheshin mënyrat e trajtimit të paralajmërimeve, si dhe u thjeshtua aktivizimi i trajtimit të paralajmërimeve si gabime në sistemet e integrimit të vazhdueshëm.
- Kur ndihmëzimi është i aktivizuar, mesazhet e printuara nga ndihmëzimi shfaqen si paralajmërime përmes një rregulli të veçantë lint-i "linker_messages" që nuk bën pjesë në grupin standard të "warnings". Në këtë rast, rustc filtroi mesazhet që janë ndihmesë false tipike ose sjellje normale, duke lënë paralajmërimet që mund të tregojnë probleme, siç janë paralajmërimet për opsione të përjetshme dhe konfigurime të padëshiruara. Më parë, informacioni nga ndihmëzimi shfaqej vetëm në rast çështjesh me gabime, ndryshe të gjitha mesazhet ishin të fshehura. Për të kthyer sjelljen e vjetër, mund të shtoni në Cargo.toml: [lints.rust] linker_messages = "allow"
- Një sasi e re API është kaluar në kategorinë stabile, përfshirë stabilizimin e metodave dhe implementimeve të tipazheve:
- Default për RepeatN
- Kopje për ffi::FromBytesUntilNulError
- Dërgesë për std::fs::File për UEFI
- ::isolate_highest_one
- ::isolate_lowest_one
- ::highest_one
- ::lowest_one
- ::bit_width
- NonZero::isolate_highest_one
- NonZero::isolate_lowest_one
- NonZero::highest_one
- NonZero::lowest_one
- NonZero::bit_width
- Cilësia "const" është aplikuar në metodën char::is_control.
Gjithashtu, mund të theksojmë projektet dhe ngjarjet e sapo shpallura që lidhen me Rust:
- Projekti zinnia zhvillon një bërthamë modulare Unix-like, e shkruar në Rust dhe e shpërndarë nën licencën GPLv2. Bërthama mbështet ndërfaqet POSIX dhe disa zgjerime nga BSD dhe Linux, si epoll dhe timerfd. Për renderimin dhe organizimin e hyrjes, janë të disponueshme drajtverët DRM (Direct Rendering Manager) dhe evdev. Funksionaliteti i zbatuar është i mjaftueshëm për të nisur mjedisin e desktopit Xfce nën menaxherin e ekranit X-server dhe kompozitorin server Weston mbi Wayland. Mbështetet ngarkimi si në emulatorin QEMU, ashtu edhe në pajisje reale, si laptopi ThinkPad E14 G7.
- Ă«shtĂ« prezantuar lĂ«shimi i bibliotekĂ«s komunikacioni iroh 1.0, qĂ« lejon vendosjen e lidhjeve rrjetĂ«rore ndĂ«rmjet aplikacioneve nĂ« hoste tĂ« ndryshme duke u lidhur me çelĂ«sa kriptografikĂ«, nĂ« vend tĂ« IP-adresave (specifikohet çelĂ«si me tĂ« cilin duhet tĂ« lidhet dhe iroh gjen hostin e lidhur me tĂ« dhe krijon njĂ« lidhje tĂ« enkriptuar duke pĂ«rdorur protokollin QUIC). Kur Ă«shtĂ« e mundur, krijohen lidhje P2P direkte, por nĂ«se kjo nuk Ă«shtĂ« e mundur, zbatohet rĂ«nia pĂ«r tĂ« punuar pĂ«rmes rilivave, tĂ« cilat gjithashtu pĂ«rdoren pĂ«r tĂ« zbuluar hostet pĂ«rmes çelĂ«save. ĂshtĂ« e mundur tĂ« niset njĂ« riliv i vetĂ« dhe tĂ« lidhet me rilivat publike tĂ« mbĂ«shtetura nga komuniteti.
Mes mundësive të avancuara: mbështetje për Multipath QUIC për shpërndarjen e pakove në të njëjtën kohë përmes disa rrugëve, mundësia e punës nën NAT, gjendja e konfigurimit statik për t'u lidhur me pajisje lokale pa qasje në internet, mundësia e ndërtimit në kodin ndërmjetësor WASM për ekzekutimin brenda shfletuesit, mbështetje për krijimin e transporteve të veta, për shembull, për t'u lidhur përmes Bluetooth, WiFi Aware ose LoRa. Kodi është shkruar në Rust dhe shpërndahet nën licensat Apache-2.0 dhe MIT. Disponohen lidhje për Python, Node.js, Kotlin dhe Swift.
- Autori i platformës serverike JavaScript Bun publikoi një artikull që analizon projektin e ridizajnimit të Bun nga gjuhën Zig në Rust, duke përdorur modelin AI Claude Fable. Shtohet se Bun 1.3.14 do të jetë versioni i fundit në Zig dhe versioni i ardhshëm Bun 1.4.0 do të jetë në Rust. Sipas testeve të kryera, versione në Rust konsumon dukshëm më pak memorie dhe është 2-5% më e shpejtë se versioni në Zig. Madhësia e skedarit ekzekutiv në versionin Rust është zvogëluar me 20%.
Burimi: opennet.ru
