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

Միգել Օջեդան՝ Rust-for-Linux նախագծի հեղինակը, առաջարկել է բաղադրիչների թարմացված տարբերակ Rust լեզվով սարքերի դրայվերների մշակման համար՝ Linux միջուկի մշակողների կողմից քննարկման համար: Rust-ի աջակցությունը համարվում է փորձնական, բայց արդեն համաձայնեցված է linux-next ճյուղում ընդգրկվելու համար: Նոր տարբերակը վերացնում է patches-ի առաջին տարբերակի քննարկման ժամանակ արված մեկնաբանությունները։ Լինուս Տորվալդսն արդեն միացել է քննարկմանը և առաջարկել է փոխել որոշ բիթային գործողությունների մշակման տրամաբանությունը։

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

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

Կարկատանների նոր տարբերակի առավել նկատելի փոփոխությունները.

  • Հիշողության բաշխման կոդը ազատվում է «խուճապային» վիճակի հնարավոր առաջացումից, երբ տեղի են ունենում այնպիսի սխալներ, ինչպիսին է հիշողությունից դուրս: Ներառված է Rust alloc գրադարանի տարբերակ, որը վերամշակում է կոդը՝ սխալները կարգավորելու համար, սակայն վերջնական նպատակն է միջուկի համար անհրաժեշտ բոլոր հատկանիշները փոխանցել alloc-ի հիմնական հրատարակությանը (փոփոխություններն արդեն պատրաստվել և փոխանցվել են ստանդարտին։ Rust գրադարան):
  • Գիշերային կառուցումների փոխարեն այժմ կարող եք օգտագործել rustc կոմպիլյատորի բետա թողարկումները և կայուն թողարկումները՝ Rust-ի աջակցությամբ միջուկ կազմելու համար: Ներկայումս rustc 1.54-beta1-ն օգտագործվում է որպես տեղեկատու կոմպիլյատոր, սակայն ամսվա վերջում 1.54 թողարկման թողարկումից հետո այն կաջակցվի որպես հղում կազմող։
  • Ավելացվեց թեստեր գրելու աջակցություն՝ օգտագործելով «#[test]» ստանդարտ հատկանիշը Rust-ի համար և թեստերը փաստաթղթավորելու համար doctests օգտագործելու հնարավորությունը:
  • Ավելացվել է աջակցություն ARM32 և RISCV ճարտարապետությունների համար՝ ի լրումն նախկինում աջակցվող x86_64 և ARM64:
  • GCC Rust-ի (GCC frontend for Rust) և rustc_codegen_gcc (rustc backend for GCC) բարելավված իրականացումը, որն այժմ անցնում է բոլոր հիմնական թեստերը:
  • Աբստրակցիայի նոր մակարդակ առաջարկվում է C-ով գրված միջուկային մեխանիզմների Rust ծրագրերում օգտագործելու համար, ինչպիսիք են կարմիր-սև ծառերը, հղումների հաշվարկով օբյեկտները, ֆայլերի նկարագրիչի ստեղծումը, առաջադրանքները, ֆայլերը և I/O վեկտորները:
  • Վարորդի մշակման բաղադրիչները բարելավել են file_operations մոդուլի, մոդուլի մակրո, մակրո գրանցում և տարրական դրայվերների աջակցությունը (հետազոտել և հեռացնել):
  • Binder-ն այժմ աջակցում է ֆայլերի նկարագրիչների և LSM կեռիկների փոխանցում:
  • Առաջարկվում է Rust դրայվերի ավելի ֆունկցիոնալ օրինակ՝ bcm2835-rng Raspberry Pi տախտակների ապարատային պատահական թվերի գեներատորի համար:

Բացի այդ, նշվում են որոշ ընկերությունների նախագծեր՝ կապված միջուկում Rust-ի օգտագործման հետ.

  • Microsoft-ը ցանկություն է հայտնել մասնակցել Rust-ի աջակցությունը Linux միջուկում ինտեգրելու աշխատանքներին և պատրաստ է առաջիկա ամիսներին տրամադրել վարորդների ներդրում Hyper-V-ի համար Rust-ի վրա:
  • ARM-ն աշխատում է բարելավել Rust-ի աջակցությունը ARM-ի վրա հիմնված համակարգերի համար: Rust նախագիծն արդեն առաջարկել է փոփոխություններ, որոնք 64-բիթանոց ARM համակարգերը կդարձնեն Tier 1 հարթակ:
  • Google-ն ուղղակիորեն աջակցություն է տրամադրում Rust for Linux նախագծին, մշակում է Rust-ում Binder միջգործընթացային հաղորդակցման մեխանիզմի նոր ներդրում և դիտարկում է Rust-ում տարբեր դրայվերների վերամշակման հնարավորությունը: ISRG-ի (Internet Security Research Group) միջոցով Google-ը ֆինանսավորում է տրամադրել Rust-ի աջակցությունը Linux միջուկում ինտեգրելու աշխատանքների համար:
  • IBM-ն իրականացրել է միջուկային աջակցություն Rust-ի համար PowerPC համակարգերի համար:
  • LSE (Systems Research Laboratory) լաբորատորիան մշակել է SPI դրայվեր Ռուստում:

Source: opennet.ru

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