Configuração TOML (.toml)
Especificação PadrãoTom'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:
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 ... 5DREPRESENTAÇÃO ASCII: [...]
Padronização: Especificação TOML v1.0.0
Especificações técnicas
| Estrutura do contêiner | Arquivo de configuração legível por humanos que representa uma tabela hash sem ambiguidades e usa seções [tables] e pares chave = valor |
| Compressão | Fluxo de texto não compactado |
| Ordem dos bytes (endianness) | Fluxo de texto UTF-8 |
| Espaços de cor | Não se aplica (arquivo de configuração) |
| Canais e Estrutura | Tabelas, 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áximas | Comprimento de texto ilimitado |
| Transparência | Nenhum |
| Streaming e Progressivo | Análise sequencial da configuração, linha por linha |
Matriz de comparação técnica: TOML e formatos concorrentes
| Atributo técnico | TOML (Atual) | YAML | JSON | INI |
|---|---|---|---|---|
| Risco de Ambiguidade | Zero (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 Nativos | Suporte nativo a data e hora RFC 3339 | Análise implícita de string / data | Nenhum (somente strings) | Nenhum (somente strings) |
| Suporte a Comentários | Nativo (comentários com #) | Nativo (comentários com #) | Nenhum comentário permitido | Nativo (comentários com ; e #) |
| Ecossistema Principal | Rust (Cargo), Python (PEP 518), Go | Kubernetes, Ansible, pipelines de CI/CD | APIs Web, comunicação de navegador | Windows 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
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.
Conversões de TOML relacionadas
Converter arquivos de configuração TOML para JSON transforma opções de configuração fáceis de ler em um objeto de dados estruturado que aplicativos web podem analisar rapidamente.
A conversão de arquivos de configuração JSON para o formato TOML simplifica a edição por pessoas, preservando todas as hierarquias de dados estruturados de chave e valor.