TOML vs YAML: qual formato de config?
TOML é um formato de config explícito e fácil de parsear com tipos claros; YAML é flexível e profundamente aninhável, mas tem mais armadilhas de parsing.
TOML busca configuração óbvia e inequívoca com tabelas e tipos explícitos, popular em Rust (Cargo), Python (pyproject.toml) e muitas ferramentas. YAML é mais compacto para aninhamento profundo e suporta anchors e comentários, dominando workflows de CI e manifests do Kubernetes, mas sua tipagem frouxa e sensibilidade a espaço em branco causam bugs sutis. TOML favorece clareza e config plana; YAML favorece estruturas profundas e flexíveis.
| TOML | YAML | |
|---|---|---|
| Estilo | Tabelas explícitas | Aninhamento indentado |
| Tipos | Explícitos, claros | Inferidos (armadilhas) |
| Aninhamento profundo | Verboso | Compacto |
| Comentários | Sim | Sim |
| Melhor para | Config de app/ferramenta | CI, K8s, config profunda |
Caso de uso e estrutura
TOML combina com configuração de aplicação e ferramenta que é majoritariamente chave-valor plana com seções, onde legibilidade e tipos previsíveis importam (pyproject.toml, Cargo.toml). YAML combina com config profundamente aninhada e ecossistemas que se padronizaram nele (GitHub Actions, Kubernetes), aceitando suas peculiaridades de espaço em branco e tipagem.
No CI
TOML parseia de forma previsível com menos surpresas; YAML se beneficia de lint e validação de schema para pegar problemas de indentação e tipo. Ambos rodam em managed runners, onde runners mais rápidos encurtam os passos de lint/validação.
O veredito
Config de aplicação ou ferramenta que é plana, explícita e com tipos previsíveis: TOML. Config profundamente aninhada ou ecossistemas construídos em torno dela (CI, Kubernetes): YAML. A escolha costuma ser ditada pela ferramenta; onde você tem liberdade, TOML reduz armadilhas e YAML lida melhor com estrutura profunda.