Enquanto muitos ficam na extrema expectativa de migrarem o kernel Linux para a linguagem Rust (o que de certa forma eu acho ilógico), Linus Torvalds decidiu migrar o kernel Linux para versão mais moderna da linguagem C. Tal iniciativa foi tomada após um patch para solucionar um potencial problema de segurança apresentou outro problema.
O que me surpreendeu foi descobrir que o kernel Linux é escrito até hoje na versão C89. (não é a toa que estão querendo migrar para Rust. Mas tinha que necessariamente ser Rust? Acho que seria um trajeto muito longo).
"A razão pela qual esse tipo de bug não especulativo pode acontecer é que historicamente não tínhamos o "declarar variáveis em loops" no estilo C99. Então list_for_each_entry() - e todos os outros - fundamentalmente sempre vaza a última entrada HEAD do loop, simplesmente porque não podíamos declarar a variável do iterador no próprio loop."
Foi pensado inicialmente em migrar para C99 que nas palavras de Linus "eu pessoalmente *realmente* gostaria de ver seria para nós - mais uma vez - olhar para o uso de "-std=gnu99" e corrigir todo o "ponteiro inválido final de vazamento fora do loop"." porém, tal migração não aconteceu devido alguns problemas estranhos relacionados a algumas versões antigas do GCC. Mas tais problemas estavam relacionados a versões 4.9 e mais antigas do GCC.
Já que agora a versão exigida é a 5.1 ou LLVM 11.0.0, tal migração para C99 poderia ocorrer tranquilamente. Mas a conclusão que chegaram foi que iriam migrar para a versão C11 (-std=gnu11 -Wno-shift-negative-value) por introduzir suporte a multithreading e maior segurança.
A migração está prevista para ter inicio no kernel Linux 5.18. Então, ainda há muito chão para percorrer já que a versão 5.17 ainda está no candidato a lançamento nº5. Ainda tem mais novidades sobre o kernel para eu trazer. Vou me esforçar essa semana para isso :)
Nenhum comentário:
Postar um comentário
Viu algum erro e quer compartilhar seu conhecimento? então comente aí.
Observação: somente um membro deste blog pode postar um comentário.