Rust Android платформасын әзірлеуге арналған негізгі тілдердің қатарына кіреді

Google Android платформасын жасауға рұқсат етілген тілдердің қатарына Rust бағдарламалау тілін қосқанын жариялады. Rust тілінің компиляторы 2019 жылы Android бастапқы тармағына енгізілген, бірақ бұл тілге қолдау эксперименттік болып қалды. Android үшін жоспарланған алғашқы Rust құрамдастарының кейбірі Binder процессаралық байланыс механизмінің және Bluetooth стекінің жаңа енгізулерін қамтиды.

Rust енгізу қауіпсіздікті нығайту, қауіпсіз бағдарламалау әдістерін ілгерілету және Android жүйесінде жадпен жұмыс істеу кезінде ақауларды анықтау тиімділігін арттыру жобасының бөлігі ретінде жүзеге асырылды. Android жүйесінде анықталған барлық қауіпті осалдықтардың шамамен 70% жадпен жұмыс істеу кезіндегі қателерден туындайтыны атап өтілген. Жад қауіпсіздігіне және жадты автоматты басқаруға бағытталған Rust пайдалану тегін қол жеткізу және буфердің асып кетуі сияқты жад қателерінен туындаған осалдықтардың қаупін азайтады.

Rust компиляция уақытында анықтамалық тексеру, нысанды иелену және нысанның қызмет ету мерзімін бақылау (аумақтары) арқылы және орындалу уақытында жадқа кірудің дұрыстығын бағалау арқылы жад қауіпсіздігін қамтамасыз етеді. Rust сонымен қатар бүтін сандардың толып кетуінен қорғауды қамтамасыз етеді, айнымалы мәндерді пайдалану алдында инициализациялауды талап етеді, стандартты кітапханада қателерді жақсы өңдеуге ие, әдепкі бойынша өзгермейтін сілтемелер мен айнымалылар тұжырымдамасын пайдаланады және логикалық қателерді азайту үшін күшті статикалық теруді ұсынады.

Android жүйесінде жад қауіпсіздігі қолдау көрсетілетін Kotlin және Java тілдерінде қамтамасыз етілген, бірақ олар жоғары шығындарға байланысты жүйе құрамдастарын әзірлеуге жарамайды. Rust C және C++ тілдеріне жақын өнімділікке қол жеткізуге мүмкіндік береді, бұл оны платформаның төмен деңгейлі бөліктерін және аппараттық құралдармен әрекеттесу үшін құрамдастарды әзірлеу үшін пайдалануға мүмкіндік береді.

C және C++ кодтарының қауіпсіздігін қамтамасыз ету үшін Android құм жәшігінің оқшаулануын, статикалық талдауды және анық емес тестілеуді пайдаланады. Құм жәшігін оқшаулау мүмкіндіктері шектеулі және олардың мүмкіндіктерінің шегіне жетті (ресурстарды тұтыну тұрғысынан одан әрі процестерге бөлшектеу практикалық емес). Құм жәшігін пайдаланудың шектеулері үлкен үстеме шығындарды және жаңа процестерді шығару қажеттілігінен туындаған жадты тұтынудың жоғарылауын, сондай-ақ IPC пайдаланумен байланысты қосымша кідірістерді қамтиды.

Сонымен қатар, құмсалғыш кодтағы осалдықтарды жоймайды, тек тәуекелдерді азайтады және шабуылды қиындатады, өйткені пайдалану бір емес, бірнеше осалдықтарды анықтауды талап етеді. Кодтық тестілеуге негізделген әдістер шектеулі, өйткені қателерді анықтау үшін мәселенің өзін көрсетуі үшін жағдай жасау қажет. Барлық мүмкін нұсқаларды қамту мүмкін емес, сондықтан көптеген қателер байқалмайды.

Android жүйесіндегі жүйелік процестер үшін Google «екі ережесін» ұстанады, оған сәйкес кез келген қосылған код үш шарттың екеуінен аспауы керек: расталмаған кіріс деректерімен жұмыс істеу, қауіпті бағдарламалау тілін пайдалану (C/C++) және қатаң құм жәшігінің оқшаулануынсыз жұмыс істейді (артықшылықтары жоғары). Бұл ереже сыртқы деректерді өңдеуге арналған кодты ең аз артықшылықтарға дейін азайту (оқшауланған) немесе қауіпсіз бағдарламалау тілінде жазылу керектігін білдіреді.

Google бар C/C++ кодын Rust жүйесінде қайта жазуды мақсат етпейді, бірақ бұл тілді жаңа кодты әзірлеу үшін пайдалануды жоспарлап отыр. Жаңа код үшін Rust пайдалану мағынасы бар, себебі статистикалық мәліметтерге сәйкес, қателердің көпшілігі жаңа немесе жақында өзгертілген кодта пайда болады. Атап айтқанда, Android жүйесінде анықталған жад қателерінің шамамен 50% бір жылдан аз уақыт бұрын жазылған кодта анықталған.

Rust Android платформасын әзірлеуге арналған негізгі тілдердің қатарына кіреді


Ақпарат көзі: opennet.ru

пікір қалдыру