Skip to content
Latchkey

O Que É TOML? Toms Obvious Minimal Language Explicado

TOML é um formato de arquivo de configuração minimal projetado para ser fácil de ler e inequívoco de parsear, amplamente usado por ferramentas de Rust, Python e Go.

TOML ("Toms Obvious Minimal Language") busca ser o formato de config que é óbvio para um humano e inequívoco para uma máquina. Ele se parece com um arquivo INI antigo, mas com uma especificação real e tipos apropriados. Se você já abriu um Cargo.toml ou um pyproject.toml, você já leu TOML.

O que TOML é

TOML organiza a configuração em tables (seções) de pares chave-valor. Tem valores claros e tipados: strings, inteiros, floats, booleanos, datas, arrays e tables aninhadas. O objetivo de design é que haja exatamente uma forma óbvia de escrever um dado valor, o que torna arquivos TOML fáceis de ler e difíceis de parsear errado.

TOML versus INI

TOML se parece com INI - cabeçalhos de seção entre colchetes e linhas key = value - mas, diferentemente do INI, tem uma spec formal, tipos de dados reais, tables aninhadas e arrays. O comportamento do INI varia entre parsers, enquanto o TOML se comporta igual em todo lugar, e é por isso que ferramentas modernas escolheram TOML em vez de INI puro.

TOML versus YAML e JSON

Comparado ao YAML, o TOML evita a indentação com espaços significativos e as armadilhas de adivinhação de tipos, ao custo de ser mais ruidoso para dados profundamente aninhados. Comparado ao JSON, ele permite comentários e é mais amigável para editar à mão. Ele atinge um ponto ideal para configuração de ferramentas de plana a moderadamente aninhada.

TOML em CI e ferramentas

TOML é o lar da config de build e dependências para vários ecossistemas: Cargo.toml para Rust, pyproject.toml para empacotamento Python e ferramentas como ruff, e muitas configs de Go e de linters. No CI você geralmente lê TOML indiretamente - as ferramentas o parseiam - mas você pode inserir valores por template nele durante um job de release.

A pyproject.toml config
# pyproject.toml read by a CI build step
[project]
name = "myapp"
version = "1.4.0"

[tool.ruff]
line-length = 100

Por que os pipelines gostam de TOML

Como o TOML é inequívoco e amigável a comentários, ele reduz as falhas do tipo "parseou diferente do que eu quis dizer" que assolam o YAML. Para configuração de ferramentas que vive ao lado do seu código e é lida em toda execução de CI, essa previsibilidade vale a sintaxe um pouco mais verbosa.

Principais conclusões

  • TOML é um formato de config minimal e tipado com tables entre colchetes e pares key = value.
  • É como INI, mas com uma spec real, tipos de dados e tables aninhadas, então se comporta de forma consistente.
  • É o lar de config para Cargo.toml, pyproject.toml e muitas ferramentas de CLI modernas.

Guias relacionados