Esta página ainda não foi traduzida para esta versão. A versão em inglês é a referencia autoritária. Ver versão em inglês →

Compiler Internals

A guided map of the `souc` compiler: frontend, type checking, IRs, and backends.

Compiler Internals

Os docs do compilador continuam úteis, mas agora são apresentados como um mapa de implementação amarrado ao artefato que realmente conseguimos verificar.

Verificado hoje

  • Os docs do compilador devem ser lidos como mapa da implementação e do trabalho de design ativo.
  • O artefato público versionado informa Cranelift JIT habilitado.
  • Trate testes e artefatos de gate como evidência mais forte do que texto aspiracional ou nomes de diretório.

Ressalvas atuais

  • Backends como LLVM, GPU e LSP precisam ser confirmados por artefato, e não inferidos pela árvore de fontes.
  • A especificação da linguagem pode avançar além do que o artefato público atual realmente aplica.

Solução de problemas

  • Estouro de pilha (Compilador Madaros): O compilador de expressões recursivas pode gerar quadros de pilha extremamente grandes (ex: ~4,85 MB por quadro) quando profundamente aninhado. Isso foi corrigido recentemente na lógica de codegen ao alinhar o dimensionamento dinâmico do quadro às contagens de registradores (align16((*func).reg_count*8)). No entanto, se você enfrentar um SIGSEGV ou falha de segmentação ao compilar funções grandes com operações booleanas aninhadas, certifique-se de aumentar o limite de tamanho da pilha: ulimit -s unlimited.