Nashr nashr etildi Pas 1.96.0 — Rust dasturlash tilining eng so'nggi barqaror versiyasi. Yangilanish chiqarildi. 28 May 2026 yil; uni standart rustup update stable buyrug'i yordamida o'rnatish mumkin. Asosiy o'zgarishlar core::range'dagi yangi diapazon turlarini, naqsh mos keladigan makroslarni barqarorlashtirishni, WebAssembly tuzish xatti-harakatlarini kuchaytirishni va Cargo'dagi ikkita zaiflikni tuzatishni o'z ichiga oladi.
Asosiy o'zgarishlar
Yangi diapazon turlari core::range::Range*.
Standart kutubxonada yangi diapazon turlari barqarorlashtirildi: core::range::Range, RangeFrom, RangeInclusive va ular bilan bog'liq iteratorlar. core::ops dan olingan eski turlardan farqli o'laroq, yangi diapazonlar Iteratorni to'g'ridan-to'g'ri amalga oshirmaydi, balki IntoIterator orqali iteratorga aylantiriladi. Bu ushbu diapazonlarni nusxalash imkonini beradi, bu, masalan, diapazonni struktura maydoni sifatida saqlashda qulaydir. 0..1 kabi sintaksis hozirda eski diapazon turlarini yaratadi, ammo ularni tilning kelajakdagi versiyasida yangi turlarga o'tkazish rejalashtirilgan.assert_matches! va debug_assert_matches! qo'shildi.
Yangi makroslar qiymatning berilgan naqshga mos kelishini tekshirish imkonini beradi. Bu kontseptsiya jihatidan assert!(matches!(…)) ga o'xshaydi, ammo xatolik yuz berganda, qiymatning nosozliklarni tuzatish tasviri chop etiladi, bu esa diagnostikani soddalashtiradi. Ushbu makroslar mashhur uchinchi tomon qutilari bilan ziddiyatlarni oldini olish uchun Prelude-ga qo'shilmagan, shuning uchun ular aniq ravishda core yoki std-dan import qilinishi kerak.WebAssembly nishonlarining xatti-harakatlarini o'zgartirdi.
Rust endi WebAssembly tuzilmalari uchun havola qiluvchiga --allow-undefined ni uzatmaydi. Aniqlanmagan belgilar endi avtomatik ravishda "env" modulidan importga aylantirilmasdan, ulanish paytida xato sifatida ko'rib chiqiladi. Bu avvalroq tuzilma xatolari va noto'g'ri belgi nomlarini aniqlashi kerak. Agar kerak bo'lsa, eski xatti-harakatni RUSTFLAGS=-Clink-arg=--allow-undefined yordamida yoki #[link(wasm_import_module = "env")] yordamida import qilingan wasm modulini aniq ko'rsatish orqali qaytarish mumkin.Cargo xavfsizlik tuzatishlarini oldi.
Tilda o'zgarishlar.
Nashr quyidagilarni o'z ichiga oladi: Bir nechta kichik tuzatishlar va yaxshilanishlar: Makroslarning expr meta-o'zgaruvchilarini cfg ga o'tkazishga ruxsat berildi, tuple ifodalarida hech qachon yozilmaydigan translyatsiya tuzatildi, funksiya argumentlari uchun noto'g'ri turdagi xulosa chiqarish ko'rsatmalarining noyob holatlari tuzatildi, ichki assemblyda s390x vektor registrlarini qo'llab-quvvatlash qo'shildi va shablon sifatida ManuallyDrop konstantalariga qayta ruxsat berildi - bu Rust 1.94.0 da kiritilgan regressiyani tuzatdi.Kompilyator va platformalardagi o'zgarishlar.
uchun LinuxLoongArch maqsadlari uchun havolalarni bo'shatishni qo'llab-quvvatlash yoqilgan — kod joylashtirilgandan keyin ba'zi o'tishlar va chaqiruvlarni soddalashtiradigan havolalarni optimallashtirish. riscv64gc-unknown-fuchsia uchun bazaviy konfiguratsiya vektor kengaytmalarini qo'llab-quvvatlash bilan RVA22 profiliga yangilandi.Standart kutubxona yangilanishlari.
Nol bo'lmagan butun son diapazonlari orqali iteratsiyani qo'llab-quvvatlash qo'shildi. SGX da ToSocketAddr orqali xost manzillarini dangasa qayta ishlash ham tuzatildi va hujjatlar va ichki shartnomalarda "o'qiladigan/yoziladigan" xotira ta'rifi aniqlandi: nol ko'rsatkichi umumiy ta'rifdan olib tashlandi va endi ma'lum usullar uchun istisnolar alohida ko'rsatildi.Barqarorlashtirilgan APIlar.
Stabilizatsiya qilingan interfeyslar orasida assert_matches!, debug_assert_matches!, From implementatsiyalari mavjud. AssertUnwindSafe uchun , LazyCell va LazyLock , shuningdek, core::range dan yangi diapazon turlari va iteratorlari, jumladan, Range, RangeFrom, RangeToInclusive va ularning iteratorlari.Yuk: Bog'liqliklar va hujjatlardagi o'zgarishlar.
Endi bog'liqlik Git omborini ham, muqobil registrni ham belgilashi mumkin: Git versiyasi mahalliy ravishda ishlatiladi va registr versiyasi nashr qilish paytida ishlatiladi, bu crates.io bilan bo'lgani kabi. Cargo konfiguratsiyasida target.'cfg(..)'.rustdocflags uchun ham qo'llab-quvvatlash qo'shildi.Rustdoc endi hujjatlarni aniqroq ishlaydi.
Eskirgan API eslatmalari endi oddiy hujjatlar sifatida ko'rsatiladi, avvalgi maxsus ishlov berish white-space: pre-wrap orqali amalga oshirilmaydi. Bundan tashqari, rustdoc endi impl ichidagi elementlar uchun missing_doc_code_examples lintlarini yozmaydi va usullar va tegishli funksiyalar endi hujjatlar yon panelida ajratilgan.Mumkin bo'lgan nomuvofiqliklar.
Ushbu nashrda nostandart kodda ko'rinishi mumkin bo'lgan bir nechta o'zgarishlar mavjud: ba'zi #[repr(Int)] enumlarining joylashuvi o'ta og'ir holatlarda tuzatildi va Pin-dagi ba'zi foydasiz unsize castlar o'chirib qo'yildi. , WebAssembly builds endi aniqlanmagan belgilarda ishdan chiqadi, tasodifan barqarorlashtirilgan #![reexport_test_harness_main] atributi yana funksiyaga qo'shildi, -Csoft-float opsiyasi olib tashlandi va minimal tashqi LLVM versiyasi 21 ga oshirildi. AVR uchun c_double turi f32 ga o'zgartirildi, chunki C dubllari bu maqsadlarda sukut bo'yicha 32-bitli.
Manba: linux.org.ru
