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

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

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

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

  • Cargo փաթեթի կառավարիչը ինտեգրում է «բեռների ծառ» հրամանը, որը ցուցադրում է ծառի նման կախվածության գրաֆիկ: Ավելացվեց նաև «—կրկնօրինակներ» («բեռների ծառ -d») տարբերակը, որը թույլ է տալիս գնահատել կախվածությունը նույն փաթեթի տարբեր տարբերակներում:

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    ├── ամոնիակ v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── տեղեկամատյան v0.4.8
    │ │ │ └── cfg-if v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── markup5ever v0.9.0
    │ │ ├── log v0.4.8 (*)
    │ │ ├── phf v0.7.24
    │ │ │ └── phf_shared v0.7.24
    │ │ │ ├── siphasher v0.2.3
    │ │ │ └── unicase v1.4.2
    │ │ │ [կառուցել-կախվածություններ] │ │ │ └── version_check v0.1.5
    ...

  • Այն հավելվածների համար, որոնք կապված չեն std-ին («#![no_std]»), ասինխրոն ծրագրավորման տեխնիկայի աջակցությունն իրականացվում է «async» ֆունկցիայի, async move { ... } բլոկի և «.await» օպերատորի հիման վրա, որը: պարզեցնել գրավոր չարգելափակող մշակողների հիմնական հրամանների հոսքը:
  • Ընդարձակվող մոդուլի հիերարխիայի սահմանման սխեմայի աջակցությունն ավելացվել է վերլուծիչին: Օրինակ, հետևյալ կառուցվածքը սխալ չի առաջացնի՝ չնայած «foo/bar/baz.rs» մոդուլի փաստացի բացակայությանը (կառուցվածքը դեռևս իմաստային առումով անվավեր է և կարող է սխալ առաջացնել, սակայն փոփոխությունները կարելի է տեսնել և վերլուծել այստեղ. մակրո և պայմանական կազմման մակարդակ).

    #[cfg(FALSE)] mod foo {
    mod bar {
    mod baz;
    }
    }

  • Rustc կոմպիլյատորն ավելացրել է «-C codegen-units» դրոշը աստիճանական ռեժիմում օգտագործելու հնարավորություն: catch_unwind-ի իրականացումը վերամշակվել է այնպես, որ այն ոչ մի ազդեցություն չունենա կատարողականի վրա, եթե անջատման գործընթացն անջատված է և բացառություններ չկան:
  • 64-րդ մակարդակի աջակցությունը տրամադրվել է aarch64-unknown-none, aarch64-unknown-none-softfloat, arm86-apple-tvos և x64_XNUMX-apple-tvos հարթակների համար: Երրորդ մակարդակը ներառում է հիմնական աջակցություն, բայց առանց ավտոմատացված փորձարկման և պաշտոնական կառուցումների հրապարակման:
  • API-ների նոր մասը տեղափոխվել է կայուն կատեգորիա, ներառյալ կայունացված
    PathBuf::հզորությամբ,
    PathBuf::տարողություն,
    PathBuf::պարզ,
    PathBuf::պահուստ,
    PathBuf::reserve_exact,
    PathBuf::shrink_to_fit,
    {f32|f64}::to_int_unchecked,
    Դասավորություն::align_to,
    Դասավորություն::pad_to_align,
    Դասավորություն::զանգված և
    Դասավորություն::ընդլայնել.

  • Ստանդարտ գրադարանի ընդլայնված գործառույթները.
    • Ավելացրել է հատուկ «vec![]» տարբերակ, որն ուղղակիորեն արտացոլվում է Vec::new(-ում)՝ թույլ տալով «vec![]»-ն օգտագործել կոնտեքստում հաստատունների փոխարեն:
    • Հատկանիշի իրականացումը (impl) ավելացվել է փոխակերպելու համար::Infallible Խանգարել.
    • OsString-ն իրականացնում է խելացի ցուցիչներ DerefMut и IndexMut, վերադարձնելով «&mut OsStr»-ը։
    • Ավելացվեց Unicode 13-ի աջակցությունը:
    • Իրականացվում է String-ում <&mut str>-ից.
    • IoSlice-ն իրականացնում է հատկանիշը պատճեն.
    • Վեկ իրականացված From<[T; N]>.
    • proc_macro::LexError-ն իրականացնում է fmt::Display և Error:
  • «const» հատկանիշը, որը որոշում է, թե արդյոք այն կարող է օգտագործվել ցանկացած համատեքստում հաստատունների փոխարեն, օգտագործվում է from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes և to_ne_bytes մեթոդներում բոլոր ամբողջ թվերի համար:
  • Windows-ի GNU հարթակների համար «.lib»-ի փոխարեն «.a» ձևաչափով ստատիկ գրադարաններ ստեղծելու աջակցություն:
  • LLVM-ի նվազագույն պահանջները բարձրացվել են մինչև LLVM տարբերակ 8:

Source: opennet.ru

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