Հրապարակվել է Rust 1.67 ընդհանուր նշանակության ծրագրավորման լեզվի թողարկումը, որը հիմնադրվել է Mozilla նախագծի կողմից, սակայն այժմ մշակվել է Rust Foundation անկախ ոչ առևտրային կազմակերպության հովանու ներքո: Լեզուն կենտրոնանում է հիշողության անվտանգության վրա և ապահովում է աշխատանքի բարձր զուգահեռականության հասնելու միջոցներ՝ միաժամանակ խուսափելով աղբահանող սարքից և գործարկման ժամանակից (աշխատանքի ժամանակը կրճատվում է մինչև ստանդարտ գրադարանի հիմնական սկզբնավորումը և պահպանումը):
Rust-ի հիշողության մշակման մեթոդները ծրագրավորողին փրկում են ցուցիչները մանիպուլյացիայի ժամանակ սխալներից և պաշտպանում են խնդիրներից, որոնք առաջանում են ցածր մակարդակի հիշողության հետ աշխատելու պատճառով, ինչպիսիք են հիշողության տարածք մուտք գործելը այն ազատվելուց հետո, չվերաբերվող ցուցիչները, բուֆերի գերակատարումները և այլն: Գրադարաններ բաշխելու, կառուցումներ տրամադրելու և կախվածությունները կառավարելու համար նախագիծը մշակում է Cargo փաթեթի կառավարիչը: Crates.io պահոցն աջակցվում է գրադարանների հոսթինգի համար:
Հիշողության անվտանգությունն ապահովվում է Rust-ում կոմպիլյացիայի ժամանակ՝ հղումների ստուգման, օբյեկտի սեփականության մասին հաշվառման, օբյեկտների կյանքի ժամկետների (շրջանակների) հետևելու և կոդի կատարման ընթացքում հիշողության հասանելիության ճշգրտության գնահատման միջոցով: Rust-ը նաև ապահովում է պաշտպանություն ամբողջ թվերի արտահոսքից, պահանջում է փոփոխական արժեքների պարտադիր սկզբնավորում նախքան օգտագործումը, ստանդարտ գրադարանում ավելի լավ է լուծում սխալները, լռելյայն կիրառում է անփոփոխ հղումների և փոփոխականների հայեցակարգը, առաջարկում է ուժեղ ստատիկ մուտքագրում՝ տրամաբանական սխալները նվազագույնի հասցնելու համար:
Հիմնական նորամուծությունները.
- Future::Output-ի հետ async ֆունկցիաների համար այժմ հնարավոր է նշել «#[must_use]» ծանոթագրությունները, որոնք ներառում են նախազգուշացում, եթե վերադարձված արժեքը անտեսվում է, ինչը օգնում է բացահայտել սխալները, որոնք առաջացել են այն ենթադրությունից, որ ֆունկցիան կփոխի արժեքները: այլ ոչ թե վերադարձնել նոր արժեք: #[must_use] async fn bar() -> u32 { 0 } async fn caller() {bar().wait; } warning. ապագայի չօգտագործված արդյունքը վերադարձվում է «bar»-ով, որը պետք է օգտագործվի —> src/lib.rs:5:5 | 5 | bar().սպասում; | ^^^^^^^^^^^ | = նշում. «#[warn(unused_must_use)]» միացված է լռելյայն
- Թարմացվել է FIFO հերթերի ներդրումը std::sync::mpsc (միակ սպառող բազմակի արտադրող), որն անցել է crossbeam-channel մոդուլի օգտագործմանը՝ պահպանելով նախորդ API-ը: Նոր ներդրումն առանձնանում է մի շարք խնդիրների լուծմամբ, ավելի բարձր կատարողականությամբ և կոդերի պարզեցված պահպանմամբ։
- API-ի նոր մասը տեղափոխվել է կայուն կատեգորիա, ներառյալ մեթոդները և հատկությունների իրականացումը կայունացվել են.
- {integer}::checked_ilog
- {integer}::checked_ilog2
- {integer}::checked_ilog10
- {integer}::ilog
- {integer}::ilog2
- {integer}::ilog10
- NonZeroU*::ilog2
- NonZeroU*::ilog10
- NonZero*::BITS
- «const» հատկանիշը, որը որոշում է այն ցանկացած համատեքստում օգտագործելու հնարավորությունը հաստատունների փոխարեն, օգտագործվում է գործառույթներում.
- char::from_u32
- char::-ից_նիշ
- char::to_digit
- հիմնական::char::from_u32
- միջուկ::char::from_digit
- Աջակցության երրորդ մակարդակը ներդրվել է Rust-ի օգտագործման համար Linux միջուկում (linuxkernel), ինչպես նաև Sony PlayStation 1-ի (mipsel-sony-psx), PowerPC-ով AIX-ով (powerpc64-ibm-aix), QNX Neutrino RTOS-ի համար ( aarch64-unknown-nto-) հարթակներ qnx710, x86_64-pc-nto-qnx710): Երրորդ մակարդակը ներառում է հիմնական աջակցություն, բայց առանց ավտոմատացված թեստավորման, պաշտոնական կառուցումների հրապարակման կամ ստուգելու, թե արդյոք կոդը կարելի է կառուցել:
Բացի այդ, մենք կարող ենք նշել ARM-ի կողմից պատչերի հրապարակումը, որոնք թույլ են տալիս Rust լեզվի օգտագործումը վարորդների և Linux միջուկի մոդուլների մշակման համար, որոնք հավաքվել են AArch64 ճարտարապետության վրա հիմնված համակարգերի համար:
Source: opennet.ru