Kutu 1.96.0

Toleo limechapishwa Kutu 1.96.0 — toleo jipya zaidi thabiti la lugha ya programu ya Rust. Sasisho limetolewa. 28 Mei 2026 mwaka; inaweza kusakinishwa kwa kutumia amri ya kawaida ya rustup update stable. Mabadiliko makuu yanajumuisha aina mpya za masafa katika core::range, uthabiti wa makro zinazolingana na muundo, uimarishaji wa tabia ya ujenzi wa WebAssembly, na marekebisho ya udhaifu mbili katika Cargo.

Mabadiliko makubwa

  • Aina mpya za masafa kiini::range::Range*.
    Aina mpya za masafa zimeimarishwa katika maktaba ya kawaida: core::range::Range, RangeFrom, RangeInclusive, na virudishio vyao vinavyohusiana. Tofauti na aina za zamani kutoka core::ops, safu mpya hazitekelezi Kirudishio moja kwa moja, lakini hubadilishwa kuwa kirudishio kupitia IntoIterator. Hii inaruhusu safu hizi kuwa Zinazoweza Kunakiliwa, ambayo ni rahisi, kwa mfano, wakati wa kuhifadhi safu kama sehemu ya muundo. Sintaksia kama 0..1 kwa sasa huunda aina za safu za zamani, lakini imepangwa kuhamishiwa kwenye aina mpya katika toleo la baadaye la lugha.

  • Imeongeza assert_matches! na debug_assert_matches!.
    Macro mpya hukuruhusu kuangalia kwamba thamani inalingana na muundo uliotolewa. Hii ni sawa katika dhana ya kudai!(matches!(…)), lakini katika kesi ya hitilafu, uwakilishi wa utatuzi wa thamani huchapishwa, na kurahisisha utambuzi. Macro hizi hazikuongezwa kwenye Prelude ili kuepuka migogoro na kreti maarufu za wahusika wengine, kwa hivyo lazima ziingizwe waziwazi kutoka kwa kiini au std.

  • Imebadilisha tabia ya malengo ya WebAssembly.
    Kutu haipiti tena --allow-undefined kwenye kiunganishi cha WebAssembly builds. Alama zisizofafanuliwa sasa zinachukuliwa kama hitilafu wakati wa kuunganisha, badala ya kubadilishwa kiotomatiki kuwa uagizaji kutoka kwa moduli ya "env". Hii inapaswa kukamata hitilafu za ujenzi na majina batili ya alama mapema. Tabia ya zamani inaweza kurejeshwa, ikihitajika, kwa kutumia RUSTFLAGS=-Clink-arg=--allow-undefined au kwa kubainisha wazi moduli ya wasm iliyoingizwa kwa kutumia #[link(wasm_import_module = "env")].

  • Mizigo imepokea marekebisho ya usalama.
    Rust 1.96.0 hurekebisha udhaifu mbili unaoathiri watumiaji wa sajili za wahusika wengine. CVE-2026-5223 Kuhusiana na utunzaji wa viungo vya ulinganifu ndani ya tarball za kreti: kifurushi hasidi kutoka kwa sajili ya mtu mwingine kinaweza kubatilisha akiba ya kifurushi kingine kutoka kwa sajili hiyo hiyo. Kuanzia na Rust 1.96.0, Cargo inakataa kumbukumbu za kreti zenye viungo vya ulinganifu. CVE-2026-5222 Suala hili linahusiana na urekebishaji wa URL katika sajili fupi na, katika hali nadra, linaweza kusababisha tokeni ya Cargo kutumwa kwenye sajili hasidi. Kulingana na timu ya Rust, watumiaji wa crate.io hawaathiriwi na masuala haya.

  • Mabadiliko katika lugha.
    Toleo hilo linajumuisha: Marekebisho na maboresho kadhaa madogo: Iliruhusu kupitisha vigeu vya expr vya makro hadi cfg, kurekebisha utumaji wa aina isiyo na aina katika misemo ya tuple, kurekebisha visa nadra vya vidokezo visivyo sahihi vya hitimisho la aina kwa hoja za kitendakazi, kuongeza usaidizi kwa sajili za vekta za s390x katika mkusanyiko wa ndani, na kuruhusu tena vigeu vya ManuallyDrop kama violezo—hii hurekebisha urejeshaji ulioletwa katika Rust 1.94.0.

  • Mabadiliko katika mkusanyiko na mifumo.
    Kwa LinuxUsaidizi wa kulegeza viungo umewezeshwa kwa malengo ya LoongArch—uboreshaji wa kuunganisha unaorahisisha baadhi ya mabadiliko na simu baada ya kusambaza msimbo. Kwa riscv64gc-unknown-fuchsia, usanidi wa msingi umesasishwa hadi wasifu wa RVA22 kwa usaidizi wa viendelezi vya vekta.

  • Masasisho ya kawaida ya maktaba.
    Usaidizi wa kurudia rudia safu za nambari kamili za NonZero umeongezwa. Ushughulikiaji wa uvivu wa anwani za mwenyeji katika SGX kupitia ToSocketAddr pia umerekebishwa, na ufafanuzi wa kumbukumbu ya "inayosomeka/inayoweza kuandikwa" umefafanuliwa katika nyaraka na mikataba ya ndani: kiashiria cha null kimeondolewa kwenye ufafanuzi wa jumla, na vighairi sasa vimeainishwa kando kwa mbinu maalum.

  • API Zilizoimarishwa.
    Miongoni mwa violesura vilivyoimarishwa ni assert_matches!, debug_assert_matches!, utekelezaji wa From kwa AssertUnwindSafe , LazyCell na LazyLock , pamoja na aina mpya za masafa na virudiaji kutoka core::range, ikijumuisha Range, RangeFrom, RangeToInclusive na virudiaji vyao.

  • Mizigo: Mabadiliko ya utegemezi na nyaraka.
    Utegemezi sasa unaweza kubainisha hazina ya Git na sajili mbadala: toleo la Git litatumika ndani, na toleo la sajili litatumika wakati wa kuchapisha, sawa na tabia ya crate.io. Usaidizi wa target.'cfg(..)'.rustdocflags katika usanidi wa Cargo pia umeongezwa.

  • Rustdoc sasa inashughulikia nyaraka kwa usahihi zaidi.
    Vidokezo vya API vilivyoondolewa sasa vinatolewa kama nyaraka za kawaida, bila usindikaji maalum wa awali kupitia white-space: pre-wrap. Zaidi ya hayo, rustdoc haionyeshi tena missing_doc_code_examples kwa vipengele vilivyo ndani ya impl, na mbinu na kazi zinazohusiana sasa zimetenganishwa katika upau wa upau wa nyaraka.

  • Kutolingana kunakowezekana.
    Toleo hili lina mabadiliko kadhaa ambayo yanaweza kuonekana katika msimbo usio wa kawaida: mpangilio wa baadhi ya enum za #[repr(Int)] umerekebishwa katika hali mbaya zaidi, na baadhi ya wapigaji wasio na maana wa unsize katika Pin wamezimwa. , WebAssembly hujengwa sasa huanguka kwenye alama ambazo hazijafafanuliwa, sifa ya #![reexport_test_harness_main] iliyoimarishwa kwa bahati mbaya imezuiwa tena, chaguo la -Csoft-float limeondolewa, na toleo la chini kabisa la LLVM la nje limeongezwa hadi 21. Kwa AVR, aina ya c_double imebadilishwa kuwa f32, kwa kuwa C doubles ni biti 32 kwa chaguo-msingi kwenye malengo haya.

Chanzo: linux.org.ru

Nunua upangishaji wa kuaminika wa tovuti zilizo na ulinzi wa DDoS, seva za VPS VDS 🔥 Nunua upangishaji wa tovuti unaoaminika kwa ulinzi wa DDoS, seva za VPS VDS | ProHoster