Cerca de 6 meses após conseguir compilar integralmente o FreeBSD, o compilador livre Clang (integrante do projeto LLVM, sob licença NCSA) parece prestes a alcançar mais um marco interessante: Bryce Lelbach divulgou, no grupo dos desenvolvedores do Clang, que com algum esforço já conseguiu compilar com sucesso parte considerável do kernel Linux, e em algumas semanas espera conseguir completar o suporte.

O kernel Linux é historicamente compilado com o GCC, e usa extensões desenvolvidas especificamente no âmbito deste compilador, o que é uma razão a mais pela qual se torna um alvo interessante para testar a capacidade e compatibilidade de outros compiladores: os testes e esforços feitos com o não-livre ICC, da Intel, como os mostrados neste paper, são bastante ilustrativos e detalham inclusive algumas das peculiaridades do tratamento que o GCC dava ao código do kernel na época.

Naturalmente, em seus testes com o Clang, Bryce também encontrou peculiaridades similares, inclusive uma que se manifesta em todas as áreas do kernel relacionadas a criptografia (que até o momento ainda estão pendentes de solução).

Mas o kernel hibridamente compilado com o Clang pelo Bryce tem suporte a bastante coisa: roda o Debian no notebook dele em runlevel 5 (boot completo multiusuário em modo gráfico e com rede IPv4), com os filesystems, ACPI, PCI, SMP, POSIX IPC, pthreads, NUMA, swap IPV4, os drivers necessários, suporte a som, webcam, usb, touchpad, drive de DVD, teclado e gráficos – o kernel compilado por ele rodou até mesmo o Flash player para assistir a vídeos.

E o mais interessante: embora o conjunto ainda não esteja 100% self-hosted (porque o Clang não conseguiu compilar o kernel completo), o kernel compilado por ele foi capaz de permitir compilar novamente um kernel igualmente funcional, usando o Clang rodando sobre si.

Além das questões relacionadas aos códigos de criptografia, ainda há outros, incluindo problemas específicos no carregamento de módulos, e especialmente 2 outros previamente conhecidos (relacionados a assembly inline feito do “jeito GCC”) que no momento foram resolvidos via compilação específica com o GCC destes 2 trechos.

Estes problemas listados já estão em variados graus de solução, em sua maioria por meio de mudanças no comportamento do Clang, embora o histórico demonstre que projetos em condições similares aceitaram de bom grado patches para remover situações que ox tornavam compatíveis apenas com o GCC.

Em paralelo, o Bryce está portando alguns kits de testes e benchmarks desenvolvidos inicialmente pela Intel, para facilitar a tarefa de verificar o resultado produzido.

No momento o desenvolvedor leva cerca de 15 minutos para compilar o kernel em seu notebook, e planeja ter completado em algumas semanas o desenvolvimento necessário para ter kernels Linux em qualidade de produção e completamente compilados com o Clang. (via lwn.net)