Rust 1.91 Dileupaskeun

Basa pemrograman Rust 1.91, diadegkeun ku proyék Mozilla tapi ayeuna dikembangkeun dina naungan Yayasan Rust nirlaba bebas, parantos dileupaskeun. basa museurkeun kana kaamanan memori jeung nyadiakeun parabot pikeun achieving tinggi paralelisme palaksanaan tugas, bari ngalakukeun tanpa pamakéan a collector sampah na runtime (runtime nu diréduksi jadi initialization dasar tur pamaliharaan perpustakaan baku).

Métode penanganan memori Rust nyalametkeun pamekar tina kasalahan nalika ngamanipulasi pointer sareng ngajagi tina masalah anu timbul kusabab panangan mémori tingkat rendah, sapertos aksés ka daérah mémori saatos dibébaskeun, dereferencing pointer null, overruns panyangga, jsb. Pikeun ngadistribusikaeun perpustakaan, nyadiakeun ngawangun jeung ngatur kagumantungan, proyék ngamekarkeun manajer pakét Cargo. Repositori crates.io dirojong pikeun perpustakaan hosting.

Kasalametan memori disayogikeun dina Rust dina waktos kompilasi ngaliwatan pamariksaan rujukan, ngalacak kapamilikan obyék, ngalacak umur obyék (skop), sareng ngira-ngira kabeneran aksés mémori nalika palaksanaan kode. Karat ogé nyadiakeun panyalindungan ngalawan overflows integer, merlukeun initialization wajib nilai variabel saméméh pamakéan, handles kasalahan hadé dina perpustakaan baku, nerapkeun konsép rujukan immutable sarta variabel sacara standar, nawarkeun ketak statik kuat pikeun ngaleutikan kasalahan logis.

Inovasi utama:

  • Rojongan pikeun sistem ARM 64-bit anu ngajalankeun Windows parantos ningkat. Platform target "aarch64-pc-windows-msvc" parantos ditingkatkeun tina tingkat dukungan 2 ka tingkat 1. Tingkat dukungan 2 ayeuna sayogi pikeun arsitéktur aarch64-pc-windows-gnullvm sareng x86_64-pc-windows-gnullvm. Tingkat pangrojong 1 kalebet ngawangun binér, uji komprehensif, sareng garansi dukungan platform anu paling luhur — unggal parobihan kompiler diverifikasi ku ngajalankeun suite tés lengkep. Tingkat rojongan 2 ngawengku wangunan binér sarta jaminan ngawangun, tapi teu ngajamin lulus test suite. Tingkat rojongan 3 ngawengku rojongan dasar, tapi teu kaasup nguji otomatis, publikasi wangunan resmi, atawa ngawangun verifikasi.
  • Ditambahkeun "dangling_pointers_from_locals" lint warning pikeun ngadeteksi fungsi balik dangling pointers atah nunjuk ka data disimpen dina variabel lokal didefinisikeun dina fungsi disebut. Variabel sapertos ieu dipupus saatos fungsina balik, sareng pointer atah kana data anu aya hubunganana sareng variabel ieu janten dangling, nyaéta nunjukkeun mémori anu dibébaskeun. Dereferencing saterusna tina pointer sapertos ngakibatkeun kabiasaan undefined. fn f() -> *const u8 { hayu x = 0; &x // warning: a pointer dangling bakal dihasilkeun sabab variabel lokal "x" bakal turun}
  • Ditambahkeun lint warning "integer_to_ptr_transmutes" pikeun nginpokeun ngeunaan ngarobah integer kana pointer ngagunakeun std :: mem :: fungsi transmute.
  • Manajer pakét kargo geus stabilized rojongan pikeun parameter "build.build-dir", nu nangtukeun diréktori pikeun nyimpen artefak ngawangun samentara dijieun ku kargo na rustc salila prosés ngawangun.
  • Rojongan pikeun nyatakeun fungsi variadic gaya C parantos distabilkeun pikeun sysv64, win64, efiapi, sareng aapcs ABI.
  • Pangrojong assembler inline anu stabil pikeun arsitektur LoongArch32.
  • Bagian anyar tina API geus dipindahkeun ka kategori stabil, kaasup métode jeung palaksanaan Tret geus stabilized:
    • 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
    • inti:: iter:: ranté
    • u{N}::checked_signed_diff
    • inti:: array:: ulang
    • PathBuf:: add_extension
    • PathBuf:: with_added_extension
    • Durasi::from_mins
    • Durasi:: ti_jam
    • impl ParsialEq pikeun PathBuf
    • impl ParsialEq pikeun PathBuf
    • impl ParsialEq pikeun Path
    • impl ParsialEq pikeun Path
    • impl ParsialEq pikeun String
    • impl ParsialEq pikeun String
    • impl ParsialEq pikeun str
    • impl ParsialEq pikeun str
    • Ipv4Addr::from_octets
    • Ipv6Addr::from_octets
    • Ipv6Addr::from_segments
    • impl Default pikeun Pin > dimana Box : Default, T: ?Ukuran
    • impl Default pikeun Pin > dimana Rc : Default, T: ?Ukuran
    • impl Default pikeun Pin > dimana Arc : Default, T: ?Ukuran
    • 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 pikeun windows::ffi::EncodeWide<'_>
    • str::ceil_char_boundary
    • str::floor_char_boundary
    • impl Sum pikeun Saturating
    • impl Sum<&Self> pikeun Saturating
    • impl Produk pikeun Saturating
    • impl Product<&Self> pikeun Saturating
  • Tanda "const" dianggo dina fungsi:
    • <[T; N]>:: unggal_ref
    • <[T; N]>:: unggal_mut
    • OsString :: anyar
    • PathBuf:: anyar
    • TypeId::tina
    • ptr:: with_exposed_provenance
    • ptr:: with_exposed_provenance_mut
  • Kompiler parantos diropéa kana cabang LLVM 21.

sumber: opennet.ru

Tambahkeun komentar