Linux-ի միջուկի պատչերի հինգերորդ հրատարակությունը Rust լեզվի աջակցությամբ

Միգել Օջեդան՝ Rust-for-Linux նախագծի հեղինակը, առաջարկել է բաղադրիչների հինգերորդ տարբերակը Rust լեզվով սարքերի դրայվերների մշակման համար՝ Linux միջուկի մշակողների կողմից քննարկման համար: Rust-ի աջակցությունը համարվում է փորձնական, բայց արդեն ներառված է linux-next ճյուղում և բավականաչափ զարգացած է՝ սկսելու աշխատանքը միջուկի ենթահամակարգերի վրա աբստրակցիոն շերտեր ստեղծելու, ինչպես նաև դրայվերներ և մոդուլներ գրելու համար: Մշակումը ֆինանսավորվում է Google-ի և ISRG-ի (Internet Security Research Group) կողմից, որը Let's Encrypt նախագծի հիմնադիրն է և նպաստում է HTTPS-ին և ինտերնետի անվտանգության բարելավման տեխնոլոգիաների զարգացմանը:

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

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

Կարկատանների նոր տարբերակը շարունակում է վերացնել պատչերի առաջին, երկրորդ, երրորդ և չորրորդ հրատարակությունների քննարկման ժամանակ արված մեկնաբանությունները։ Նոր տարբերակում.

  • Rust-ի աջակցության համար բաղադրիչների փորձարկումն ավելացվել է շարունակական ինտեգրացիոն համակարգին՝ հիմնված Intel-ի կողմից աջակցվող 0DAY/LKP բոտի վրա, և սկսվել է թեստավորման հաշվետվությունների հրապարակումը: Մենք պատրաստվում ենք ինտեգրել 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

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