Configuração TOML (.toml)
Especificação PadrãoTom's Obvious Minimal Language (TOML) é um formato de configuração sem ambiguidades e centrado em humanos, criado pelo co-fundador do GitHub, Tom Preston-Werner, e amplamente adotado em ecossistemas de programação modernos, incluindo Rust (Cargo) e Python (pyproject.toml).
Converter TOML para JSON
Conversor gratuito de TOML para JSON no navegador. Converta arquivos instantaneamente no seu dispositivo.
Inspecionar e metadados
Sistemas operacionais e analisadores de arquivos identificam arquivos TOML inspecionando a sequência de bytes binários inicial:
Assinatura de Cabeçalho em Nível de Byte (Magic Bytes)
Sistemas operacionais e analisadores de arquivos identificam arquivos TOML inspecionando a sequência de bytes binários inicial:
ASSINATURA HEX (OFFSET 0):
5B ... 5DREPRESENTAÇÃO ASCII: [...]
Padronização: Especificação TOML v1.0.0
Especificações Técnicas
| Arquitetura do Contêiner | Arquivo de configuração legível por humanos mapeando inequivocamente para uma tabela hash, estruturado com [tabelas] e pares chave = valor |
| Compressão | Fluxo de texto não compactado |
| Ordem de Bytes (Endianness) | Fluxo de texto UTF-8 |
| Espaços de Cores | N/A (Arquivo de Configuração) |
| Canais e Estrutura | Tabelas, matrizes de tabelas, tabelas embutidas, strings, inteiros, pontos flutuantes, booleanos e datas/horas do RFC 3339 |
| Dimensões Máximas | Comprimento de texto ilimitado |
| Transparência | Nenhum |
| Streaming e Progressivo | Análise de configuração sequencial linha por linha |
Matriz de Comparação Técnica: TOML vs 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 Hex
Erro do analisador: 'Duplicate key in table' ou 'Invalid table header'.
Causa Raiz: Tentativa de redefinir uma chave existente ou namespace de tabela dentro do documento.
Recuperação: Valide e reconfirme a sintaxe TOML usando o Formatador TOML do File2File.
Análise de Segurança e Vetores de Ataque ao Analisador
Os analisadores de TOML devem se proteger contra poluição de protótipo e exaustão de CPU causada por aninhamento patológico de matrizes de tabelas.
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 de tabelas e use objetos de dicionário seguros contra poluição de protótipo.
Origens Históricas e Marcos
Principais Vantagens e Prós
- Completamente sem ambiguidades: mapeia de forma limpa e previsível para uma tabela hash sem coerção de tipos surpreendente.
- Suporte nativo a dados temporais de primeira classe (carimbos de data/hora, datas e horas do RFC 3339) sem escape de 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 Contras
- Árvores de objetos multinível profundamente aninhadas podem se tornar prolixas em comparação com o YAML.
- A sintaxe para matrizes de tabelas ([[table.array]]) pode não ser 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 co-fundou o GitHub e criou o Gravatar e o SemVer (Semantic Versioning).
- O arquivo 'Cargo.toml' em cada projeto Rust especifica todas as dependências de pacotes e flags do compilador no formato TOML.
- 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?
O TOML é usado para configuração de software, mais notavelmente no Cargo.toml do Rust, pyproject.toml do Python, configurações do Go Hugo e 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 amigável aos humanos 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 web.
Pares de Conversão de TOML Relacionados
A conversão de ficheiros de configuração TOML para o formato JSON traduz definições de propriedades fáceis de utilizar por humanos num objeto de dados estrito que as aplicações web conseguem analisar instantaneamente.
A conversão de arquivos de configuração JSON para o formato TOML simplifica a edição manual, preservando todas as hierarquias de dados estruturados.