Rust-ը ներառված է Android պլատֆորմի մշակման հիմնական լեզուների թվում

Google-ը հայտարարել է Rust ծրագրավորման լեզուն Android պլատֆորմի մշակման համար թույլատրված լեզուների շարքում ներառելու մասին։ Rust լեզվի կոմպիլյատորը ներառվել է Android-ի սկզբնաղբյուր ծառի մեջ դեռևս 2019 թվականին, սակայն այս լեզվի աջակցությունը մնացել է փորձնական: Android-ի համար նախատեսված Rust-ի առաջին բաղադրիչներից մի քանիսը ներառում են Binder միջգործընթացային հաղորդակցման մեխանիզմի և Bluetooth ստեկի նոր ներդրում:

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

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

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

C և C++ կոդի անվտանգությունն ապահովելու համար Android-ն օգտագործում է ավազատուփի մեկուսացում, ստատիկ վերլուծություն և անորոշ թեստավորում։ Ավազակարկղի մեկուսացման հնարավորությունները սահմանափակ են և հասել են իրենց հնարավորությունների սահմանին (գործընթացների հետագա մասնատումը անիրագործելի է ռեսուրսների սպառման տեսանկյունից): Sandbox-ի օգտագործման սահմանափակումները ներառում են մեծ ծախսեր և հիշողության սպառման ավելացում՝ պայմանավորված նոր գործընթացներ ստեղծելու անհրաժեշտությամբ, ինչպես նաև IPC-ի օգտագործման հետ կապված լրացուցիչ ուշացումներով:

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

Android-ում համակարգային գործընթացների համար Google-ը հավատարիմ է «երկուսի կանոնին», համաձայն որի ցանկացած ավելացված ծածկագիր պետք է բավարարի երեք պայմաններից ոչ ավելի, քան երկուսը՝ աշխատել չվավերացված մուտքային տվյալների հետ, օգտագործել ոչ անվտանգ ծրագրավորման լեզու (C/C++) և աշխատում է առանց խիստ ավազի մեկուսացման (բարձր արտոնություններով): Այս կանոնը ենթադրում է, որ արտաքին տվյալների մշակման կոդը կամ պետք է իջեցվի նվազագույն արտոնությունների (մեկուսացված) կամ գրվի ապահով ծրագրավորման լեզվով։

Google-ը նպատակ չունի վերաշարադրել գոյություն ունեցող C/C++ կոդը Rust-ում, այլ նախատեսում է օգտագործել այս լեզուն՝ նոր կոդ մշակելու համար: Իմաստ է օգտագործել Rust-ը նոր կոդի համար, քանի որ, վիճակագրորեն, սխալների մեծ մասը հայտնվում է նոր կամ վերջերս փոփոխված կոդում: Մասնավորապես, Android-ում հայտնաբերված հիշողության սխալների մոտ 50%-ը հայտնաբերվում է մեկ տարի առաջ գրված կոդով։

Rust-ը ներառված է Android պլատֆորմի մշակման հիմնական լեզուների թվում


Source: opennet.ru

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