/pt-br/projects/filo.md


Filo

· github.com/crgimenes/filo

Construí o Filo para um problema que aparece toda vez que tento dar poder de script ao usuário final sem destruir o servidor.

Os caminhos óbvios são ruins: ou a linguagem embutida é fraca demais para ser útil, ou poderosa demais para ser segura. Eu queria a outra opção – pequena o suficiente para o usuário comum escrever regras curtas (validações, expressões, lógica de campo) e fechada o suficiente para não derrubar nada.

Filo é um Lisp com sintaxe mínima. Escolhi Lisp porque é a sintaxe mais barata de implementar e a mais previsível para quem nunca programou. (+ 1 2) é evidente. (if (< idade 18) "menor" "adulto") também. Não dá pra esconder lógica em ornamento sintático.

O runtime nasceu com restrições explícitas: limite de passos, limite de recursão, timeout via context.Context, recover() em volta do executor. Nenhum script causa panic no servidor. Sem acesso a arquivo, rede ou syscall – só o que eu registro explicitamente como builtin a partir do Go.

Casos de uso que motivaram o projeto:

O nome vem do italiano filo (“fio”). Pronúncia: FEE-lo.

A documentação completa, builtins, exemplos e a API de integração com Go estão no repositório.


crg.eti.br · © 2026 Cesar Gimenes · CC BY 4.0 · github · en