Avalikkus on toimunud programmeerimiskeele Rust 1.91 versioon, mis loodi Mozilla projekti raames, kuid mida arendab nĂŒĂŒd sĂ”ltumatu mittetulundusĂŒhing Rust Foundation. Keel keskendub mĂ€luga ohutule töötamisele ja pakub vahendeid ĂŒlesannete kĂ”rgete paralleelsuse saavutamiseks, vĂ€ltides samas prĂŒgilate ja runtime'i kasutamist (runtime piirdub pĂ”hihaldamise ja standardsete raamatukogude hooldamisega).
Rustis olevad mĂ€luhaldusmeetodid vabastavad arendajad probleemidest, mis on seotud osutitega, ning kaitsevad madala taseme mĂ€lutöötlusest tulenevate probleemide, nagu vabanenud mĂ€lu alale juurdepÀÀs, nullosutite de-referentseerimine, mĂ€lupiiride ĂŒletamine jne. Raamatukogude levitamiseks, projekti koostamise ja sĂ”ltuvuste haldamiseks arendatakse pakihaldurit Cargo. Raamatukogude paigutamiseks toetatakse repo crates.io.
Rust tagab turvalise mĂ€lutöötluse kompilatsiooni ajal, kontrollides viiteid, jĂ€lgides objektide omandit, arvestades objektide elutsĂŒklit (nĂ€htavust) ja hinnates mĂ€lule juurdepÀÀsu Ă”igsust koodi kĂ€itamise ajal. Rust pakub ka meetmeid enamike tĂ€isarvude ĂŒletamiste vĂ€ltimiseks, nĂ”uab muutujate vÀÀrtuste algvÀÀrtustamist enne kasutamist, kĂ€sitleb vigasid paremini oma standardraamatukogus, rakendab immutamatuse (immutable) kontseptsiooni viidetes ja muutujates vaikimisi ning pakub tugevat staatilist tĂŒĂŒpimist loogiliste vigade minimeerimiseks.
PÔhilised uuendused:
- Parandatud 64-bitiste ARM-sĂŒsteemide toetamist Windowsi opsĂŒsteemi jaoks. Sihtplatvorm "aarch64-pc-windows-msvc" on viidud teise toetasemelt esimesse. Aarch64-pc-windows-gnullvm ja x86_64-pc-windows-gnullvm arhitektuuride jaoks tagatakse teine toetaseme tase. Esimene tase tĂ€hendab binaarsĂŒsteemide loomist, pĂ”hjalikku testimist ja maksimaalset garantii platvormi toele â iga muudatus kompilaatoris kontrollitakse tĂ€ieliku testkomplekti kĂ€ivitamisega. Teine tase hĂ”lmab binaarsĂŒsteemide loomist ja koostamise garantiid, kuid ei garanteeri testkomplekti lĂ€bimist. Kolmas tase hĂ”lmab pĂ”hitoetust, kuid ilma automaatse testimise, ametlike versioonide avaldamise ja koodi koostamise kontrollimiseta.
- Lisatud lint-hoiatust âdangling_pointers_from_localsâ, et tuvastada funktsioonide, mis tagastavad viitamatud raw-viidikud, mis viitavad andmetele, mis on salvestatud kutsutud funktsioonis mÀÀratud kohalikesse muutujatesse. Sellised muutujad eemaldatakse pĂ€rast funktsiooni lĂ”ppu ja raw-viidikud, mis osutavad nende muutujatega seotud andmetele, muutuvad viidatud, st viitavad vabastatud mĂ€lule. Edasine de-refereerimine sellist viidikut toob kaasa mÀÀramata kĂ€itumise. fn f() -> *const u8 { let x = 0; &x // hoiatamine: tekib viitatu viidik, kuna kohalik muutuja «x» kustutatakse }
- Lisatud lint-hoiatust âinteger_to_ptr_transmutesâ, mis teavitab tĂ€isarvude muutmisest viidikuteks funktsiooniga std::mem::transmute.
- Pakihalduris Cargo stabiliseeriti parameetri âbuild.build-dirâ tugi, mis mÀÀratleb katalooge ajutiste kogumise artefaktide hoidmiseks, mis loodakse cargo ja rustc kogumise etapis.
- ABI sysv64, win64, efiapi ja aapcs stabiliseeriti funktsoonide kuulutamise tugi, mis toetavad muutuva arvu argumente C-stiilis.
- Stabiliseeriti inline-assembleri tugi LoongArch32 arhitektuuri jaoks.
- Stabiilsete versioonide hulka on lisatud uus komplekt API-sid, sealhulgas on stabiliseeritud meetodid ja tĂŒĂŒpide rakendused:
- Path::file_prefix
- AtomicPtr::fetch_ptr_add
- AtomicPtr::fetch_ptr_sub
- AtomicPtr::fetch_byte_add
- AtomicPtr::fetch_byte_sub
- AtomicPtr::fetch_or
- AtomicPtr::fetch_and
- AtomicPtr::fetch_xor
- {integer}::strict_add
- {integer}::strict_sub
- {integer}::strict_mul
- {integer}::strict_div
- {integer}::strict_div_euclid
- {integer}::strict_rem
- {integer}::strict_rem_euclid
- {integer}::strict_neg
- {integer}::strict_shl
- {integer}::strict_shr
- {integer}::strict_pow
- i{N}::strict_add_unsigned
- i{N}::strict_sub_unsigned
- i{N}::strict_abs
- u{N}::strict_add_signed
- u{N}::strict_sub_signed
- PanicHookInfo::payload_as_str
- core::iter::chain
- u{N}::checked_signed_diff
- core::array::repeat
- PathBuf::add_extension
- PathBuf::with_added_extension
- Duration::from_mins
- Duration::from_hours
- impl PartialEq for PathBuf
- impl PartialEq for PathBuf
- impl PartialEq for Path
- impl PartialEq for Path
- impl PartialEq for String
- impl PartialEq for String
- impl PartialEq for str
- impl PartialEq for str
- Ipv4Addr::from_octets
- Ipv6Addr::from_octets
- Ipv6Addr::from_segments
- impl Default for Pin<Box> where Box: Default, T: ?Sized
- impl Default for Pin<Rc> where Rc: Default, T: ?Sized
- impl Default for Pin<Arc> where Arc: Default, T: ?Sized
- Cell::as_array_of_cells
- u{N}::carrying_add
- u{N}::borrowing_sub
- u{N}::carrying_mul
- u{N}::carrying_mul_add
- BTreeMap::extract_if
- BTreeSet::extract_if
- impl Debug for windows::ffi::EncodeWide
- str::ceil_char_boundary
- str::floor_char_boundary
- impl Sum for Saturating
- impl Sum for Saturating
- impl Product for Saturating
- impl Product for Saturating
- MĂ€rkus 'const' rakendatud funktsioonides:
- ::each_ref
- ::each_mut
- OsString::new
- PathBuf::new
- TypeId::of
- ptr::with_exposed_provenance
- ptr::with_exposed_provenance_mut
- Kompilaator on uuendatud LLVM 21 haru versioonini.
Allikas: opennet.ru
