Feito em Go e exclusivamente para a rinha de compiladores, Altair Spankabytes é um simples interpretador da linguagem Rinha.
- Baseado em tree-walking interpreter.
- Feito apenas em Go 1.21 + biblioteca padrão.
- Todas as otimizações são genéricas, não importando se é um cálculo de fibonacci, fatorial, etc.
- Interpreta em duas etapas:
- Pré-Runtime: faz verificações para memoização, configura a construção de escopos e cria funções específicas para executar cada nó da AST.
- Runtime: execução recursiva dos nós e verificações de erros.
- Shadowing
- Memoização automática
- Usa int64 como padrão e, caso necessário, faz conversão automática em runtime para bigint.
- Descreve erros em runtime indicando a linha/coluna e o código do trecho problemático.
- Suporta recursões profundas.
Intel(R) Core(TM) i5-9600KF CPU @ 3.70GHz
Exemplo | Altair |
---|---|
fib(46) | ~0.0005 secs |
fib(430000) | ~6.1 secs |
hanoi(420000) | ~15.0 secs |
sum(420000) | ~0.82 secs |
go run . ./examples/fib.json
Dependências:
cargo install rinha
Execução dos testes:
go test -v ./interpreter
ou
go run . ./examples/fib.rinha time