Rust 1.91 lansering

Utgitt en ny versjon av programmeringsspråket Rust 1.91, som ble utviklet av Mozilla, men som nå utvikles under tilsyn av den uavhengige ideelle organisasjonen Rust Foundation. Språket fokuserer på sikker minnehåndtering og gir verktøy for å oppnå høy parallellisering av oppgaver, uten å bruke garbage collection og runtime (runtime er begrenset til grunnleggende initialisering og vedlikehold av standardbiblioteket).

Minnehåndteringsmetodene i Rust reduserer utviklerens risiko for feil ved manipulasjon av pekere og beskytter mot problemer som oppstår fra lavnivå minnehåndtering, som tilgang til minne etter frigjøring, dereferering av nullpekere, bufferoverløp osv. For distribusjon av biblioteker, bygging og avhengighetsstyring utvikles pakkebehandleren Cargo. For plassering av biblioteker støttes depotet crates.io.

Sikker minnehåndtering i Rust oppnås under kompilering gjennom referansesjekk, eierskapsoppfølging av objekter, livstidskontroll (omfang) og korrekt adgangsvurdering til minnet under programkjøring. Rust gir også verktøy for å beskytte mot heltallsoverflow, krever obligatorisk initialisering av variabler før bruk, håndterer feil bedre i standardbiblioteket, anvender konseptet med immutable referanser og variabler som standard, og tilbyr sterk statisk typisering for å minimere logiske feil.

Hovudnyhende:

  • Forbedret støtte for 64-bits ARM-systemer med Windows-operativsystem. Den målrettede plattformen «aarch64-pc-windows-msvc» er oppgradert fra nivå to til nivå én støtte. Nivå to støtte er gitt for aarch64-pc-windows-gnullvm og x86_64-pc-windows-gnullvm. Nivå én støtte innebærer oppretting av binære distribusjoner, grundig testing og høyeste støttegaranti for plattformen — hver endring i kompilatoren sjekkes ved å gjennomføre hele testsuiten. Nivå to støtte inkluderer oppretting av binære distribusjoner og byggegaranti, men garanterer ikke at testsuiten passeres. Nivå tre dekker grunnleggende støtte, men uten automatisert testing, publisering av offisielle distribusjoner og bekreftelse på muligheten til å bygge koden.
  • Tilført lint-advarsel «dangling_pointers_from_locals» for å avdekke retur av funksjoner med hengende raw-peker (dangling raw pointer) som peker til data lagret i lokale variabler definert i den kalt funksjonen. Slike variabler fjernes etter at funksjonen er fullført, og raw-pekere på relaterte data blir hengende, dvs. peker til frigjort minne. Påfølgende dereferering av en slik peker fører til udefinert oppførsel. fn f() -> *const u8 { let x = 0; &x // advarsel: en hengende peker vil bli produsert fordi den lokale variabelen «x» vil bli droppet }
  • Tilført lint-advarsel «integer_to_ptr_transmutes», som gir beskjed om konvertering av heltall til pekere ved hjelp av funksjonen std::mem::transmute.
  • I pakkehåndtereren Cargo er støtte for parameteren «build.build-dir» stabilisert, som definerer katalogen for lagring av midlertidige byggeartefakter opprettet av cargo og rustc under byggeprosessen.
  • For ABI sysv64, win64, efiapi, and aapcs, support for declaring functions with a variable number of arguments in C style has been stabilized.
  • Support for inline assembler for the LoongArch32 architecture has been stabilized.
  • En ny gruppe API-er er blitt stabilisert, inkludert metoder og implementeringer av grensesnitt:
    • 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<str> for PathBuf
    • impl PartialEq<String> for PathBuf
    • impl PartialEq<str> for Path
    • impl PartialEq<String> for Path
    • impl PartialEq<PathBuf> for String
    • impl PartialEq<Path> for String
    • impl PartialEq<PathBuf> for str
    • impl PartialEq<Path> for str
    • Ipv4Addr::from_octets
    • Ipv6Addr::from_octets
    • Ipv6Addr::from_segments
    • impl<T> Default for Pin<Box<T>> where Box<T>: Default, T: ?Sized
    • impl<T> Default for Pin<Rc<T>> where Rc<T>: Default, T: ?Sized
    • impl<T> Default for Pin<Arc<T>> where Arc<T>: 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<u{N}>
    • impl Sum<&Self> for Saturating<u{N}>
    • impl Product for Saturating<u{N}>
    • impl Product<&Self> for Saturating<u{N}>
  • Spesifikasjonen «const» er brukt i funksjoner:
    • <[T; N]>::each_ref
    • <[T; N]>::each_mut
    • OsString::new
    • PathBuf::new
    • TypeId::of
    • ptr::with_exposed_provenance
    • ptr::with_exposed_provenance_mut
  • The compiler has been updated to LLVM branch 21.

Kilde: opennet.ru

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster