Rust 1.90 vÀljalase. Windowsi draiverite loomise tööriistakomplekt Rustil

Avaldati Rust 1.90 programmeerimiskeele vĂ€ljalase, mille on algatanud Mozilla projekt, kuid mida praegu arendab sĂ”ltumatu mittetulundusĂŒhing Rust Foundation. Keel keskendub mĂ€luga turvalisele töötlemisele ja pakub vahendeid ĂŒlesannete kĂ”rge paralelleerimise saavutamiseks, vĂ€ltides samas prĂŒgikoguja ja runtime'i (runtime piirdub baasiniitsialiseerimise ja standardraamatukogu toetamisega).

MÀluga töötamise meetodid Rust'is vabastavad arendajad pointerite manipulatsiooni vigadest ja kaitsevad neid probleemide eest, mis tulenevad madala taseme mÀlu haldamisest, nagu mÀlualale pÀrast selle vabastamist juurdepÀÀs, null-pointerite dereferentseerimine, puhverserveri piiridest vÀljumine jne. Raamatukogude levitamiseks, kokkupaneku tagamiseks ja sÔltuvuste haldamiseks arendatakse paketihaldurit Cargo. Raamatukogude majutamiseks toetatakse repoturite crates.io.

MĂ€luhĂŒgieen Rust'is tagatakse kompileerimise ajal viidete kontrollimise, objektide omandi jĂ€lgimise, objektide eluaja (vaateala) arvestamise ja mĂ€lule juurdepÀÀsu korrektuse hindamise kaudu koodi tĂ€itmise ajal. Rust pakub ka vahendeid tĂ€isarvude ĂŒlevoolude vĂ€ltimiseks, nĂ”uab muutujate vÀÀrtuste kohustuslikku initsialiseerimist enne kasutamist, kĂ€sitleb vigu paremini standardraamatukogus, rakendab muutumatuse (immutable) mĂ”istet viidete ja muutujate jaoks vaikimisi ning pakub tugevat staatilist tĂŒĂŒpimist loogiliste vigade vĂ€hendamiseks.

Peamised uuendused:

  • Linuxis x86_64 arhitektuuriga arvutites kĂ€ivitatakse crate-pakettide dĂŒnaamiliseks sidumiseks vaikimisi LLVM projekti LLD sidur. LLD kasutamine BFD siduri vastu on tĂ”enĂ€oliselt parandanud suuremate tĂ€itmisfailide ja suure hulga silumisinfoga projektide sidumise jĂ”udlust, samuti kiirendanud inkrementaalset uuesti kompileerimist. Enamikes juhtudel on LLD BFD-ga tagurpidi ĂŒhilduv. Probleemide ilmnemisel saab naasta BFD juurde, mÀÀrates keskkonnamuutujas RUSTFLAGS lipu „-C linker-features=-lld“ vĂ”i lisades failisse .cargo/config.toml: [target.x86_64-unknown-linux-gnu] rustflags = [„-Clinker-features=-lld“]
  • Pakihaldur cargo kĂ€sus „publish“ on rakendatud valik „—workspace“, mis vĂ”imaldab automaatselt avaldada kĂ”ik pakid valitud tööruumist (pakettide kogum, mis kasutab ĂŒhte Cargo.lock faili ja ĂŒhist kogumiste tulemuste katalooge), sĂ€ilitades pakettide jĂ€rjekorra ja arvestades nendevahelisi sĂ”ltuvusi.
  • Uus hulk API-d on viidud stabiilsuse tasemele, sealhulgas on stabiliseeritud meetodid ja tĂŒĂŒbispetsiifikatsioonide rakendused:
    • 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
  • MĂ€rgis „const“ on rakendatud funktsioonides:
    • <[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
  • Musli raamatukogul pĂ”hinevate sihtplatvormide jaoks, mis on kolmandas toetuse tasemes, on vaikimisi aktiviseeritud dĂŒnaamiline sidumine: mips64-unknown-linux-muslabi64, powerpc64-unknown-linux-musl, powerpc-unknown-linux-musl, powerpc-unknown-linux-muslspe, riscv32gc-unknown-linux-musl, s390x-unknown-linux-musl ja thumbv7neon-unknown-linux-musleabihf.
  • Sihtplatvorm "x86_64-apple-darwin" on tĂ”stetud esimesest toetusastmest teise (Apple kavatseb lĂ”petada x86_64 arhitektuuri toetamise). Esimene toetusaste tĂ€hendab binaarsĂŒsteemide genereerimist, pĂ”hjalike testide lĂ€biviimist ja platvormiga seotud kĂ”rgeima toetuse garantii andmist – iga kompilaatori muudatust kontrollitakse tĂ€iste testi komplekti lĂ€bimisega. Teine toetusaste tĂ€hendab ehituse garantiid, kuid testide lĂ€bimise korral pole garantiiid olemas.

Lisaks vĂ”ib mĂ€rkida, et Microsoft on arendanud Windows-i draiverite arendamise tööriistu Rust keeles. GitHub'is on juba avaldatud komplekt crate-pakette draiverite loomiseks WDM (Windows Driver Kit), KMDF (Kernel-Mode Driver Framework) ja UMDF (User-Mode Driver Framework) baasil, samuti Win32 teenuseid, mis on sobivad Windows 11-s kasutamiseks. Projekti eesmĂ€rk on pakkuda Rust arendajatele raamatukogusid ja funktsioone, mis on sarnased neile, mida pakutakse WDK-s C keele draiverite arendajatele. Praegusel etapil kasutab Rust draiverite arendamise tööriist palju unsafe-kutsungeid Windowsi alamsĂŒsteemidega suhtlemiseks, kuid tulevikus on plaanis ette valmistada ohutud abstraktsioonid sĂŒdamike struktuuride ja DDI (Device Driver Interface) jaoks. Projekti arendused on litsentseeritud MIT ja Apache 2.0 all.

Allikas: opennet.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster