ĂshtĂ« publikuar versioni i gjuhĂ«s sĂ« programimit Rust 1.97, e cila ishte e bazuar nĂ« projektin Mozilla, por tani zhvillohet nĂ«n mbĂ«shtetje tĂ« njĂ« organizate tĂ« pavarur jofitimprurĂ«se, Rust Foundation. Gjuha fokusohet nĂ« punĂ«n e sigurt me kujtesĂ«n dhe ofron mjete pĂ«r arritjen e paralelizmit tĂ« lartĂ« nĂ« kryerjen e detyrave, duke mos pĂ«rdorur mbledhĂ«s plehrash dhe runtime (runtime reduktohet nĂ« inicializimin fillestar dhe mbĂ«shtetje pĂ«r bibliotekĂ«n standarde).
Metodat e punës me memorie në Rust janë të orientuara për të eliminuar gabimet gjatë manipulimit të treguesve dhe për të mbrojtur nga problemet që lindin nga puna me nivel të ulët me memorinë, siç janë akseset në zona memorien pas lirimit të saj, dereferencimi i treguesve null, tejkalimi i kufijve të bufeve etj. Për shpërndarjen e bibliotekave, sigurinë e ndërtimit dhe menaxhimin e varësive, projekti zhvillohet me ndihmën e menaxherit të paketave Cargo. Mbështetet një depo për bibliotekat, crates.io.
Puna e sigurt me kujtesën sigurohet në Rust gjatë kompilimit përmes verifikimit të referencave, ndjekjes së pronësisë së objekteve, llogaritjes së kohëzgjatjes së jetës së objekteve (fushave të dukshmërisë) dhe vlerësimit të saktësisë së qasjes në kujtesë gjatë ekzekutimit të kodit. Rust gjithashtu ofron mjete për mbrojtjen nga tejkalimet e numrave të plotë, kërkon inicializimin e detyrueshëm të vlerave të variablave para përdorimit, trajton më mirë gabimet në bibliotekën standarde, aplikon konceptin e referencave dhe variablave të pandryshueshëm (immutable) si standard dhe ofron tipizimin e fortë statik për të minimizuar gabimet logjike.
Novitetet kryesore:
- Dizajni i ri i emrave, për funksionet, variablat globale dhe strukturat e të dhënave në skedarët e prodhuar objekt dhe ekzekutiv, është aktivizuar si standard (-Csymbol-mangling-version=v0). Emrat i nënshtrohen dekorimit për të parandaluar konfliktet gjatë lidhjes së programeve të ndryshme, duke i bashkëngjitur një kontekst specifik, siç është rruga për modul dhe emri i paketës crate.
Schemat e mëparshme të dekorimit të emrave, të bazuar në Itanium ABI, kishin disa disavantazhe, siç janë zëvendësimi i parametrave të gjenerikëve me hash-e të palexueshme dhe ekzistenca e pjesëve të kompilatorit që nuk përdorin Itanium ABI, që kërkonte përdorimin e dekoduesve specifikë për Rust. Në Rust 1.97, një skemë dekorimi e zhvilluar posaçërisht për Rust është aktivizuar si standard dhe është e lirë nga këto disavantazhe. Schemat e vjetra planifikohen të hiqen në një nga lëshimet e ardhshme.
- Menaxheri i paketave cargo pĂ«rmban mundĂ«sinĂ« pĂ«r tĂ« menaxhuar reagimin nĂ« gjenerimin e paralajmĂ«rimeve nga kompilatori gjatĂ« ndĂ«rtimit. ĂshtĂ« shtuar variabla e ambientit CARGO_BUILD_WARNINGS, e cila mund tĂ« marrĂ« tre vlera: warn (standard) â pĂ«r tĂ« shfaqur paralajmĂ«rimin nĂ« ekran; allow â pĂ«r tĂ« fshehur paralajmĂ«rimet; deny â pĂ«r tĂ« trajtuar paralajmĂ«rimet si gabime qĂ« ndalojnĂ« ndĂ«rtimin.
Në versionet e mëparshme, për të përfunduar ndërtimin pas shfaqjes së një paralajmërimi duhej të specifikohej «-Dwarnings» në RUSTFLAGS për kompilatorin, por me ndryshimin e RUSTFLAGS, menaxheri i paketave cargo e përshkonte ndërtimin si të ri, pa marrë parasysh të dhënat në memory dhe ripërtrinte të gjithë projektin nga e para. Kalimi i këtij rregullimi në anën e cargo përjashton fshirjen e caches dhe nevojën për një ripërpunim të plotë me ndryshimin e modalitetit të trajtimit të paralajmërimeve, si dhe thjeshton aktivizimin e trajtimit të paralajmërimeve si gabime në sistemet e integrimit të vazhdueshëm.
- Gjatë ndërtimit, shfaqja e mesazheve të prodhuara nga lidhësi aktivizohet si parazgjedhje. Mesazhet shfaqen si paralajmërime përmes një rregulli të veçantë lint «linker_messages», i cili nuk përfshihet në grupin standard «warnings». Në këtë mënyrë, rustc filtroi mesazhet që janë rFalse pozita të tipit ose sjellje normale, duke lënë paralajmërime që mund të tregojnë për probleme, siç janë paralajmërimet për opsionet e skaduara dhe parametrat e padëshiruar. Më parë, informacioni nga lidhësi tregoheshin vetëm nëse përfundimi kishte dështuar, ndryshe të gjitha mesazhet ishin fshehur. Për të rikthyer sjelljen e vjetër, mund të shtoni në Cargo.toml: [lints.rust] linker_messages = «allow»
- Një grup i ri API u kalua në kategorinë e stabilizuar, përfshirë stabilizimin e metodave dhe implementimeve të trait-ëve:
- Parazgjedhja për RepeatN
- Kopje për ffi::FromBytesUntilNulError
- Dërgo për std::fs::File për UEFI
- ::izolo_kujt_max
- ::izolo_kujt_min
- ::kujt_max
- ::kujt_min
- ::gjerësia_bit
- NonZero::izolo_kujt_max
- NonZero::izolo_kujt_min
- NonZero::kujt_max
- NonZero::kujt_min
- NonZero::gjerësia_bit
- Simboli «const» është aplikuar në metodën char::is_control.
Gjithashtu mund të theksohet projektet dhe ngjarjet e shpallura së fundmi të lidhura me Rust:
- Projekti zinnia zhvillon një bërthamë modulare të ngjashme me Unix, e shkruar në gjuhë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ç janë epoll dhe timerfd. Për vizatimin dhe organizimin e hyrjes janë në dispozicion drejtues DRM (Direct Rendering Manager) dhe evdev. Funksionaliteti e cila është e realizuar është e mjaftueshme për të drejtuar një mjedis desktopi Xfce nën kontrollin e serverit X dhe kompozit. serverë Weston mbi bazën e 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 komunikuese iroh 1.0, e cila lejon vendosjen e lidhjeve rrjetĂ«sore midis aplikacioneve nĂ« hoste tĂ« ndryshĂ«m me lidhje pĂ«rmes çelĂ«save shtesĂ«, nĂ« vend tĂ« IP-adresat (pĂ«rcaktohet çelĂ«si me tĂ« cilin duhet tĂ« lidhet dhe iroh gjen hostin e lidhur me tĂ« dhe vendos njĂ« lidhje tĂ« kriptuar duke pĂ«rdorur protokollin QUIC). Kur Ă«shtĂ« e mundur, krijohen lidhje direkte P2P, por nĂ«se kjo nuk Ă«shtĂ« e mundur, bĂ«het kalimi nĂ« punĂ«n pĂ«rmes releve, tĂ« cilat gjithashtu pĂ«rdoren pĂ«r zbuluar hostet pĂ«rmes çelĂ«save. ĂshtĂ« e mundur tĂ« filloni relen tuaj ose tĂ« lidhni me rele tĂ« publikuara qĂ« mbĂ«shteten nga komuniteti.
Mes azhurnuar: mbështetje për Multipath QUIC për dërgimin e pacove në të njëjtën kohë përmes disa rrugëve, mundësia e funksionimit përmes NAT, regjimi i konfigurimit të qëndrueshëm për t'u lidhur me pajisjet lokale pa qasje në internet, mundësia e ndërtimit në kodin ndërmjetës WASM për t'u ekzekutuar 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 licencat Apache-2.0 dhe MIT. Janë në dispozicion lidhjet për Python, Node.js, Kotlin dhe Swift.
- Autori i platformës server-side JavaScript Bun shpalli një artikull që shqyrton projektin e ridërgimit të Bun nga gjuha Zig në Rust, duke përdorur modelin AI Claude Fable. Vërehet se Bun 1.3.14 do të jetë rrethi i fundit në Zig, dhe versioni i ardhshëm Bun 1.4.0 do të jetë në Rust. Sipas testeve të kryera, versioni në Rust konsumon ndjeshëm më pak memorie dhe është 2-5% më i shpejtë se versioni në Zig. Madhësia e skedarit ekzekutues në versionin në Rust është zvogëluar me 20%.
Burimi: opennet.ru
