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

հրապարակված թողարկել համակարգի ծրագրավորման լեզվի 1.46-ը Ժանգոտվել, որը հիմնադրվել է Mozilla նախագծի կողմից։ Լեզուն կենտրոնանում է հիշողության անվտանգության վրա, ապահովում է հիշողության ավտոմատ կառավարում և ապահովում է գործիքներ բարձր առաջադրանքների զուգահեռության հասնելու համար՝ առանց աղբահանող և աղբահանող սարք օգտագործելու: Runtime.

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

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

  • Ընդլայնվել են «const fn» արտահայտությամբ սահմանված գործառույթների հնարավորությունները, որոնք կարելի է անվանել ոչ միայն կանոնավոր ֆունկցիաներ, այլև օգտագործել ցանկացած համատեքստում՝ հաստատունների փոխարեն։ Այս ֆունկցիաները հաշվարկվում են կոմպիլյացիայի ժամանակ, այլ ոչ թե գործարկման ժամանակ, ուստի դրանք ենթակա են որոշակի սահմանափակումների, օրինակ՝ միայն հաստատուններից կարդալու հնարավորությունը։

    Նոր թողարկումը վերացնում է նման գործառույթներում բուլյան օպերատորների («&&» և «||») օգտագործման արգելքը և թույլ է տալիս օգտագործել «եթե», «եթե թող», «համապատասխանի» կառուցվածքները,
    «while», «while let» և «loop», ինչպես նաև ապահովում է «&[T]» արտահայտությունը օգտագործելով կտորների (հատված, դինամիկ զանգվածներ) փոխարկելու հնարավորություն։ Այս հատկանիշների օգտագործումը «const fn» գործառույթներում թույլ է տալիս ռեսուրսներ պահանջող որոշ գործողություններ տեղափոխել կոմպիլյացիայի փուլ: Օրինակ, «const-sha1»-ի իրականացումը հնարավորություն է տալիս հաշվարկել SHA-1 հեշերը կոմպիլյացիայի ժամանակ, ինչը հանգեցնում է Rust-ի համար WinRT կապերի արագացմանը գրեթե 40 անգամ:

  • Սխալների հաղորդագրություններն ավելի տեղեկատվական դարձնելու համար կայունացվել է «#[track_caller]» հատկանիշի աջակցությունը, որն օգտակար է unwrap-ի նման գործառույթների համար, ինչը կարող է խուճապ առաջացնել, եթե տեսակները սխալ օգտագործվեն: Նշված հատկանիշը կօգտագործվի խուճապի մշակողի կողմից՝ զանգահարողի գտնվելու վայրը սխալի հաղորդագրությամբ տպելու համար:
  • «const» հատկանիշը, որը որոշում է հաստատունների փոխարեն այն օգտագործելու հնարավորությունը ցանկացած համատեքստում, օգտագործվում է std::mem::forget մեթոդում։
  • API-ի նոր մասը տեղափոխվել է կայուն կատեգորիա, ներառյալ կայունացված Option::zip և vec::Drain::as_slice:
  • Փաթեթի կառավարիչ Բեռնափոխադրումներ ավելացրել է աջակցություն նոր միջավայրի փոփոխականների համար, որոնք սահմանված են փաթեթ կազմելիս՝ CARGO_BIN_NAME (արդյունքում գործարկվող ֆայլի անվանումը), CARGO_CRATE_NAME (փաթեթի անվանումը), CARGO_PKG_LICENSE (լիցենզիա նշված է մանիֆեստում), CARGO_PKG_LICENSE_FILE (ուղիղ դեպի լիցենզիայի ֆայլ):

Source: opennet.ru

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