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

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

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

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

  • Cargo փաթեթի կառավարիչը հնարավորություն ունի միավորելու կրկնօրինակ սխալներն ու նախազգուշացումները, որոնք տեղի են ունենում շինարարության ընթացքում: Երբ կատարում եք այնպիսի հրամաններ, ինչպիսիք են «բեռների փորձարկումը» և «բեռների ստուգումը --բոլոր թիրախները», որոնք հանգեցնում են տարբեր պարամետրերով փաթեթի բազմաթիվ կառուցումների, օգտագործողին ցուցադրվելու փոխարեն այժմ ցուցադրվում է կրկնվող խնդրի առաջացման ամփոփագիր: մի քանի միանման նախազգուշացումներ նույն բանը բազմիցս կառուցելիս: ֆայլ: $ բեռ +1.55.0 ստուգում — all-targets Ստուգում foo v0.1.0 զգուշացում. ֆունկցիան երբեք չի օգտագործվում. 'foo' —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = նշում․ '#[warn(dead_code)]' լռելյայն նախազգուշացում. 'foo' (lib) ստեղծեց 1 նախազգուշացում. 'foo' (lib test) ստեղծեց 1 նախազգուշացում (1 կրկնօրինակ) Ավարտված մշակող [unoptimized + debuginfo] թիրախ (ներ) 0.84 վրկ-ում
  • Լողացող կետի վերլուծման կոդը ստանդարտ գրադարանում տեղափոխվել է օգտագործելու ավելի արագ և ճշգրիտ Eisel-Lemire ալգորիթմը, որը լուծել է նախկինում նկատված որոշ խնդիրներ՝ կապված շատ մեծ թվով թվանշաններով թվերի կլորացման և վերլուծման հետ:
  • Կաղապարներում չփակված միջակայքերը նշելու հնարավորությունը կայունացվել է («X.» մեկնաբանվում է որպես միջակայք, որը սկսվում է X արժեքով և ավարտվում ամբողջ թվի տիպի առավելագույն արժեքով). («զրո»), 32.. => println! («դրական թիվ»), }
  • Ընդլայնված սխալի տարբերակներ, որոնք ծածկված են std::io::ErrorKind-ով (սխալները դասակարգում է կատեգորիաների, ինչպիսիք են NotFound և WouldBlock): Նախկինում գոյություն ունեցող կատեգորիաներին չհամապատասխանող սխալները պատկանում էին ErrorKind::Other կատեգորիային, որն օգտագործվում էր նաև երրորդ կողմի կոդի սխալների համար: Այժմ կա առանձին ներքին կատեգորիա ErrorKind::Uncategorized սխալների համար, որոնք չեն տեղավորվում գոյություն ունեցող կատեգորիաներում, իսկ ErrorKind::Other կատեգորիան սահմանափակվում է ստանդարտ գրադարանում չպատկանող սխալներով (ստանդարտ գրադարանի գործառույթներ, որոնք վերադարձնում են io::Error: այլևս մի օգտագործեք ErrorKind:: կատեգորիա Այլ):
  • API-ի նոր մասը տեղափոխվել է կայուն կատեգորիա, ներառյալ մեթոդները և հատկությունների իրականացումը կայունացվել են.
    • Կապված::կլոնավորված
    • Ջրահեռացում::as_str
    • IntoInnerError::into_error
    • IntoInnerError::into_parts
    • ԳուցեՄիասնություն::assume_init_mut
    • ԳուցեՄիասնություն::assume_init_ref
    • Գուցե Uninit::գրել
    • զանգված::քարտեզ
    • ops::ControlFlow
    • x86::_bittest
    • x86::_bittestandcomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • «const» հատկանիշը, որը որոշում է այն օգտագործելու հնարավորությունը ցանկացած համատեքստում հաստատունների փոխարեն, օգտագործվում է str::from_utf8_unchecked մեթոդում։
  • Աջակցության երրորդ մակարդակն իրականացվել է powerpc64le-unknown-freebsd հարթակի համար: Երրորդ մակարդակը ներառում է հիմնական աջակցություն, բայց առանց ավտոմատացված թեստավորման, պաշտոնական կառուցումների հրապարակման կամ ստուգելու, թե արդյոք կոդը կարելի է կառուցել:

Source: opennet.ru

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