Na lista de discussão dos desenvolvedores do núcleo Linux, foi retomada a discussão iniciada há seis anos sobre as perspectivas do uso de código moderno em C++ no núcleo do Linux, além da atual aplicação da linguagem C com inserções de assembly e a promoção da linguagem Rust. Originalmente, o tema do desenvolvimento do núcleo em C++ foi levantado em 2018 por um engenheiro da Red Hat, que no primeiro de abril publicou como uma piada um conjunto de 45 patches para o uso de templates, classes herdadas e sobrecarga de funções C++ no código do núcleo.
A iniciativa para a continuidade da discussão foi proposta por Hans Peter Anvin, um dos principais desenvolvedores do núcleo na Intel e criador de projetos como syslinux, klibc e LANANA, que desenvolveu para o núcleo Linux um sistema de automontagem, a implementação de RAID 6, o driver CPUID e x32 ABI. Segundo Anvin, que é autor de numerosos macros e inserções de assembly no núcleo, desde 1999, as linguagens C e C++ avançaram significativamente, e a linguagem C++ tornou-se mais adequada do que C para o desenvolvimento do núcleo dos sistemas operacionais.
Possibilidades, que antes exigiam extensões específicas do GCC, agora podem ser facilmente implementadas em C++ padrão, e em muitos casos, o uso de C++ permitirá melhorar a infraestrutura sem a necessidade de mudança global do código. Como mínimo, menciona-se o uso da especificação C++14, que inclui os recursos necessários de metaprogramação, e como desejado, o uso da especificação C++20, que introduziu o suporte a conceitos, capazes de evitar muitos erros.
Anvin acredita que C++ é mais preferível do que Rust, uma vez que este último difere significativamente da linguagem C em sua sintaxe, é desconhecido para os desenvolvedores atuais do núcleo e não permite uma reescrita gradual do código (no caso da linguagem C++, pode-se traduzir gradualmente o código de C, pois o código C pode ser compilado como C++). Em apoio ao uso de C++ no núcleo, também se manifestaram Jiří Slabý da SUSE e David Howells da Red Hat.
Fonte: opennet.ru
