Занги 1.96.0

Нусха нашр шудааст Занги 1.96.0 — версияи охирини устувори забони барномасозии Rust. Навсозӣ бароварда шуд. 28 Моҳи майи 2026; онро бо истифода аз фармони стандартии rustup update stable насб кардан мумкин аст. Тағйироти асосӣ намудҳои нави диапазон дар core::range, устувор кардани макросҳои мувофиқкунии намуна, сахттар кардани рафтори сохтани WebAssembly ва ислоҳи ду осебпазирӣ дар Cargo-ро дар бар мегиранд.

Тағироти асосӣ

  • Намудҳои нави диапазон core::range::Range*.
    Намудҳои нави диапазонҳо дар китобхонаи стандартӣ устувор карда шудаанд: core::range::Range, RangeFrom, RangeInclusive ва итераторҳои марбут ба онҳо. Бар хилофи намудҳои кӯҳна аз core::ops, диапазонҳои нав Iterator-ро мустақиман амалӣ намекунанд, балки тавассути IntoIterator ба итератор табдил дода мешаванд. Ин имкон медиҳад, ки ин диапазонҳо нусхабардорӣ шаванд, ки масалан, ҳангоми нигоҳ доштани диапазон ҳамчун майдони сохтор қулай аст. Синтаксиси ба монанди 0..1 айни замон намудҳои кӯҳнаи диапазонро эҷод мекунад, аммо дар версияи ояндаи забон ба намудҳои нав интиқол дода мешавад.

  • assert_matches! ва debug_assert_matches! илова карда шуданд.
    Макросҳои нав ба шумо имкон медиҳанд, ки санҷед, ки оё арзиш бо намунаи додашуда мувофиқат мекунад. Ин аз ҷиҳати консепсия ба assert!(matches!(…)) монанд аст, аммо дар сурати хатогӣ, намояндагии ислоҳи арзиш чоп карда мешавад, ки ташхисро содда мекунад. Ин макросҳо ба Prelude илова карда нашудаанд, то аз низоъҳо бо қуттиҳои маъмули тарафи сеюм пешгирӣ карда шаванд, аз ин рӯ онҳо бояд ба таври возеҳ аз core ё std ворид карда шаванд.

  • Рафтори ҳадафҳои WebAssembly-ро тағйир дод.
    Rust дигар барои сохтани WebAssembly ба пайвандкунанда --allow-undefine намегузарад. Аломатҳои номуайян ҳоло ҳамчун хатогӣ ҳангоми пайвастшавӣ баррасӣ мешаванд, на ин ки ба таври худкор ба воридот аз модули "env" табдил дода шаванд. Ин бояд хатогиҳои сохташуда ва номҳои рамзҳои нодурустро қаблан муайян кунад. Дар ҳолати зарурӣ, рафтори кӯҳнаро бо истифода аз RUSTFLAGS=-Clink-arg=--allow-undefine ё бо муайян кардани возеҳи модули wasm-и воридшуда бо истифода аз #[link(wasm_import_module = "env")] баргардонидан мумкин аст.

  • Ширкати Cargo ислоҳоти амниятӣ гирифтааст.
    Нусхаи Rust 1.96.0 ду осебпазириеро, ки ба корбарони феҳристҳои тарафи сеюм таъсир мерасонанд, ислоҳ мекунад. CVE-2026-5223 Вобаста ба коркарди пайвандҳои рамзӣ дар дохили қуттиҳои тар: бастаи зараровар аз феҳристи тарафи сеюм метавонад кэши бастаи дигарро аз ҳамон феҳрист аз нав нависад. Аз Rust 1.96.0 сар карда, Cargo бойгониҳои қуттиро, ки дорои пайвандҳои рамзӣ мебошанд, рад мекунад. CVE-2026-5222 Ин масъала ба меъёрикунонии URL дар феҳристи пароканда алоқаманд аст ва дар ҳолатҳои нодир, метавонад боиси фиристодани токени Cargo ба феҳристи зараровар гардад. Ба гуфтаи дастаи Rust, корбарони crates.io аз ин мушкилот зарар намебинанд.

  • Тағйирот дар забон.
    Нашр инҳоро дар бар мегирад: Якчанд ислоҳот ва такмилдиҳии ночиз: Иҷозат дода шуд, ки метатағйирёбандаҳои expr-и макросҳо ба cfg интиқол дода шаванд, кастинги ҳеҷ гоҳ чопнашуда дар ифодаҳои tuple ислоҳ карда шавад, ҳолатҳои нодири ишораҳои нодурусти истинодҳои навъи барои аргументҳои функсия ислоҳ карда шаванд, дастгирии иловашуда барои регистрҳои вектории s390x дар ассемблеяи дохилӣ ва дубора иҷозат дода шудани доимиҳои ManuallyDrop ҳамчун шаблонҳо - ин регрессияи воридшударо дар Rust 1.94.0 ислоҳ мекунад.

  • Тағйирот дар компилятор ва платформаҳо.
    барои LinuxДастгирии истироҳати пайвандҳо барои ҳадафҳои LoongArch фаъол карда шудааст — беҳсозии пайвандсозӣ, ки баъзе гузаришҳо ва зангҳоро пас аз ҷойгиркунии код содда мекунад. Барои riscv64gc-unknown-fuchsia, конфигуратсияи асосӣ бо дастгирии васеъкунии векторҳо ба профили RVA22 навсозӣ шудааст.

  • Навсозии стандартии китобхона.
    Дастгирии такрорӣ дар диапазонҳои бутуни NonZero илова карда шуд. Коркарди сусти суроғаҳои мизбон дар SGX тавассути ToSocketAddr низ ислоҳ карда шуд ва таърифи хотираи "хондашаванда/навишташаванда" дар ҳуҷҷатҳо ва шартномаҳои дохилӣ равшан карда шуд: нишондиҳандаи сифр аз таърифи умумӣ хориҷ карда шуд ва ҳоло истисноҳо барои усулҳои мушаххас алоҳида муайян карда мешаванд.

  • API-ҳои устуворшуда.
    Дар байни интерфейсҳои устуворшуда assert_matches!, debug_assert_matches!, татбиқи From мавҷуданд. барои AssertUnwindSafe , LazyCell ва LazyLock , инчунин намудҳои нави диапазонҳо ва итераторҳо аз core::range, аз ҷумла Range, RangeFrom, RangeToInclusive ва итераторҳои онҳо.

  • Боркашонӣ: Тағйирот дар вобастагӣ ва ҳуҷҷатгузорӣ.
    Акнун вобастагӣ метавонад ҳам анбори Git ва ҳам реестри алтернативиро муайян кунад: версияи Git дар маҳал истифода мешавад ва версияи реестр ҳангоми нашр истифода мешавад, ки ба рафтори crates.io монанд аст. Дастгирии target.'cfg(..)'.rustdocflags дар конфигуратсияи Cargo низ илова карда шудааст.

  • Rustdoc ҳоло ҳуҷҷатҳоро дақиқтар коркард мекунад.
    Қайдҳои API-и кӯҳнашуда ҳоло ҳамчун ҳуҷҷатҳои муқаррарӣ, бе коркарди махсуси қаблӣ тавассути white-space: pre-wrap, намоиш дода мешаванд. Илова бар ин, rustdoc дигар missing_doc_code_examples-ро барои унсурҳо дар дохили impl истифода намекунад ва усулҳо ва функсияҳои марбута ҳоло дар панели паҳлӯии ҳуҷҷатҳо ҷудо карда шудаанд.

  • Номувофиқатҳои эҳтимолӣ.
    Ин нашр якчанд тағйиротро дар бар мегирад, ки метавонанд дар рамзи ғайристандартӣ пайдо шаванд: тарҳбандии баъзе аз enumҳои #[repr(Int)] дар ҳолатҳои фавқулодда ислоҳ карда шудааст ва баъзе аз кастингҳои бефоидаи unsize дар Pin ғайрифаъол карда шудаанд. , WebAssembly ҳоло дар рамзҳои номуайян вайрон мешавад, атрибути тасодуфан устуворшудаи #![reexport_test_harness_main] дубора ба хусусиятҳо дароварда шудааст, имконоти -Csoft-float хориҷ карда шудааст ва версияи ҳадди ақали LLVM беруна то 21 зиёд карда шудааст. Барои AVR, намуди c_double ба f32 иваз карда шудааст, зеро дублҳои C дар ин ҳадафҳо пешфарз 32-бит мебошанд.

Манбаъ: linux.org.ru

Хостинги боэътимодро барои сайтҳо бо муҳофизати DDoS, серверҳои VPS VDS харед 🔥 Харидани хостинги боэътимоди вебсайт бо муҳофизати DDoS, серверҳои VPS VDS | ProHoster