Rust 1.91 vÀljalase

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

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster