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

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

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

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

  • Մակրոները հնարավորություն են տալիս օգտագործել տարրերի բեկորներ՝ դրանք վերածելու հատկանիշների (հատկանիշի), իրականացման (impl) կամ արտաքին բլոկների կոդի: Օրինակ:

    մակրո_կանոններ! mac_trait {
    ($i:item) => {
    հատկանիշ T { $i }
    }
    }
    mac_trait! {
    fn foo() {}
    }

    Կբերի սերունդ.

    հատկանիշ T {
    fn foo() {}
    }

  • Պրիմիտիվների, հղումների և երկուական գործառնությունների տիպի հայտնաբերման բարելավում:
    Օրինակ, հետևյալ կոդը, որը նախկինում սխալ էր առաջացրել, այժմ կկարողանա կոմպիլյացիայի ենթարկվել (Rust այժմ ճիշտ է որոշում, որ 0.0 և &0.0-ը պետք է լինեն f32 տիպի).

    թող n: f32 = 0.0 + &0.0;

  • Cargo-ին ավելացվել է CARGO_BIN_EXE_{name} նոր միջավայրի փոփոխական, որը սահմանվում է ինտեգրման թեստեր կառուցելիս և թույլ է տալիս որոշել փաթեթի «[[bin]]» բաժնում սահմանված գործարկվող ֆայլի ամբողջական ուղին:
  • Եթե ​​հայտարարություններին թույլատրվում է օգտագործել այնպիսի հատկանիշներ, ինչպիսիք են «#[cfg()]»:
  • Գրադարանը հնարավորություն է տալիս ուղղակիորեն օգտագործել հարակից հաստատունները ամբողջ թվերի և կոտորակային տեսակների համար՝ առանց մոդուլ ներմուծելու: Օրինակ, դուք կարող եք անմիջապես գրել u32::MAX կամ f32::NAN առանց նախապես նշելու «use std::u32» և «use std::f32»:
  • Ավելացվեց նոր մոդուլ պրիմիտիվ, որը վերաարտահանում է Rust պարզունակ տեսակները, օրինակ, երբ պետք է գրել մակրո և համոզվել, որ տեսակները թաքցված չեն:
  • API-ների նոր մասը տեղափոխվել է կայուն կատեգորիա, ներառյալ կայունացված

    Մեկ անգամ::is_completed,
    f32::LOG10_2,
    f32::LOG2_10,
    f64::LOG10_2,
    f64::LOG2_10 և
    iter::մի անգամ_հետ.

Source: opennet.ru

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