پروگرامما2 مىنۇتلۇق ئوقۇش

Rust 1.100 ئېلان قىلىندى: never تىپى 10 يىلدىن كېيىن مۇقىملاشتى

Rust پروگرامما تىلىنىڭ 100-مۇقىم نەشرى 1.100.0 ئېلان قىلىندى. بۇ نەشردە 10 يىل ۋە 5 قېتىملىق مەغلۇب بولغان سىناقتىن كېيىن never تىپى مۇقىملاشتى، يەنە Allocator API، DropGuard ۋە Cargo دىكى بوغچا كۈتۈش مۇددىتى (min-publish-age) قوشۇلدى.

ئىدراك خەۋەرلىرى4 مەنبەگە ئاساسلانغان

Rust پروگرامما تىلى گۇرۇپپىسى 12-نويابىر كۈنى تىلنىڭ يېڭى نەشرى Rust 1.100.0 نى ئېلان قىلدى. Linuxiac نىڭ ئېيتىشىچە، بۇ Rust نىڭ 100-مۇقىم نەشرى. ئەڭ چوڭ يېڭىلىق — ئون يىل ۋە بەش قېتىملىق مەغلۇب بولغان سىناقتىن كېيىن never تىپى (never type) نىڭ ئاخىرى مۇقىم (stable) بولغانلىقى. Rust نى ئاللىبۇرۇن ئورناتقانلار rustup update stable بۇيرۇقى بىلەن يېڭىلىيالايدۇ.

never تىپى دېگەن نېمە؟

كودتا ! بىلەن يېزىلىدىغان never تىپى ھېچقاچان قىممەت قايتۇرمايدىغان ھېسابلاشلارنى بىلدۈرىدۇ؛ ئۇنىڭدىن كېيىنكى كودقا ھەرگىز يېتىپ بارغىلى بولمايدۇ. return، break ۋە std::process::exit قاتارلىق ئىپادىلەرنىڭ تىپى مانا شۇ !. بۇ تىپنى ھەر قانداق باشقا تىپقا ئايلاندۇرغىلى بولىدۇ، شۇڭا مەسىلەن match نىڭ بىر تارمىقىدا return يېزىلسا، تىپ تەكشۈرۈشتىن ئۆتىدۇ.

ئىلگىرى ! نى پەقەت فۇنكسىيەنىڭ قايتۇرۇش تىپىدا (-> !) يازغىلى بولاتتى. Rust 1.100 دىن باشلاپ ئۇنى ھەر قانداق تىپ ئورنىدا ئىشلەتكىلى بولىدۇ، مەسىلەن Result<T, !>. يەنە Infallible تىپى ئەمدى ! نىڭ تەخەللۇسى (alias) بولۇپ قالدى، شۇڭا ئۇنى ئىشلىتىدىغان كونا API لار ! بىلەن ماسلىشىدۇ.

بۇنىڭ ئۈچۈن گۇرۇپپا كىچىك بىر ماسلاشماسلىق ئۆزگىرىشى (breaking change) كىرگۈزدى: 2015، 2018 ۋە 2021 نەشرلىرى (edition) دىمۇ «never type fallback» () دىن ! غا ئۆزگەردى، خۇددى 2024 نەشرىدىكىدەك. LWN نىڭ خەۋىرىچە، سىناق جەريانىدا 3300 ساندۇق (crate) تەسىرگە ئۇچرىغان بولسىمۇ، پەقەت يەتتىسىلا پۈتۈنلەي بۇزۇلغان، قالغانلىرى ئاللىبۇرۇن تۈزىتىلگەن كونا كۈتۈپخانىلارغا تايانغانلىقى ئۈچۈن بۇزۇلغان. مەسىلە چىققاندا بېقىنىدىغان بوغچىلارنى يېڭىلاش تەۋسىيە قىلىنىدۇ.

