Մակագրված է Rust ծրագրավորման լեզվի 1.97 թողարկումը, որն առաջին հերթին մշակվել է Mozilla նախագծի կողմից, սակայն այժմ զարգանում է անկախ ոչ շահույթ կազմակերպություն Rust Foundation-ի հովանու ներքո: Լեզուն կենտրոնանում է անվտանգ հիշողության նախատեսման վրա և տրամադրում է միջոցներ բարձր մակարդակի զուգահեռ արտահոսքի ապահովման համար՝ առանց թափթփուկի հավաքման և runtime-ի օգտագործման (runtime-ը սահմանափակվում է հիմնական սկզբնական կարգավորմամբ և ստանդարտ գրադարանի աջակցությամբ):
Rust-ին առնչվող հիշողության մեթոդները ուղղված են ցուցիչներով աշխատելիս սխալների բացառմանը և պաշտպանությանը ցածր մակարդակի գիշեր աշխատանքի հետևանքով առաջացած խնդիրներից, օրինակ՝ հիշողության մի տարածքում վերաբերվող ռեսուրսների չօգտագործման, զրոյի ցուցիչների անմիջականությամբ, Buffer-ի սահմաններից դուրս ելույթ ունենալը: Պետքս՝ գրադարաններ տարածելու, հավաքման ապահովելու և ծրագրի կախվածությունները կառավարելու համար արտադրվում է Cargo փաթեթի կառավարիչը: Գրադարանների տեղադրման համար աջակցվում է crates.io ռեպոզիտորիան:
Rust-ում հիշողության անվտանգության ապահովումը իրականանում է կոդի կոմպիլացիայի ընթացքում՝ գրիչների ստուգմամբ, օբյեկտների սեփականության վերահսկմամբ, օբյեկտների կյանքի ժամանակահատվածի (տեսադաշտի) հաշվարկով և հիշողության մուտքի ուղղականության գնահատմամբ: Rust-ը նաև ապահովում է ամբողջ թիվերի անդադար մտահոգությունից, պահանջում է արժեքների նախնական կարգավորումը օգտագործման առաջ, ավելի լավ է աշխատում սխալները ստանդարտ գրադարանում, կիրառում է անսահմանափակ (immutable) ծրագրերում և փոփոխականներում ըստ հանդերձանքի, առաջարկում է ուժեղ ստատիկ տիպավորում` տրամաբանության սխալների նվազեցման նպատակով:
Կարևոր նորույթները:
- Ապահովված է նոր ֆունկցիաների, գլոբալ փոփոխականների և տվյալների կառուցվածքների անունների ձևավորման սկեմայի ներդրում (mangling) գեներացված օբյեկտային և կատարողական ֆայլերում (-Csymbol-mangling-version=v0): Անվանումները ձևավորվում են տարբեր ծրագրերի համատեքստային բախումների վերացման նպատակով, կցելով հատուկ համատեքստ, օրինակ՝ մոդուլի և crate-ի անունների տ шляхը:
Մինչ այդ օգտագործվող անվան ձևավորման սկեման, որը հիմնվել է Itanium ABI-ի վրա, ունեցել է քաղցկեղներ, ինչպես օրինակ՝ պարի քայլերի փոփոխություններ, որոնց մասին ոմանք ընթերցելի չեն, և Element ՀՀ version-ների շուրջաշրջան որպես հիմք ունենալը, ինչը պահանջել է Rust-ի հատուկ անունների դեկոդավորիչների օգտագործում: Rust 1.97-ում արդեն ներմուծել է սկզբնական ձևավորման սկեման, որը կառուցվել է Rust-ի համար և ազատվել նշված դեֆեկտներից: Հին սկեմը նախատեսվում է հեռացնել հաջորդ թողարկումներից մեկում:
- Cargo փաթեթի կառավարիչը ինտեգրում է կոմպիլյատորի կողմից գեներացված կերպով նախազգուշացման արձագանքման կառավարումը: Ավելացված է CARGO_BUILD_WARNINGS շրջակա միջավայրի փոփոխականը, որը կարող է ընդունել երեք արժեքներ` warn (ձեռնարկի տեղադրման ժամանակ)՝ նախազգուշացման հաղորդագրություն ներկայացնել; allow — նախազգուշացումն անտեսել; deny — նախազգուշացումները կառավարելու համար որպես սխալներ, որոնք դադարեցնում են համակարգի կառուցումը:
Անցյալ տարբերակներում նախազգուշացման հայտումից հետո կառուցման ավարտված ֆայլերը պետք է նշեք «-Dwarnings» RUSTFLAGS-ի համար, սակայն RUSTFLAGS-ի փոփոխությամբ Cargo փաթեթի կառավարիչը հանրային բարօրներ չէր հաշվարկում տվյալները կեղտից և հեղինակի ամբողջ նախագծի վերակառուցման համար: Cargo-ի կողմից ձևավորված կարգավորումը բացառեց քաղցականի վերացում և ամբողջական վերակառուցման անհրաժեշտությունը նախազգուշությունների վերացման ռեժիմի փոփոխման դեպքում, ինչպես նաև հեշտացրեց նախազգուշությունների 처리ման ներքո ընդհանրացված սխալների համակարգերի պարագայում համակարգի իրականացման մասում:
- Մոնտաժի ժամանակ՝ նախնական կարգով ցույց է տրվում կապալը։ Բացատրական գրությունները ցույց են տրվում «linker_messages» հատուկ lint-ահազանգի միջոցով, որը չի մտնում ստանդարտ «warnings» խմբում։ Այդ պահին rustc ֆիլտրում է հաղորդումները, որոնք բնորոշ են սխալաբանության կամ նորմալ վարքագծի համար, թողնելով զգուշացումներ, որոնք կարող են մատնանշել խնդիրներ, ինչպիսիք են հնացած տարբերակների և ցանկալի կարգավորումների վերաբերյալ զգուշացումները։ Նախկինում կապալի մասին տեղեկատվությունը ցուցադրվում էր միայն սխալի ավարտից հետո, իսկ այլապես բոլոր հաղորդումները թաքնվում էին։ Նախկին վարքագիծը վերականգնելու համար Cargo.toml-ում կարելի է ավելացնել: [lints.rust] linker_messages = «allow»
- Նոր API-ն ինտեգրվել է կայուն տեսակը, այն թվում, որ կայունացվել են մեթոդներ և հոմանիշների իրականացումներ:
- Միօրինակ RepeatN-ի համար
- Copy for ffi::FromBytesUntilNulError
- Ուղարկելու համար std::fs::File UEFI-ի համար
- ::isolate_highest_one
- ::isolate_lowest_one
- ::highest_one
- ::lowest_one
- ::bit_width
- NonZero::isolate_highest_one
- NonZero::isolate_lowest_one
- NonZero::highest_one
- NonZero::lowest_one
- NonZero::bit_width
- const նշանը կիրառվել է char::is_control մեթոդում։
Ավելին, կարելի է նշել վերջին անգամ հայտարարված նախագծերը և Rust-ին առնչվող ամսաբաժինները:
- Zinnia նախագիծը զարգացնում է մոդուլային Unix-բնույթի միջուկ, որը գրված է Rust լեզվով և տարածվում է GPLv2 լիցենզիայի ներքո։ Միջուկը աջակցում է POSIX-հետազոտություններին և որոշ ընդլայնումների՝ BSD և Linux արխիտեկտուրաներից, ինչպիսիք են epoll և timerfd։ Դասական ձևավորման և մուտքի կազմակերպման համար հասանելի են DRM (Direct Rendering Manager) և evdev վարորդները։ Ենթադրող ֆունկցիոնալությունը բավարար է X-сервера-ի հեռանկարային միջավայրի լիցքավորման համար՝ Xfce-ի պատուհաններում և կոմպոզիտիվ Weston-ի վերջնական կարգով՝ Wayland-ի վրա։ սերվեր Աջակցությունը տրամադրվում է ինչպես QEMU էմուլատորում, այնպես էլ իրական սարքավորումներում, ինչպիսիք են ThinkPad E14 G7 նոթբուքը։
- Մետաքսում iroh 1.0 հաղորդակցման գրադարան է, որը թույլ է տալիս ստեղծել ցանցային կապեր տարբեր հյուրընկալողներով հավելվածների միջև՝ օգտագործելով գրավիչ գրավիչ նվերներ, փոխարենը IP հասցեներ (նշվում է գրավիչը, որը անհրաժեշտ է կապվելու համար, և iroh-ը գտնում է համապատասխան հյուրընկալողն ու ստեղծում էcrypted կապ QUIC արձանագրությամբ)։ Եթե հնարավոր է, ստեղծվում են ուղիղ P2P-կապեր, բայց եթե դա անհնար է, վերադարձվում է անցում դեպի փոխանցման շրջաններ, որոնք նույնպես օգտագործվում են հյուրընկալողների հայտնաբերման համար գրավիչների միջոցով։ Կարող եք գործադրել ձեր սեփական փոխանցման շրջանը կամ կապվել հանրային փոխանցման շրջաններին, որոնք աջակցվում են համայնքի կողմից։
Օգտագործվող առանձնահատկությունների շարքում՝ Multipath QUIC-ի աջակցություն՝ միաժամանակ մի քանի ճանապար հղումով փաթեթների փոխանցման համար, NAT-ի հետևանքով աշխատելու հնարավարությունը, ստատիկ կազմության ռեժիմ՝ տեղական սարքավորումներին միանալու համար առանց ինտերնետի հասանելիության, WASM միջանկյալ կոդով կազմելու հնարավարությունը՝ բրաուզերում կատարման համար, և նոր տրանսպորտների ստեղծման աջակցությունը, օրինակ, Bluetooth, WiFi Aware կամ LoRa-ի կապի համար։ Կոդը գրվել է Rust լեզվով և տարածվում է Apache-2.0 և MIT լիցենզիաների ներքո։ Հասանելի են Python, Node.js, Kotlin և Swift-ի փոխարինիչներ։
- Բուն JavaScript սերվերային платформայի հեղինակը հրապարակել է հոդված, որտեղ դիտարկվում է Բուն ծրագրի վերափոխումը Zig լեզվից Rust լեզվի, օգտագործելով AI մոդել Claude Fable: Նշվել է, որ Բուն 1.3.14-ը կլինի Zig լեզվի վերջին թողարկումը, իսկ հաջորդ Բուն 1.4.0-ը արդեն կլինի Rust-ից: Ստացված թեստերի համաձայն, Rust տարբերակը զգալիորեն քիչ պահեստ է օգտագործում և 2-5% ավելի արագ է, քան Zig տարբերակը: Rust տարբերակի գործիքային ֆայլի չափը կրճատվել է 20%-ով:
Ընտանիք: opennet.ru
