Na conferência Maintainers Summit, que está acontecendo nestes dias, foram discutidos os resultados do experimento de adição ao kernel. Linux возможности разработки компонентов на языке Rust. Собравшиеся участники признали эксперимент успешным и решили перевести поддержку языка Rust в категорию основных частей ядра, сняв с неё метку экспериментальной функциональности.
Три года назад возможность разработки драйверов и модулей на языке Rust была добавлена в ядро 6.1. В тех пор в состав ядра были включены абстракции для разработки на Rust драйверов для GPU, ФС, блочных устройств, сетевых адаптеров и USB-устройств. На языке Rust развивается драйвер Nova для GPU NVIDIA, asahi для GPU Apple AGX, Tyr для GPU ARM Mali, rust_ext2 c ФС Ext2. В состав ядра принята написанная на Rust реализация IPC Binder. Проект RROS развивает real-time подсистему для ядра Linux, написанную на Rust. Поддержка Rust неактивна по умолчанию и не приводит к включению Rust в число обязательных сборочных зависимостей к ядру.
Os defensores do Rust acreditam que a linguagem elimina a maioria dos bugs principais causados por casos extremos da linguagem C, permitindo que os revisores de código se concentrem em erros de lógica e condições de corrida. O Rust ajuda a eliminar problemas como acesso após liberação de memória, estouro de buffer, liberação incorreta de recursos durante o tratamento de erros e verificações esquecidas do código de retorno de erro. Usar Rust em novos códigos também reduz o tempo de desenvolvimento, diminuindo o esforço de depuração e graças às fortes garantias da linguagem de detectar erros no início do processo de desenvolvimento.
Os oponentes da inclusão do Rust no kernel consideram inaceitável o uso de múltiplas linguagens de programação em projetos complexos. Bases de código mistas complicam o trabalho dos mantenedores, pois os tornam dependentes de código escrito em outra linguagem. Por exemplo, se houver bindings em Rust, os desenvolvedores de subsistemas baseados em C precisam considerar o impacto das alterações na funcionalidade contínua desses bindings.
Fonte: opennet.ru
