Чыгарылыш жарыяланды Дат 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 колдонуп же #[link(wasm_import_module = "env")] колдонуп импорттолгон wasm модулун ачык көрсөтүү менен кайтарууга болот.Cargo коопсуздук оңдоолорун алды.
Тилдеги өзгөрүүлөр.
Чыгарылышка төмөнкүлөр кирет: Бир нече анча чоң эмес оңдоолор жана жакшыртуулар: Макростордун expr метаөзгөрмөлөрүн cfgге өткөрүүгө уруксат берилди, кортеждик туюнтмаларда эч качан типтелбеген кастинг оңдолду, функция аргументтери үчүн туура эмес типтеги инференциялык кеңештердин сейрек кездешүүчү учурлары оңдолду, саптык ассемблерде s390x вектордук регистрлерин колдоо кошулду жана шаблон катары ManuallyDrop туруктууларына кайрадан уруксат берилди — бул Rust 1.94.0 версиясында киргизилген регрессияны оңдойт.Компилятордогу жана платформалардагы өзгөрүүлөр.
үчүн LinuxLoongArch максаттары үчүн шилтемелерди релаксациялоону колдоо иштетилди — кодду жайгаштыргандан кийин кээ бир өтүүлөрдү жана чалууларды жөнөкөйлөтүүчү шилтемелөөнү оптималдаштыруу. 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 менен болгон жүрүм-турумга окшош. Cargo конфигурациясында target.'cfg(..)'.rustdocflags колдоосу да кошулду.Rustdoc эми документтерди такыраак иштетет.
Эскирген API эскертүүлөрү эми кадимки документтештирүү катары көрсөтүлөт, мурунку атайын иштетүү white-space: pre-wrap аркылуу жүргүзүлбөйт. Мындан тышкары, rustdoc мындан ары impl ичиндеги элементтер үчүн missing_doc_code_examples функциясын иштетпейт жана методдор жана ага байланыштуу функциялар эми документтердин каптал тилкесинде бөлүнөт.Мүмкүн болгон дал келбестиктер.
Бул чыгарылышта стандарттуу эмес коддо пайда болушу мүмкүн болгон бир нече өзгөртүүлөр камтылган: кээ бир #[repr(Int)] энумдарынын жайгашуусу өзгөчө учурларда оңдолду жана Pin'деги кээ бир пайдасыз unsize касттары өчүрүлдү. , WebAssembly курулмалары эми аныкталбаган символдордо кыйрады, кокустан турукташтырылган #![reexport_test_harness_main] атрибуту кайрадан функцияга айландырылды, -Csoft-float опциясы алынып салынды жана тышкы LLVM версиясынын минималдуу саны 21ге чейин көбөйтүлдү. AVR үчүн c_double түрү f32ге өзгөртүлдү, анткени C doubles бул максаттарда демейки боюнча 32-биттик.
Source: linux.org.ru
