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

Հրապարակվել է Rust 1.62 ընդհանուր նշանակության ծրագրավորման լեզվի թողարկումը, որը հիմնադրվել է Mozilla նախագծի կողմից, սակայն այժմ մշակվել է Rust Foundation անկախ ոչ առևտրային կազմակերպության հովանու ներքո: Լեզուն կենտրոնանում է հիշողության անվտանգության վրա և ապահովում է աշխատանքի բարձր զուգահեռականության հասնելու միջոցներ՝ միաժամանակ խուսափելով աղբահանող սարքից և գործարկման ժամանակից (աշխատանքի ժամանակը կրճատվում է մինչև ստանդարտ գրադարանի հիմնական սկզբնավորումը և պահպանումը):

Rust-ի հիշողության մշակման մեթոդները ծրագրավորողին փրկում են ցուցիչները մանիպուլյացիայի ժամանակ սխալներից և պաշտպանում են խնդիրներից, որոնք առաջանում են ցածր մակարդակի հիշողության հետ աշխատելու պատճառով, ինչպիսիք են հիշողության տարածք մուտք գործելը այն ազատվելուց հետո, չվերաբերվող ցուցիչները, բուֆերի գերակատարումները և այլն: Գրադարաններ բաշխելու, կառուցումներ տրամադրելու և կախվածությունները կառավարելու համար նախագիծը մշակում է Cargo փաթեթի կառավարիչը: Crates.io պահոցն աջակցվում է գրադարանների հոսթինգի համար:

Հիշողության անվտանգությունն ապահովվում է Rust-ում կոմպիլյացիայի ժամանակ՝ հղումների ստուգման, օբյեկտի սեփականության մասին հաշվառման, օբյեկտների կյանքի ժամկետների (շրջանակների) հետևելու և կոդի կատարման ընթացքում հիշողության հասանելիության ճշգրտության գնահատման միջոցով: Rust-ը նաև ապահովում է պաշտպանություն ամբողջ թվերի արտահոսքից, պահանջում է փոփոխական արժեքների պարտադիր սկզբնավորում նախքան օգտագործումը, ստանդարտ գրադարանում ավելի լավ է լուծում սխալները, լռելյայն կիրառում է անփոփոխ հղումների և փոփոխականների հայեցակարգը, առաջարկում է ուժեղ ստատիկ մուտքագրում՝ տրամաբանական սխալները նվազագույնի հասցնելու համար:

Հիմնական նորամուծությունները.

  • «Cargo» փաթեթի կառավարիչը առաջարկում է «add» հրամանը, որը թույլ է տալիս ավելացնել նոր կախվածություններ Cargo.toml մանիֆեստում կամ փոխել գոյություն ունեցող կախվածությունները հրամանի տողից: Հրամանը թույլ է տալիս նաև նշել անհատական ​​առանձնահատկություններ և տարբերակներ, օրինակ.
  • Ավելացվել է «#[derive(Default)]» օգտագործման հնարավորությունը թվերով, որոնցում լռելյայն տարբերակը սահմանվում է «#[default]» հատկանիշի միջոցով: #[derive(Default)] enum Գուցե { #[կանխադրված] Ոչինչ, ինչ-որ բան (T), }
  • Linux հարթակում օգտագործվում է Mutex համաժամացման մեխանիզմի ավելի կոմպակտ և արագ իրականացում՝ հիմնված Linux միջուկի կողմից տրամադրվող ֆուտեքսների օգտագործման վրա: Ի տարբերություն նախկինում օգտագործված իրականացման՝ հիմնված pthreads գրադարանի վրա, նոր տարբերակը օգտագործում է ընդամենը 5 բայթ՝ 40-ի փոխարեն՝ Mutex վիճակը պահելու համար: Նմանապես, Condvar և RwLock արգելափակման մեխանիզմները տեղափոխվել են futex:
  • Գործարկվել է x86_64-unknown-none թիրախային հարթակի աջակցության երկրորդ մակարդակը, որը նախատեսված է գործարկվող ֆայլեր ստեղծելու համար, որոնք կարող են աշխատել առանց օպերացիոն համակարգի: Օրինակ՝ նշված թիրախային հարթակը կարող է օգտագործվել միջուկի բաղադրիչներ գրելիս։ Աջակցության երկրորդ մակարդակը ներառում է հավաքման երաշխիք:
  • Աջակցության երրորդ մակարդակն իրականացվել է aarch64-pc-windows-gnullvm և x86_64-pc-windows-gnullvm հարթակների համար: Երրորդ մակարդակը ներառում է հիմնական աջակցություն, բայց առանց ավտոմատացված թեստավորման, պաշտոնական կառուցումների հրապարակման կամ ստուգելու, թե արդյոք կոդը կարելի է կառուցել:
  • API-ի նոր մասը տեղափոխվել է կայուն կատեգորիա, ներառյալ մեթոդները և հատկությունների իրականացումը կայունացվել են.
    • bool::ապա_որոշ
    • f32::total_cmp
    • f64::total_cmp
    • Ստդին::գծեր
    • windows::CommandExt::raw_arg
    • ենթադրել լռելյայն արժեքը AssertUnwindSafe-ի համար
    • Սկսած > Rc-ի համար
    • Սկսած > Arc<[u8]>-ի համար
    • FusedIterator EncodeWide-ի համար

    Source: opennet.ru

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