Kjo është lançuar publikimi i gjuhës së programimit Rust 1.99, e cila fillimisht ishte një projekt nga Mozilla, por tani zhvillohet nën mbështetje të një organizate jo-fitimprurëse të pavarur, Rust Foundation. Gjuha fokusohet në punën e sigurt me kujtesën dhe ofron mjete për të arritur një paralelizëm të lartë të ekzekutimit të detyrave, duke shmangur përdorimin e mbledhësit të plehrave dhe runtime të gjerë (runtime reduktohet në inicializimin e bazës 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:
- ĂshtĂ« ofruar mundĂ«sia e krijimit tĂ« funksioneve nĂ« gjuhĂ«n Rust me njĂ« numĂ«r variabĂ«l argumentesh (variadic), tĂ« eksportuara pĂ«r t'u thirrur nga projekte nĂ« gjuhĂ«n C (C ABI). Si elementi i fundit nĂ« listĂ«n e parametrave nĂ« kĂ«to funksione mund tĂ« specohet struktura "âŠ", e cila pĂ«rpunuar nĂ« Rust me ndihmĂ«n e njĂ« tipi tĂ« veçantĂ« VaList, funksionon nĂ« mĂ«nyrĂ« tĂ« ngjashme me va_list nĂ« C. unsafe extern "C" fn sum(mut args: âŠ) -> i32 { let a = unsafe { args.next_arg::() }; let b = unsafe { args.next_arg::() }; a + b } fn foo() -> i32 { unsafe { sum(0i32, 2i32) } }
- Funksionet Layout::for_value_raw, mem::size_of_val_raw dhe mem::align_of_val_raw janë stabilizuar, duke lejuar përcaktimin e sigurt të madhësisë dhe përputhjes për treguesit e papërpunuar (raw pointer), përfshirë përdorimin e tipeve me madhësi dinamike, siç janë slice, pa nevojën për të krijuar referenca për të dhënat.
- Dokumentacioni Ă«shtĂ« plotĂ«suar me njĂ« rekomandim pĂ«r tĂ« shmangur çlirimin e kujtesĂ«s, pĂ«r tĂ« cilĂ«n u mor njĂ« referencĂ« statike me njĂ« jetĂ«gjatĂ«si tĂ« pakufizuar (&âstatic) pĂ«rmes thirrjes Box::leak (round-trip unleaking), pasi njĂ« veprim i tillĂ« mund tĂ« shkaktojĂ« probleme pĂ«r shkak tĂ« moskompatibilitetit me optimizimet e ardhshme tĂ« kompajlerit dhe mekanizmat e lidhur pĂ«r alokimin e kujtesĂ«s. NĂ« vend tĂ« krijimit tĂ« njĂ« referencĂ« statike pĂ«r njĂ« transferim tĂ« pĂ«rkohshĂ«m tĂ« pronĂ«sisĂ«, rekomandohet pĂ«rdorimi i treguesve tĂ« papĂ«rpunuar, pĂ«r shembull, pĂ«rmes thirrjes Box::into_non_null.
- Një grup i ri API u kalua në kategorinë e stabilizuar, përfshirë stabilizimin e metodave dhe implementimeve të trait-ëve:
- IntoIterator për Box
- IntoIterator për &Box
- IntoIterator për &mut Box
- VecDeque::retain_back
- core::ffi::VaList
- Box::into_non_null
- Box::from_non_null
- Vec::into_parts
- Vec::from_parts
- core::mem::size_of_val_raw
- core::mem::align_of_val_raw
- core::alloc::Layout::for_value_raw
- String::from_utf8_lossy_owned
- string::FromUtf8Error::into_utf8_lossy
- FusedIterator për StepBy
- std::fs::set_times
- std::fs::set_times_nofollow
- Në menaxherin e paketave cargo është implementuar një profil i ri i integruar "debug", i ngjashëm me profilin "dev" (në të ardhmen pritet të ndahen mundësitë për debuggim dhe zhvillim). Gjatë ndërtimit në CI, kompilimi inkremental është aktivizuar si parazgjedhje.
- Platformat e targetit riscv64-unknown-linux-musl është çuar në nivelin e dytë të mbështetjes, i cili përfshin garancinë e ndërtimit, por pa garanci gjatë kalimit të paketës testuese.
Gjithashtu mund të theksohet projektet dhe ngjarjet e shpallura së fundmi të lidhura me Rust:
- Kompania Microsoft ka ndërmarrë Rust në kategorinë e gjuhëve të nivelit të parë dhe do t'i ofrojë mbështetje të plotë në të gjitha fazat e zhvillimit brenda kompanisë. Nga më parë, mbështetje e nivelit të parë brenda kompanisë ishte ofruar për gjuhët C++, C# dhe TypeScript. Vërehet se Rust përdoret tashmë në më shumë se 100 depo të Microsoft. Pjesë të ndryshme të shkruara në Rust janë përdorur në produkte si Microsoft 365 dhe Copilot, dhe për kompilatorin MSVC është përgatitur një backend i veçantë rustc_codegen_utc për Rust, i bazuar në kompilatorin rustc.
Si qëllim kryesor i përdorimit të Rust në Microsoft përmendet përforcimi i sigurisë së kodit, i rëndësishëm nga pikëpamja e sigurisë. Sipas drejtorit teknik të Microsoft Azure, rreth 70% e të gjitha vulnerabiliteteve në Windows shkaktohen nga probleme të menaxhimit të memories, të cilat mund të evitohen duke përdorur Rust.
- Kompania Google e ka hequr nga bërthamja e Linux-it implementimin e vjetër të mekanizmit të komunikimit ndërproçesor Binder, të shkruar në gjuhën C, në favor të një drejtori të ri Binder IPC, i rikoduar në Rust. Vërehet se në 15 vjet ekzistence të drejtuesit të vjetër, ai ka akumuluar një borxh teknik të konsiderueshëm dhe një shumicë komplikimesh që e ka bërë të vështirë gjetjen e defekteve, mirëmbajtjen dhe shtimin e mundësive të reja. Drejtori Binder IPC në Rust është pranuar si kryesor dhe nuk konsiderohet më si një zhvillim eksperimental.
- ĂshtĂ« publikuar versioni Arti 2.7.0, njĂ« implementim i instrumenteve Tor, i shkruar nĂ« gjuhĂ«n Rust. Kur kodi Arti arrin nivelin qĂ« mund tĂ« zĂ«vendĂ«sojĂ« plotĂ«sisht variantin nĂ« C, zhvilluesit e Tor kanĂ« ndĂ«rmend t'i japin Arti statusin e implementimit kryesor tĂ« Tor dhe gradualisht tĂ« ndalin mirĂ«mbajtjen e implementimit nĂ« C. NĂ« versionin e ri Ă«shtĂ« shtruar zhvillimi i funksionalitetit pĂ«r rrelet dhe serverĂ«sh direktori (Directory Authority), e cila Ă«shtĂ« e lidhur me pĂ«rpunimin e dokumenteve, mbĂ«shtetje pĂ«r pasqyrimin e serverĂ«ve tĂ« direktorive dhe pĂ«rpunimin e trafikut DNS. U shtua implementimi i RPC pĂ«r ndryshimin dhe verifikimin e konfiguracionit. U eliminuan disa vulnerabilitete â administratorĂ«ve tĂ« shĂ«rbimeve onion u rekomandohet tĂ« azhurnojnĂ« menjĂ«herĂ« sistemet e tyre.
Burimi: opennet.ru
