Nos bastidores do Linux: a evolução do kernel e seus componentes

Quando uma distribuição GNU/Linux é lançada, todas as atenções são voltadas para as novidades que em geral, são do interesse dos seus usuários, como as melhorias feitas para os ambientes gráficos, os novos recursos e funcionalidades disponibilizados e até mesmo, o suporte para os componentes de hardware recém-lançados. Porém, muitas vezes o sistema traz inovações tecnológicas que apesar de não promoverem benefícios imediatos, também são de extrema importância…

O kernel Linux 6.0 será lançado em breve e apesar do novo sistema de numeração “dar a entender” que teremos grandes mudanças estruturais, na prática veremos basicamente as habituais melhorias pontuais que conhecemos! Uma delas (que foi bastante comentada nestes últimos tempos) é a io_uring, uma nova API assíncrona para o kernel Linux, que irá entregar uma interface para as chamadas do sistema relacionadas a entrada e saída de dados (E/S) em buffers.

O seu objetivo é promover a execução destes processos com uma baixa carga para o sistema, melhorando a sua performance nas operações feitas no espaço kernel/usuário. Ela funciona com base na criação de dois buffers circulares, mantendo-os compartilhados entre o kernel e as aplicações, eliminando a necessidade de emitir chamadas de sistema extras para copiar dados entre eles. A API fornecida pela biblioteca liburing para o espaço do usuário (aplicativos) poderá ser usada, para interagir com a interface do kernel mais facilmente.

Outra mudança que também chamou a atenção nestes últimos dias, é a introdução da linguagem de programação Rust (a partir do kernel 6.1). Esta é bancada pelo Google e teve uma grande ascensão nestes últimos anos, graças ao fato de ser concebida com base em abordagens modernas e por isto, é vista como a ideal para o desenvolvimento de códigos mais seguros, além de promover correções que não seriam possívels com outras linguagens mais antigas (como o próprio C, de 1972). O objetivo é reescrever algumas partes críticas do kernel Linux, além de promover o lançamento de drivers mais confiáveis e seguros.

A inclusão da linguagem Rush no kernel Linux tem sido um tema bem controverso, em vista de não ter sido a primeira: há alguns anos, a linguagem C++ também foi bastante cogitada para ser adicionada, o que causou a ira do próprio Linus Torvalds em vista de suas particularidades “não tão desejadas”. Embora C++ também promova uma abordagem mais moderna, C ainda oferece uma grande flexibilidade, além de possibilitar a criação de códigos compactos e de alta performance! Por fim, não havia outra linguagem de alto nível que promova o acesso ao hardware de forma tão eficiente quanto C. Ao menos, naquela época!

Desde a concepção do daemon systemd, há tempos sabemos que os sistemas baseados em GNU/Linux sofrerão profundas transformações em sua estrutura, para se adequar as exigências e os requisitos desses novos tempos em que vivemos (virtualização, Computação em Nuvens, Redes definidas por Software e Internet das Coisas)! Tanto o GNU/Linux quanto os demais sistemas Unix que existem no mercado, são baseados no padrão POSIX, o qual foi concebido há +30 anos para estabelecer uma camada de compatibilidade entre eles e no entanto, teve poucas evoluções ao longo destes últimos anos. Inclusive, o Linux nem sequer é certificado!

Seria este, o momento ideal para liderar esta revolução? &;-D