Rust 1.67 ծրագրավորման լեզվի թողարկում

Հրապարակվել է 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

Добавить комментарий