باشقا مۇھىم يېڭىلىقلار

  • Allocator API: Allocator تىپ ئالاھىدىلىكى (trait) نىڭ يادرولۇق قىسمى مۇقىملاشتى. كۈتۈپخانا ئاپتورلىرى ئەمدى ئۆزلىرىنىڭ خاتىرە تەقسىملىگۈچىسى (custom allocator) نى Vec ۋە Box بىلەن ئىشلىتەلەيدۇ.
  • DropGuard: core::mem::DropGuard ئۆزگەرگۈچى مىقدار دائىرىدىن چىققاندا (فۇنكسىيە قانداق ئاخىرلاشسۇن) بىر closure نى ئىجرا قىلىدۇ. dismiss ئارقىلىق ئۇنى بىكار قىلغىلى بولىدۇ، بۇ «ھەممىسى ياكى ھېچنېمە» خاراكتېرلىك، ئارقىغا قايتۇرغىلى بولىدىغان (rollback) API لارنى ئاسانلاشتۇرىدۇ.
  • conjure_zst: نۆل چوڭلۇقتىكى تىپلار (zero-sized types) نى بىخەتەر قۇرۇشنىڭ رەسمىي، unsafe ئۇسۇلى بولغان std::mem::conjure_zst قوشۇلدى.
  • Cargo ئىشلىتىلمىگەن بېقىنىشلارنى كۆرسىتىدۇ: Cargo.toml دىكى ئىشلىتىلمىگەن بېقىنىشلار (unused dependencies) ئۈچۈن ئاگاھلاندۇرۇش چىقىدۇ.
  • Cargo قۇرۇلۇش مۇندەرىجىسى: ئوخشىمىغان قۇرۇلۇش تەڭشەكلىرىدىكى ھۆججەتلەرنىڭ توقۇنۇشۇشى ئازايتىلدى. بۇ ئىچكى ئۆزگىرىش بولسىمۇ، بەزى قۇرۇلۇش جەريانلىرىغا تەسىر قىلىشى مۇمكىن.

تەمىنلەش زەنجىرى ھۇجۇمىغا قارشى «كۈتۈش مۇددىتى»

زىيانلىق بوغچا نەشرلىرى كۆپىنچە ئېلان قىلىنىپ بىر نەچچە سائەت ياكى كۈن ئىچىدە بايقىلىدۇ. Rust 1.100 دە Cargo نىڭ min-publish-age ئىقتىدارى مۇقىملاشتى: .cargo/config.toml ھۆججىتىگە global-min-publish-age = "3 days" دەك تەڭشەك يېزىلسا، Cargo يېقىندا ئېلان قىلىنغان نەشرلەرنى ئاتلاپ ئۆتىدۇ ۋە نېمىنى توختىتىپ قالغانلىقىنى كۆرسىتىدۇ. گۇرۇپپا بۇنىڭ تەمىنلەش زەنجىرى ھۇجۇمى (supply chain attack) خەۋپىنى ئازايتىدىغانلىقىنى، ئەمما تولۇق قوغدىيالمايدىغانلىقىنى، بېقىنىشلارنىڭ يېڭىلانمىلىرىنى يەنىلا تەكشۈرۈش كېرەكلىكىنى ئەسكەرتتى.

ئون يىللىق ئۇزۇن يولنى بېسىپ كەلگەن never تىپى ۋە بىخەتەرلىككە ئەھمىيەت بەرگەن Cargo ئىقتىدارلىرى بىلەن، Rust 1.100 بۇ تىلنى ئىشلىتىدىغانلار ئۈچۈن ئەھمىيەتلىك بىر بەلگە بولۇپ قالدى.

مەنبەلەر

  1. blog.rust-lang.org/2026/11/12/Rust-1.100.0/
  2. phoronix.com/news/Rust-1.100-Released
  3. linuxiac.com/rust-1-100-stabilizes-never-type-after-a-decade-of-development/
  4. lwn.net/Articles/1091015/

بۇ خەۋەر سىزگە قانداق تەسىر بەردى؟

→ بارلىق خەۋەرلەر