Configuração TOML (.toml)

Especificação Padrão

Tom's Obvious Minimal Language (TOML) é um formato de configuração claro e sem ambiguidades, criado por Tom Preston-Werner, cofundador do GitHub. É amplamente usado em ecossistemas modernos de programação, como Rust (Cargo) e Python (pyproject.toml).

Converter TOML para JSON

Conversor gratuito de TOML para JSON no navegador. Converta arquivos instantaneamente no seu dispositivo.

Inspeção e metadados

Sistemas operacionais e analisadores de arquivos identificam arquivos TOML pela sequência inicial de bytes:

Selecione ou solte os arquivos aqui

Privado - os arquivos nunca saem do seu dispositivo

ou colar Ctrl+V
Garantia de privacidade sem transmissão pela rede 0 bytes enviados a servidores externos. Todo o processamento ocorreu localmente no ambiente isolado do navegador.

Assinatura do arquivo em bytes (magic bytes)

Sistemas operacionais e analisadores de arquivos identificam arquivos TOML pela sequência inicial de bytes:

ASSINATURA HEXADECIMAL (DESLOCAMENTO 0):

5B ... 5D

REPRESENTAÇÃO ASCII: [...]

Padronização: Especificação TOML v1.0.0

Especificações técnicas

Estrutura do contêinerArquivo de configuração legível por humanos que representa uma tabela hash sem ambiguidades e usa seções [tables] e pares chave = valor
CompressãoFluxo de texto não compactado
Ordem dos bytes (endianness)Fluxo de texto UTF-8
Espaços de corNão se aplica (arquivo de configuração)
Canais e EstruturaTabelas, listas de tabelas, tabelas em linha, strings, números inteiros e de ponto flutuante, booleanos e datas e horas no formato RFC 3339
Dimensões MáximasComprimento de texto ilimitado
TransparênciaNenhum
Streaming e ProgressivoAnálise sequencial da configuração, linha por linha

Matriz de comparação técnica: TOML e formatos concorrentes

Atributo técnicoTOML (Atual)YAMLJSONINI
Risco de AmbiguidadeZero (especificação estritamente inequívoca)Alto (bugs booleanos do 'problema da Noruega' no YAML)Zero (tipos de dados estritos)Moderado (sem padrão formal)
Tipos de Data e Hora NativosSuporte nativo a data e hora RFC 3339Análise implícita de string / dataNenhum (somente strings)Nenhum (somente strings)
Suporte a ComentáriosNativo (comentários com #)Nativo (comentários com #)Nenhum comentário permitidoNativo (comentários com ; e #)
Ecossistema PrincipalRust (Cargo), Python (PEP 518), GoKubernetes, Ansible, pipelines de CI/CDAPIs Web, comunicação de navegadorWindows legado, configuração do Git

Modos comuns de corrupção e guia de recuperação com editor hexadecimal

Erro do analisador: 'Duplicate key in table' ou 'Invalid table header'.

Causa principal: Tentativa de redefinir uma chave existente ou namespace de tabela dentro do documento.

Recuperação: Valide e reformate a sintaxe TOML usando o Formatador TOML do File2File.app.

Análise de segurança e vetores de ataque a analisadores

Os analisadores TOML precisam se proteger contra poluição de protótipo e esgotamento da CPU causado por listas de tabelas com aninhamento patológico.

Vetores de ataque conhecidos

  • Poluição de protótipo em analisadores TOML em JavaScript injetando propriedades em Object.prototype.
  • Negação de serviço por meio de declarações de matrizes de tabelas profundamente aninhadas.
  • Alocação de memória ilimitada durante a análise massiva de matrizes embutidas.

Melhores práticas defensivas: Valide os limites de aninhamento das tabelas e use objetos de dicionário protegidos contra poluição de protótipo.

Origens históricas e marcos

2021A versão TOML 1.0.0 é lançada oficialmente, consolidando a especificação da sintaxe principal.
2018Python adota o pyproject.toml (PEP 518) como formato moderno para configuração de builds.
2013Tom Preston-Werner publica o TOML para fornecer um formato de configuração limpo sem a complexidade do YAML.

Principais vantagens

  • Sem ambiguidades: representa uma tabela hash de forma clara e previsível, sem conversões inesperadas de tipos.
  • Oferece suporte nativo a datas e horas (carimbos de data e hora, datas e horas RFC 3339), sem precisar escapar strings.
  • Adotado como o formato de configuração padrão oficial para ferramentas de linguagem modernas (Rust Cargo.toml, Python pyproject.toml).

Limitações técnicas e desvantagens

  • Árvores de objetos com muitos níveis de aninhamento podem ficar mais extensas do que em YAML.
  • A sintaxe de listas de tabelas ([[table.array]]) pode ser pouco intuitiva para iniciantes.
  • Menos compacto que o JSON para troca de dados de API máquina a máquina de alto rendimento.

Curiosidades técnicas

  • O TOML foi criado por Tom Preston-Werner, que também foi cofundador do GitHub e criou o Gravatar e o SemVer (Semantic Versioning).
  • Os pacotes Cargo usam Cargo.toml para declarar metadados, dependências e alvos; projetos Rust com outros sistemas de compilação podem usar arquivos diferentes.
  • Ao contrário do JSON, o TOML suporta nativamente comentários (usando o caractere '#') e strings multilinha.

Perguntas técnicas frequentes

Para que o TOML é usado?

TOML é usado para configurar softwares, especialmente no Cargo.toml do Rust, no pyproject.toml do Python, nas configurações do Hugo em Go e em ferramentas de contêiner.

Por que o TOML é preferido ao YAML para configuração?

O TOML evita os notórios bugs de análise de casos extremos do YAML (como um 'NO' sem aspas se transformando no booleano falso), mantendo-se fácil de ler com comentários e tabelas claras.

Como posso converter TOML para JSON ou YAML?

Você pode converter arquivos TOML para JSON ou YAML instantaneamente usando o File2File.app diretamente no seu navegador.