Վերադառնալ

Rust 1.100.0-ը թողարկվել է never տիպով, allocator API-ով և Cargo-ի փոփոխություններով
SiTech AI Team2 րոպե ընթերցում

Rust 1.100.0-ը թողարկվել է never տիպով, allocator API-ով և Cargo-ի փոփոխություններով

Rust 1.100.0-ը հասանելի է rustup-ով և կայունացնում է never տիպը, allocator API-ի մասերը, DropGuard-ը, Cargo-ի չօգտագործված կախվածությունների նախազգուշացումները, build cache-ի փոփոխությունները և minimum publish age resolution-ը։

Rust 1.100.0-ը այժմ հասանելի է rustup update stable-ի միջոցով։ Թողարկումը կայունացնում է never տիպը, core allocator API-ի մասերը, core::mem::DropGuard-ը, core::mem::conjure_zst-ը և մի քանի Cargo հնարավորություններ, այդ թվում՝ չօգտագործված կախվածությունների զեկուցումը, build գրացույցի դասավորության փոփոխությունները և minimum publish age ստուգումները։

Never տիպը հասնում է stable-ի

10 տարի և հինգ ձախողված կայունացման փորձից հետո never տիպը, որը գրվում է !, կայուն է։ Այս թողարկումը նաև թույլ է տալիս !-ը անվանել ցանկացած տեղում, այդ թվում՝ Result-ում, և փոխում է Infallible-ը՝ դարձնելով այն never տիպի այլանուն։ 2024-ից առաջ թողարկված edition-ներում never տիպի fallback-ը փոխվում է ()-ից !-ի, ինչը կարող է ազդել հազվագյուտ կոդի վրա և ավելի շատ կոդ անհասանելի թվալ։

Allocator API և DropGuard

Rust 1.100.0-ը կայունացնում է allocator_api-ի core մասերը՝ թույլ տալով հատուկ հատկացնողներ օգտագործել Allocator trait-ի, Vec-ի և Box-ի միջոցով։ Թողարկումը նաև ներկայացնում է core::mem::DropGuard-ը, որը գործարկում է closure վերացվելիս և աջակցում է dismiss-ին՝ պաշտպանված փոփոխականը վերադարձնելու համար՝ առանց destructor-ը գործարկելու։ core::mem::conjure_zst-ը տրամադրում է առանձին unsafe եղանակ՝ զրոյական չափի տիպերի արժեքներ ստեղծելու համար։

Cargo-ի բարելավումներ

Cargo-ն այժմ զեկուցում է չօգտագործված կախվածությունների մասին, որը կառավարվում է [lints.cargo] աղյուսակով, և նախազգուշացումները հայտնվում են, երբ կառուցվում են բոլոր հնարավոր build target-ները։ Չօգտագործված dev-dependencies-ի համար նախազգուշացում չի ցուցադրվում։ Build գրացույցը այժմ հետևողականորեն կիրառում է build կարգավորումների hash-ը՝ գրացույցները կազմակերպելով build քայլերի շուրջ և hash-ը տեղափոխելով ծնող գրացույց։ Cargo-ն նաև կայունացնում է minimum publish age resolution-ը՝ թույլ տալով օգտատերերին .cargo/config.toml-ում սահմանել global-min-publish-age և բաց թողնել այն տարբերակները, որոնք հրապարակվել են կարգավորված տարիքից ավելի վերջերս։ cargo install-ը անտեսում է այդ կարգավորումը ինչպես տեղադրվող crate-ի, այնպես էլ դրա կախվածությունների համար։

Կայունացված API-ներ և այլ փոփոխություններ

Թողարկումը ավելացնում է բազմաթիվ կայունացված API-ներ, այդ թվում՝ Box::new_in, Vec::new_in, Child::main_thread_handle, bool::toggle, Box::take, Box::map, Rc::map, Arc::map, str և slice trim helper-ները, Path::trim_prefix, Vec::from_fn և այլն, որոնք նշված են թողարկման նշումներում։ Rust-ի, Cargo-ի և Clippy-ի փոփոխությունները փաստագրված են առանձին, և Rust թիմը շնորհակալություն է հայտնել ներդրողներին։

Աղբյուրներ՝ blog.rust-lang.org

SiTech

SiTech — AI-ով հզորացված վեբ մշակում

Ստեղծում ենք արագ ու ժամանակակից կայքեր և AI-ը ներդնում իրական բիզնես գործընթացներում։ Ունե՞ք նախագիծ կամ հարց։ Ուրախ կլինենք օգնել։