Lëshimi i Rust 1.90. Instrumentet për krijimin e drejtuesve Windows në Rust

Ë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

Bleni hostin e besueshĂ«m pĂ«r faqet me mbrojtje nga DDoS, VPS VDS servera đŸ”„ Bli hostin e besueshĂ«m pĂ«r faqet me mbrojtje nga DDoS, VPS VDS servera | ProHoster