ĂshtĂ« publikuar lĂ«shimi i gjuhĂ«s sĂ« programimit Rust 1.90, e cila fillimisht ishte njĂ« projekt i Mozilla, por tani Ă«shtĂ« zhvilluar nĂ«n mbikĂ«qyrjen e njĂ« organizate jo-fitimprurĂ«se tĂ« pavarur, Rust Foundation. Gjuha Ă«shtĂ« fokusuar nĂ« punĂ«n e sigurt me memorien dhe ofron mjete pĂ«r tĂ« arritur njĂ« paralelizĂ«m tĂ« lartĂ« tĂ« ekzekutimit tĂ« detyrave, duke punuar pa pĂ«rdorimin e mbledhĂ«sit tĂ« plehrave dhe runtime (runtime pĂ«rmbledh nĂ« fillimin bazĂ« dhe mbĂ«shtetje pĂ«r bibliotekĂ«n standarde).
Metodat e punës me kujtesën në Rust e çlirojnë zhvilluesin nga gabimet gjatë manipulimit me treguesit dhe e mbrojnë atë nga problemet që lindin për shkak të punës me kujtesën në nivel të ulët, si qasja në një zonë kujtese pas çlirimit të saj, dereferencimi i treguesve null, dalja jashtë kufijve të buffers etj. Për shpërndarjen e bibliothekave, sigurimin e ndërtimit dhe menaxhimin e varësive, projekti zhvillohet me menaxherin e paketave Cargo. Për mbështetje të bibliothekave, ekziston një repository 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:
- Në Linux mbi kompjuterët me arkitekturën x86_64, për lidhjen dinamike të paketave kratë, përdoret siç është standardi povezuesi LLD nga projekti LLVM. Përdorimi i LLD gjatë lidhjes, krahasuar me lidhësin BFD, ka sjellë një rritje të performancës së lidhjes së skedarëve të mëdhenj ekzekutivë dhe projekteve me një vëllim të madh të informacionit për debugging, si dhe është përshpejtuar rrëza nga nëntë. Në shumicën e rasteve, LLD është përshkruese mbrapa kompatibile me BFD. Në rast se ndodhin probleme, mund të riktheheni te BFD duke treguar në variablin e mjedisit RUSTFLAGS flamurin "-C linker-features=-lld" ose duke e shtuar në skedarin e konfigurimit .cargo/config.toml: [target.x86_64-unknown-linux-gnu] rustflags = ["-Clinker-features=-lld"]
- NĂ« menaxherin e paketave cargo, nĂ« komandĂ«n "publish" Ă«shtĂ« realizuar njĂ« opsion "âworkspace", qĂ« lejon automatikisht publikimin e tĂ« gjitha paketave nga hapĂ«sira e punĂ«s sĂ« zgjedhur (grup paketash qĂ« pĂ«rdor njĂ« skedar Cargo.lock dhe njĂ« dosje tĂ« pĂ«rbashkĂ«t pĂ«r rezultatet e ndĂ«rtimit), duke ruajtur rendin e paketave dhe duke marrĂ« parasysh varĂ«sitĂ« midis tyre.
- Një grup i ri API u kalua në kategorinë e stabilizuar, përfshirë stabilizimin e metodave dhe implementimeve të trait-ëve:
- u{n}::checked_sub_signed
- u{n}::overflowing_sub_signed
- u{n}::saturating_sub_signed
- u{n}::wrapping_sub_signed
- impl Copy for IntErrorKind
- impl Hash for IntErrorKind
- impl PartialEq<&CStr> for CStr
- impl PartialEq<CString> for CStr
- impl PartialEq<Cow<CStr>> for CStr
- impl PartialEq<&CStr> for CString
- impl PartialEq<CStr> for CString
- impl PartialEq<Cow<CStr>> for CString
- impl PartialEq<&CStr> for Cow
- impl PartialEq<CStr> for Cow
- impl PartialEq<CString> for Cow
- Priznaku «const» aplicohet në funksione:
- <[T]>::reverse
- f32::floor
- f32::ceil
- f32::trunc
- f32::fract
- f32::round
- f32::round_ties_even
- f64::floor
- f64::ceil
- f64::trunc
- f64::fract
- f64::round
- f64::round_ties_even
- Për platformat e synuara që bazohen në bibliotekën Musl, që janë në nivelin e tretë të mbështetjes, lidhja dinamike përfshihet automatikisht: mips64-unknown-linux-muslabi64, powerpc64-unknown-linux-musl, powerpc-unknown-linux-musl, powerpc-unknown-linux-muslspe, riscv32gc-unknown-linux-musl, s390x-unknown-linux-musl dhe thumbv7neon-unknown-linux-musleabihf.
- Platforma e synuar «x86_64-apple-darwin» Ă«shtĂ« transferuar nga niveli i parĂ« i mbĂ«shtetjes nĂ« nivelin e dytĂ« (Apple planifikon tĂ« ndĂ«rpresĂ« mbĂ«shtetje pĂ«r arkitekturĂ«n x86_64). Niveli i parĂ« i mbĂ«shtetjes nĂ«nkupton krijimin e ndĂ«rtimeve binarĂ«, realizimin e testimeve tĂ« hollĂ«sishme dhe ofrimin e garancisĂ« mĂ« tĂ« lartĂ« tĂ« mbĂ«shtetjes pĂ«r platformĂ«n â çdo ndryshim nĂ« kompilator kontstohet me ekzekutimin e njĂ« kompleti tĂ« plotĂ« testesh. Niveli i dytĂ« i mbĂ«shtetjes nĂ«nkupton garancinĂ« e ndĂ«rtimit, por pa garanci gjatĂ« kalimit tĂ« setit tĂ« testit.
Së bashku me këtë, mund të theksohet zhvillimi nga kompania Microstoft i mjeteve për zhvillimin e drivereve për Windows në gjuhën Rust. Në GitHub tashmë është publikuar një paketë crate për krijimin e drivereve mbi WDM (Windows Driver Kit), KMDF (Kernel-Mode Driver Framework), dhe UMDF (User-Mode Driver Framework), si dhe shërbimeve Win32, të përshtatshme për përdorim në Windows 11. Qëllimi i projektit është të ofrojë për zhvilluesit në gjuhën Rust biblioteka dhe funksione, të ngjashme me ato që ofrohen në mjetet e WDK për zhvilluesit e drivereve në gjuhën C. Në këtë etapë, mjetet për zhvillimin e drivereve në Rust përdorin një numër të madh thirrjeve unsafe kur ndërveprojnë me nën-sistemet Windows, por më vonë planifikohet të përgatiten abstraksione të sigurta për strukturat e bërthamës dhe DDI (Device Driver Interface). Progresi i projektit shpërndahet nën licencat MIT dhe Apache 2.0.
Burimi: opennet.ru
