Linux ядросына арналған Rust қолдауы Торвалдс тарапынан сынға ұшырайды

Линус Торвальдс Linux ядросы үшін Rust тілінде драйверлер жасау мүмкіндігін жүзеге асыратын патчтарды қарастырып, кейбір сыни пікірлер айтты.

Ең үлкен шағымдар қате жағдайларда, мысалы, жадтың аздығы жағдайында, динамикалық жадты бөлу операциялары, соның ішінде ядро ​​ішінде, сәтсіздікке ұшырауы мүмкін жағдайда, panic() ықтимал мүмкіндігінен туындады. Торвальдс ядродағы мұндай тәсілді түбегейлі қабылдауға болмайтынын және егер бұл тармақ түсінілмесе, ол мұндай тәсілді қолдануға тырысатын кез келген кодты толығымен NAKe алады деп мәлімдеді. Екінші жағынан, патч әзірлеушісі бұл мәселемен келісіп, оны шешуге болатын деп санайды.

Басқа мәселе Linux ядросы сияқты орталар үшін қабылданбайтын қалқымалы нүкте немесе 128 биттік түрлерін пайдалану әрекеттері болды. Бұл күрделі мәселе болып шықты, өйткені қазіргі уақытта негізгі Rust кітапханасы бөлінбейді және бір үлкен блокты білдіреді - бір немесе басқа проблемалық функционалдылықты пайдалануды болдырмайтын кейбір мүмкіндіктерді ғана сұрауға мүмкіндік жоқ. Мәселені шешу тот компиляторына және кітапханаларға өзгерістер енгізуді талап етуі мүмкін, дегенмен қазіргі уақытта командада тіл кітапханаларын модульизациялауды жүзеге асыру стратегиясы әлі жоқ.

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

Жаңарту: Google Linux ядросына Rust қолдауын енгізу бастамасына қатысатынын жариялады және жад қателерінен туындайтын мәселелермен күресу үшін Rust жүйесін енгізудің техникалық себептерін ұсынды. Google Rust Linux ядросының құрамдас бөліктерін әзірлеу тілі ретінде C тіліне қосылуға дайын деп санайды. Мақалада сондай-ақ Android платформасында қолдану контекстінде ядро ​​драйверлерін әзірлеу үшін Rust тілін пайдалану мысалдары келтірілген (Rust Android әзірлеу үшін ресми қолдау көрсетілетін тіл ретінде танылған).

Google компаниясы C және Rust тіліндегі Binder іске асыруларының өнімділігі мен қауіпсіздігін егжей-тегжейлі салыстыруға мүмкіндік беретін Binder процессаралық байланыс механизмі үшін Rust тілінде жазылған драйвердің бастапқы прототипін дайындағаны атап өтілді. Қазіргі түрінде жұмыс әлі аяқталмаған, бірақ Binder жұмыс істеуі үшін қажетті ядро ​​функционалдығының барлық дерлік негізгі абстракциялары үшін Rust кодында осы абстракцияларды пайдалану үшін қабаттар дайындалған.

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

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