Хувилбарыг нийтэлсэн Зэв 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 модулийг тодорхой зааж өгснөөр буцааж болно.Карго аюулгүй байдлын засваруудыг хүлээн авсан.
Хэлний өөрчлөлтүүд.
Хувилбарт дараахь зүйлс орно: Хэд хэдэн жижиг засвар болон сайжруулалтууд: Макросын expr мета хувьсагчдыг cfg руу дамжуулахыг зөвшөөрсөн, tuple илэрхийллүүдэд хэзээ ч бичдэггүй дамжуулалтыг зассан, функцийн аргументуудад зориулсан буруу төрлийн дүгнэлтийн ховор тохиолдлуудыг зассан, шугаман угсралтад s390x векторын регистрүүдийг дэмжих дэмжлэгийг нэмсэн, мөн ManuallyDrop тогтмолуудыг загвар болгон дахин зөвшөөрсөн - энэ нь Rust 1.94.0 хувилбарт нэвтрүүлсэн регрессийг зассан.Хөрвүүлэгч болон платформуудын өөрчлөлтүүд.
Хэрэгтэй LinuxLoongArch зорилтот бүлгүүдэд холбоос сулруулах дэмжлэгийг идэвхжүүлсэн бөгөөд энэ нь код байршуулсны дараа зарим шилжилт болон дуудлагыг хялбаршуулдаг холбоосын оновчлол юм. riscv64gc-unknown-fuchsia-ийн хувьд үндсэн тохиргоог вектор өргөтгөлүүдийг дэмжих зорилгоор RVA22 профайл руу шинэчилсэн.Стандарт номын сангийн шинэчлэлтүүд.
Тэг биш бүхэл тоон хүрээн дээр давталт хийх дэмжлэг нэмэгдсэн. 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 давхарууд нь анхдагчаар 32 битийн байдаг.
Эх сурвалж: linux.org.ru
