Karat 1.96.0

Rilis kasebut wis diterbitake Karat 1.96.0 — versi stabil paling anyar saka basa pamrograman Rust. Pembaruan wis dirilis. 28 Bisa 2026 taun; iki bisa diinstal nganggo printah rustup update stable standar. Owah-owahan utama kalebu jinis range anyar ing core::range, stabilisasi makro pencocokan pola, pengetatan prilaku build WebAssembly, lan ndandani rong kerentanan ing Cargo.

Pangowahan utama

  • Jinis rentang anyar core::range::Range*.
    Jinis rentang anyar wis distabilisasi ing pustaka standar: core::range::Range, RangeFrom, RangeInclusive, lan iterator sing ana gandhengane. Ora kaya jinis lawas saka core::ops, rentang anyar ora ngimplementasikake Iterator kanthi langsung, nanging diowahi dadi iterator liwat IntoIterator. Iki ngidini rentang kasebut bisa Disalin, sing trep, contone, nalika nyimpen rentang minangka kolom struktur. Sintaks kaya 0..1 saiki nggawe jinis rentang lawas, nanging direncanakake bakal dimigrasi menyang jinis anyar ing versi basa sing bakal teka.

  • Nambahake assert_matches! lan debug_assert_matches!.
    Makro anyar ngidini sampeyan mriksa manawa nilai cocog karo pola sing diwenehake. Iki konsep sing padha karo assert!(matches!(…)), nanging yen ana kesalahan, representasi debug saka nilai kasebut dicithak, sing nggampangake diagnostik. Makro iki ora ditambahake menyang Prelude kanggo nyegah konflik karo peti pihak katelu sing populer, mula kudu diimpor kanthi eksplisit saka core utawa std.

  • Ngganti prilaku target WebAssembly.
    Rust ora maneh ngirim --allow-undefined menyang linker kanggo build WebAssembly. Simbol sing ora ditemtokake saiki dianggep minangka kesalahan nalika ngubungake, tinimbang diowahi kanthi otomatis dadi impor saka modul "env". Iki kudune bisa nangkep kesalahan build lan jeneng simbol sing ora valid luwih awal. Prilaku lawas bisa dibalekake, yen perlu, nggunakake RUSTFLAGS=-Clink-arg=--allow-undefined utawa kanthi nemtokake modul wasm sing diimpor kanthi eksplisit nggunakake #[link(wasm_import_module = "env")].

  • Cargo wis nampa perbaikan keamanan.
    Rust 1.96.0 ndandani rong kerentanan sing mengaruhi pangguna registri pihak katelu. CVE-2026-5223 Gegandhengan karo penanganan symlink ing njero tarball peti: paket jahat saka registri pihak katelu bisa nimpa cache paket liya saka registri sing padha. Diwiwiti karo Rust 1.96.0, Cargo nolak arsip peti sing ngemot symlink. CVE-2026-5222 Masalah iki ana hubungane karo normalisasi URL ing registri sing jarang lan, ing kahanan langka, bisa nyebabake token Cargo dikirim menyang registri sing mbebayani. Miturut tim Rust, pangguna crates.io ora kena pengaruh masalah kasebut.

  • Owah-owahan ing basa.
    Rilis kasebut kalebu: Sawetara perbaikan lan peningkatan cilik: Ngidini ngirim metavariabel expr saka makro menyang cfg, mbenerake casting never-type ing ekspresi tuple, ndandani kasus langka saka petunjuk inferensi tipe sing salah kanggo argumen fungsi, nambahake dhukungan kanggo register vektor s390x ing perakitan inline, lan ngidini maneh konstanta ManuallyDrop minangka cithakan—iki ndandani regresi sing dikenalake ing Rust 1.94.0.

  • Owah-owahan ing kompiler lan platform.
    Kanggo LinuxDhukungan relaksasi pranala wis diaktifake kanggo target LoongArch—optimasi pranala sing nyederhanakake sawetara transisi lan panggilan sawise penyebaran kode. Kanggo riscv64gc-unknown-fuchsia, konfigurasi dhasar wis dianyari menyang profil RVA22 kanthi dhukungan kanggo ekstensi vektor.

  • Nganyari perpustakaan standar.
    Dhukungan kanggo iterasi liwat rentang integer NonZero wis ditambahake. Penanganan alamat host sing malas ing SGX liwat ToSocketAddr uga wis didandani, lan definisi memori "bisa diwaca/ditulis" wis dijlentrehake ing dokumentasi lan kontrak internal: pointer null wis dibusak saka definisi umum, lan pangecualian saiki ditemtokake kanthi kapisah kanggo metode tartamtu.

  • API sing wis distabilisasi.
    Ing antarane antarmuka sing wis distabilisasi yaiku assert_matches!, debug_assert_matches!, implementasi saka From kanggo AssertUnwindSafe , LazyCell lan LazyLock , uga jinis range lan iterator anyar saka core::range, kalebu Range, RangeFrom, RangeToInclusive lan iterator-iteratore.

  • Kargo: Owah-owahan ing katergantungan lan dokumentasi.
    Katergantungan saiki bisa nemtokake repositori Git lan registri alternatif: versi Git bakal digunakake sacara lokal, lan versi registri bakal digunakake sajrone penerbitan, padha karo prilaku karo crates.io. Dhukungan kanggo target.'cfg(..)'.rustdocflags ing konfigurasi Cargo uga wis ditambahake.

  • Rustdoc saiki nangani dokumentasi kanthi luwih akurat.
    Cathetan API sing ora digunakake saiki dirender minangka dokumentasi biasa, tanpa proses khusus sadurunge liwat spasi putih: pre-wrap. Kajaba iku, rustdoc ora maneh nampilake missing_doc_code_examples kanggo elemen ing njero impl, lan metode lan fungsi sing gegandhengan saiki dipisahake ing sidebar dokumentasi.

  • Kemungkinan inkompatibilitas.
    Rilis iki ngemot sawetara owah-owahan sing bisa uga katon ing kode non-standar: tata letak sawetara enum #[repr(Int)] wis didandani ing kasus ekstrem, lan sawetara cetakan ukuran sing ora ana gunane ing Pin wis dipateni. , Build WebAssembly saiki nabrak ing simbol sing ora ditemtokake, atribut #![reexport_test_harness_main] sing ora sengaja distabilisasi wis di-gated fitur maneh, opsi -Csoft-float wis dibusak, lan versi LLVM eksternal minimal wis ditambah dadi 21. Kanggo AVR, jinis c_double wis diganti dadi f32, amarga C double minangka 32-bit kanthi standar ing target kasebut.

Source: linux.org.ru

Tuku hosting sing dipercaya kanggo situs kanthi proteksi DDoS, server VPS VDS 🔥 Tuku hosting situs web sing bisa dipercaya nganggo proteksi DDoS, server VPS VDS | ProHoster