Lamina - um backend de compilador implementado do zero, sem dependências
(github.com/SkuldNorniern)Post no blog sobre o lançamento do Lamina
Lamina é um projeto de backend de compilador que recebe código em Intermediate Representation (código IR) como entrada e gera código de máquina/binários.
Ele foi iniciado com base nos meus estudos e projetos de linguagens/compiladores dos últimos 4 a 5 anos, e espero que possa servir como uma referência simples e intuitiva para quem tem interesse em compiladores.
Plataformas atualmente suportadas
- macOS (aarch64)
- Linux (x86_64)
- WebAssembly (wasm32/64)
Plataformas com suporte planejado
- Windows (x86_64)
- macOS (Intel)
- Linux (aarch64)
- Risc-V
No caso de Windows aarch64, como o autor não tem o equipamento, a prioridade é baixa e por isso foi omitido por enquanto.
Estado atual
Atualmente não há passes de otimização do compilador, então o desempenho fica em um nível ligeiramente mais lento que C#.
Na próxima atualização, está prevista a implementação da camada Machine IR e, junto com ela, a introdução de passes de otimização.
Além disso, antes do lançamento 0.1, a maior parte do conteúdo gerado com IA nas partes de test code e codegen será removida e reescrita.
Exemplo de frontend de compilador
Brainfuck-Lamina Repo - um compilador simples de Brainfuck
Funcionalidades planejadas para o desenvolvimento futuro
- Suporte à geração de código para GPU (para uso posterior como backend de uma biblioteca de ML implementada do zero)
- Suporte a compilação JIT
- Fornecimento de um conjunto de ferramentas, como depurador
- Fornecimento de assembler e linker implementados do zero (mantendo o suporte aos utilitários existentes)
2 comentários
Impressionante mesmo, muito bom
Ainda é um projeto bem incipiente,
muito obrigado por terem visto com bons olhos!
Vou continuar melhorando o projeto; espero que ele possa se tornar um bom material para quem está estudando compiladores.