Միգել Օխեդա, «Ժանգը փոխարինում է» նախագծի հեղինակըLinux, առաջարկվել է միջուկի մշակողների քննարկմանը Linux Rust-ում սարքերի դրայվերներ մշակելու համար նախատեսված բաղադրիչների հինգերորդ տարբերակը: Rust-ի աջակցությունը համարվում է փորձարարական, բայց արդեն ներառված է linux-next ճյուղում և բավականաչափ հասուն է միջուկի ենթահամակարգերի վրա աբստրակցիայի շերտեր ստեղծելու, ինչպես նաև դրայվերներ և մոդուլներ գրելու աշխատանքները սկսելու համար: Մշակումը ֆինանսավորվում է Google-ի և ISRG-ի (Internet Security Research Group) կողմից, որը Let's Encrypt նախագծի հիմնադիրն է, որը խթանում է HTTPS-ը և ինտերնետային անվտանգության բարելավման տեխնոլոգիաների մշակումը:
Հիշեցնենք, որ առաջարկվող փոփոխությունները թույլ են տալիս օգտագործել Rust-ը որպես երկրորդ լեզու դրայվերների և միջուկի մոդուլների մշակման համար: Rust-ի աջակցությունը ներկայացվում է որպես տարբերակ, որը միացված չէ լռելյայնորեն և չի հանգեցնում նրան, որ Rust-ը ներառվում է որպես միջուկի համար անհրաժեշտ build կախվածություն: Rust-ի օգտագործումը վարորդների մշակման համար թույլ կտա ձեզ ստեղծել ավելի անվտանգ և ավելի լավ դրայվերներ՝ նվազագույն ջանքերով, զերծ խնդիրներից, ինչպիսիք են՝ ազատելուց հետո հիշողության հասանելիությունը, զրոյական ցուցիչի մատնանշումները և բուֆերի գերակատարումները:
Հիշողության համար անվտանգ կառավարումը Rust-ում տրամադրվում է կոմպիլյացիայի ժամանակ՝ հղումների ստուգման, օբյեկտի սեփականության և օբյեկտի կյանքի ժամկետի (շրջանակի) հետևելու, ինչպես նաև կոդի կատարման ընթացքում հիշողության հասանելիության ճշգրտության գնահատման միջոցով: Rust-ը նաև ապահովում է պաշտպանություն ամբողջ թվերի արտահոսքից, պահանջում է փոփոխական արժեքների պարտադիր սկզբնավորում նախքան օգտագործումը, ստանդարտ գրադարանում ավելի լավ է լուծում սխալները, լռելյայն կիրառում է անփոփոխ հղումների և փոփոխականների հայեցակարգը, առաջարկում է ուժեղ ստատիկ մուտքագրում՝ տրամաբանական սխալները նվազագույնի հասցնելու համար:
Կարկատանների նոր տարբերակը շարունակում է վերացնել պատչերի առաջին, երկրորդ, երրորդ և չորրորդ հրատարակությունների քննարկման ժամանակ արված մեկնաբանությունները։ Նոր տարբերակում.
- Intel-ի կողմից աջակցվող 0DAY/LKP բոտի վրա հիմնված անընդհատ ինտեգրման համակարգը թարմացվել է՝ Rust աջակցության բաղադրիչների ստուգմամբ, և հրապարակվել են փորձարկման զեկույցներ: Rust աջակցության ինտեգրումը KernelCI ավտոմատացված փորձարկման համակարգում նախապատրաստման փուլում է: GitHub CI փորձարկումը տեղափոխվել է կոնտեյներներ:
- Rust միջուկի մոդուլները ազատվում են «#![no_std]» և «#![feature(…)] crate ատրիբուտները սահմանելու անհրաժեշտությունից:
- Ավելացվել է աջակցություն միայնակ հավաքման թիրախների համար (.o, .s, .ll և .i):
- Կոդավորման ուղեցույցները սահմանում են մեկնաբանությունների («//») և կոդի («///») փաստաթղթավորման միջև բաժանման կանոններ։
- is_rust_module.sh սկրիպտը վերամշակվել է:
- Ավելացվեց ստատիկ (գլոբալ համօգտագործվող փոփոխական) համաժամացման պարզունակ աջակցություն՝ հիմնված «CONFIG_CONSTRUCTORS» ներդրման վրա:
- Պարզեցված կողպեքի կառավարում. Guard-ը և GuardMut-ը միավորված են մեկ պարամետրացված տիպի մեջ։
- Սարքերը գրանցելիս հնարավոր է լրացուցիչ պարամետրեր սահմանել։
- Ավելացվել է "RwSemaphore" աբստրակցիան, որը գործում է որպես rw_semaphore C կառուցվածքի փաթաթան։
- mmap-ն օգտագործելու համար ավելացվել է նոր մմ մոդուլ և VMA աբստրակցիա (փաթաթում vm_area_struct կառուցվածքի վրա):
- GPIO PL061 դրայվերը փոխվել է «dev_*!» մակրոյի օգտագործման համար։
- Կատարվել է օրենսգրքի ընդհանուր մաքրում.
Source: opennet.ru
