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

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

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

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

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

  • Բեռնափոխադրումների փաթեթի կառավարիչը իրականացնում է նախազգուշացումների հայտնաբերում, որոնք կարող են ինքնաբերաբար լուծվել և համապատասխան առաջարկություններ գործարկելու «cargo fix» կամ «cargo clippy --fix»: զգուշացում՝ չօգտագործված ներմուծում՝ 'std::hash::Hash' --> src/main.rs:1:5 | 1 | օգտագործել std::hash::hash; | ^^^^^^^^^^^^^^^^ | = նշում․ '#[warn(unused_imports)]' լռելյայն նախազգուշացում. 'foo' (bin "foo") ստեղծեց 1 զգուշացում (գործարկեք 'cargo fix --bin "foo"' 1 առաջարկ կիրառելու համար)
  • Ավելացվեց Cargo՝ «cargo add» հրամանն օգտագործելու առաջարկություն ցուցադրելու համար, երբ փորձում եք գրադարան տեղադրել «cargo install» հրամանով:
  • Կոմպիլյացիայի ժամանակը նվազեցնելու համար կառուցման սկրիպտներում տեղեկատվության վրիպազերծումը լռելյայն անջատված է: Եթե ​​կառուցման սկրիպտները հաջողությամբ աշխատեն, փոփոխությունը տեսանելի տարբերություն չի տա, բայց եթե այն ձախողվի, հետընթացի աղբանոցը ավելի քիչ տեղեկատվություն կպարունակի: Cargo.toml-ին հին վարքագիծը վերադարձնելու համար ավելացրեք՝ [profile.dev.build-override] debug = true [profile.release.build-override] debug = true
  • API-ի նոր մասը տեղափոխվել է կայուն կատեգորիա, ներառյալ մեթոդները և հատկությունների իրականացումը կայունացվել են.
    • CStr::from_bytes_until_nul
    • հիմնական::ffi::FromBytesUntilNulError
  • «const» հատկանիշը, որը որոշում է այն ցանկացած համատեքստում օգտագործելու հնարավորությունը հաստատունների փոխարեն, օգտագործվում է գործառույթներում.
    • SocketAddr::նոր
    • SocketAddr::ip
    • SocketAddr::port
    • SocketAddr::is_ipv4
    • SocketAddr::is_ipv6
    • SocketAddrV4::նոր
    • SocketAddrV4::ip
    • SocketAddrV4::port
    • SocketAddrV6::նոր
    • SocketAddrV6::ip
    • SocketAddrV6::port
    • SocketAddrV6::flowinfo
    • SocketAddrV6::scope_id
  • Ավելացվել է կոմպիլյատորների արգումենտներում ճշմարիտ և կեղծ դրոշներ օգտագործելու հնարավորություն:

Source: opennet.ru

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