Басылым жарияланды Тот 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-undefined жібермейді. Анықталмаған таңбалар енді "env" модулінен импорттауға автоматты түрде түрлендірілудің орнына, байланыстыру кезінде қателер ретінде қарастырылады. Бұл құрастыру қателері мен жарамсыз таңба атауларын бұрын анықтауы керек. Қажет болса, ескі әрекетті RUSTFLAGS=-Clink-arg=--allow-undefined пайдаланып немесе #[link(wasm_import_module = "env")] арқылы импортталған wasm модулін нақты көрсету арқылы қайтаруға болады.Cargo қауіпсіздік түзетулерін алды.
Тілдегі өзгерістер.
Шығарылымға мыналар кіреді: Бірнеше шағын түзетулер мен жақсартулар: Макростардың expr метаайнымалыларын cfg-ге беруге рұқсат етілді, кортеждік өрнектерде ешқашан типтелмеген кастинг түзетілді, функция аргументтері үшін қате типті қорытындылау кеңестерінің сирек кездесетін жағдайлары түзетілді, кірістірілген жинақта s390x векторлық регистрлеріне қолдау қосылды және ManuallyDrop тұрақтыларына үлгі ретінде қайта рұқсат етілді — бұл Rust 1.94.0 нұсқасында енгізілген регрессияны түзетеді.Компиляторлар мен платформалардағы өзгерістер.
үшін LinuxLoongArch нысаналары үшін сілтемелерді босаңсытуды қолдау қосылды — кодты орналастырғаннан кейін кейбір өтулер мен шақыруларды жеңілдететін байланыстыруды оңтайландыру. riscv64gc-unknown-fuchsia үшін базалық конфигурация векторлық кеңейтімдерді қолдаумен RVA22 профиліне жаңартылды.Стандартты кітапхана жаңартулары.
Нөлдік емес бүтін сан диапазондары бойынша итерацияны қолдау қосылды. SGX-те ToSocketAddr арқылы хост мекенжайларын жалқау өңдеу де түзетілді, ал құжаттама мен ішкі келісімшарттарда «оқылатын/жазылатын» жадтың анықтамасы нақтыланды: нөлдік көрсеткіш жалпы анықтамадан алынып тасталды, ал ерекшеліктер енді нақты әдістер үшін бөлек көрсетіледі.Тұрақтандырылған API интерфейстері.
Тұрақтандырылған интерфейстердің қатарында assert_matches!, debug_assert_matches!, From implementations бар. 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 екіліктері бұл нысандарда әдепкі бойынша 32-биттік болады.
Ақпарат көзі: linux.org.ru
