Vydána verze Rust 1.91

Programovací jazyk Rust 1.91, založený projektem Mozilla, ale nyní vyvíjený pod záštitou nezávislé neziskové organizace Rust Foundation, byl vydán. Jazyk se zaměřuje na bezpečnost paměti a poskytuje nástroje pro dosažení vysokého paralelismu provádění úloh, a to bez použití garbage collectoru a runtime prostředí (runtime prostředí je redukováno na základní inicializaci a údržbu standardní knihovny).

Metody zpracování paměti Rust šetří vývojáře před chybami při manipulaci s ukazateli a chrání před problémy, které vznikají v důsledku nízkoúrovňového zpracování paměti, jako je přístup k oblasti paměti po jejím uvolnění, dereferencování nulových ukazatelů, přetečení vyrovnávací paměti atd. Pro distribuci knihoven, poskytování sestavení a správu závislostí projekt vyvíjí správce balíčků Cargo. Úložiště crates.io je podporováno pro hostování knihoven.

Bezpečnost paměti je v Rustu zajištěna v době kompilace prostřednictvím kontroly referencí, sledování vlastnictví objektů, sledování životnosti objektů (rozsahů) a hodnocení správnosti přístupu do paměti během provádění kódu. Rust také poskytuje ochranu proti přetečení celých čísel, vyžaduje povinnou inicializaci hodnot proměnných před použitím, lépe zpracovává chyby ve standardní knihovně, standardně aplikuje koncept neměnných referencí a proměnných, nabízí silné statické typování pro minimalizaci logických chyb.

Hlavní inovace:

  • Vylepšená podpora pro 64bitové systémy ARM s OS WindowsCílová platforma „aarch64-pc-windows-msvc“ byla upgradována z úrovně podpory 2 na úroveň 1. Úroveň podpory 2 je nyní k dispozici pro architektury aarch64-pc-windows-gnullvm a x86_64-pc-windows-gnullvm. Úroveň podpory 1 zahrnuje binární sestavení, komplexní testování a nejvyšší záruku podpory platformy – každá změna kompilátoru je ověřena spuštěním celé testovací sady. Úroveň podpory 2 zahrnuje binární sestavení a záruku sestavení, ale nezaručuje úspěšné absolvování testovací sady. Úroveň podpory 3 zahrnuje základní podporu, ale nezahrnuje automatizované testování, oficiální sestavení ani ověřování sestavení.
  • Přidáno varování „dangling_pointers_from_locals“ pro detekci funkcí vracejících volné nezpracované ukazatele směřující na data uložená v lokálních proměnných definovaných ve volané funkci. Takové proměnné jsou po návratu funkce smazány a nezpracované ukazatele na data spojená s těmito proměnnými se stanou volnými, tj. ukazujícími na uvolněnou paměť. Následné dereferencování takového ukazatele vede k nedefinovanému chování. fn f() -> *const u8 { let x = 0; &x // varování: bude vytvořen volný ukazatel, protože lokální proměnná „x“ bude zrušena }
  • Přidáno varování lint "integer_to_ptr_transmutes" informující o převodu celých čísel na ukazatele pomocí funkce std::mem::transmute.
  • Správce balíčků Cargo stabilizoval podporu pro parametr „build.build-dir“, který určuje adresář pro ukládání dočasných artefaktů sestavení vytvořených programy cargo a rustc během procesu sestavení.
  • Podpora pro deklaraci variadic funkcí ve stylu jazyka C byla stabilizována pro ABI sysv64, win64, efiapi a aapcs.
  • Stabilizovaná podpora inline assembleru pro architekturu LoongArch32.
  • Nová část API byla přesunuta do kategorie stabilní, včetně metod a implementací vlastností byly stabilizovány:
    • Cesta::předpona_souboru
    • 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
    • {celé číslo}::strict_add
    • {celé číslo}::strict_sub
    • {celé číslo}::strict_mul
    • {celočíselný}::strict_div
    • {celé číslo}::strict_div_euclid
    • {celé číslo}::strict_rem
    • {celé číslo}::strict_rem_euclid
    • {celé číslo}::strict_neg
    • {celé číslo}::strict_shl
    • {celé číslo}::strict_shr
    • {celé číslo}::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
    • jádro::iter::řetězec
    • u{N}::checked_signed_diff
    • jádro::pole::opakování
    • PathBuf::add_extension
    • PathBuf::s_přidanou_příponou
    • Trvání::from_mins
    • Trvání::od_hodin
    • imp Parciální rovnice pro PathBuf
    • imp Parciální rovnice pro PathBuf
    • imp Parciální rovnice pro cestu
    • imp Parciální rovnice pro cestu
    • imp Parciální rovnice pro řetězec
    • imp Parciální rovnice pro řetězec
    • imp Parciální rovnice pro str
    • imp Parciální rovnice pro str
    • IPv4Addr::from_octets
    • IPv6Addr::from_octets
    • IPv6Addr::from_segments
    • implementace Výchozí nastavení pro Pin > kde krabice Výchozí, T: ?Velikost
    • implementace Výchozí nastavení pro Pin > kde Rc Výchozí, T: ?Velikost
    • implementace Výchozí nastavení pro Pin > kde Oblouk Výchozí, T: ?Velikost
    • Buňka::as_array_of_cells
    • u{N}::carrying_add
    • u{N}::půjčka_sub
    • u{N}::carrying_mul
    • u{N}::carrying_mul_add
    • BTreeMap::extract_if
    • BTreeSet::extract_if
    • ladění impl pro windows::ffi::EncodeWide<'_>
    • str::ceil_char_boundary
    • str::floor_char_boundary
    • imp Sum pro nasycení
    • impl Sum<&Self> pro saturaci
    • produkt pro nasycení
    • impl Product<&Self> pro saturaci
  • Znak „const“ se používá ve funkcích:
    • <[T; N]>::each_ref
    • <[T; N]>::each_mut
    • OsString::new
    • PathBuf::nový
    • TypeId::of
    • ptr::with_exposed_provenance
    • ptr::with_exposed_provenance_mut
  • Kompilátor byl aktualizován na větev LLVM 21.

Zdroj: opennet.ru

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster