Configuración TOML (.toml)
TOML EstándarTom’s Obvious Minimal Language (TOML) es un formato de configuración inequívoco y fácil de leer, creado por el cofundador de GitHub, Tom Preston-Werner. Se usa ampliamente en ecosistemas modernos, como Rust (Cargo) y Python (pyproject.toml).
Convertir de TOML a JSON
Convertidor gratuito de TOML a JSON en el navegador. Convierte archivos al instante en tu dispositivo.
Inspección y metadatos
Los sistemas operativos y analizadores de archivos identifican los archivos de TOML inspeccionando la secuencia de bytes binarios inicial:
Firma de cabecera a nivel de bytes (bytes mágicos)
Los sistemas operativos y analizadores de archivos identifican los archivos de TOML inspeccionando la secuencia de bytes binarios inicial:
FIRMA HEXADECIMAL (DESPLAZAMIENTO 0):
5B ... 5DREPRESENTACIÓN ASCII: [...]
Estandarización: TOML v1.0.0 Specification
Especificaciones técnicas
| Arquitectura del contenedor | Archivo de configuración legible que se representa sin ambigüedades como una tabla hash y se estructura mediante [tablas] y pares clave = valor |
| Compresión | Flujo de texto sin comprimir |
| Orden de bytes (Endianness) | Flujo de texto UTF-8 |
| Espacios de color | N/A (Archivo de configuración) |
| Canales y estructura | Tablas, matrices de tablas, tablas en línea, cadenas, enteros, números decimales, booleanos y fechas y horas RFC 3339 |
| Dimensiones máximas | Longitud de texto ilimitada |
| Transparencia | Ninguna |
| Streaming y progresivo | Análisis secuencial de archivos de configuración, línea por línea |
Matriz de comparación técnica: TOML frente a la competencia
| Atributo técnico | TOML (Actual) | YAML | JSON | INI |
|---|---|---|---|---|
| Riesgo de ambigüedad | Cero (especificación estrictamente inequívoca) | Alto (errores de interpretación de valores booleanos del «problema de Noruega» en YAML) | Cero (tipos de datos estrictos) | Moderado (sin estándar formal) |
| Tipos nativos de fecha y hora | Soporte nativo de fecha y hora RFC 3339 | Análisis implícito de cadenas / fechas | Ninguno (solo cadenas) | Ninguno (solo cadenas) |
| Soporte de comentarios | Nativo (comentarios #) | Nativo (comentarios #) | No se permiten comentarios | Nativo (comentarios ; y #) |
| Ecosistema principal | Rust (Cargo), Python (PEP 518), Go | Kubernetes, Ansible y procesos CI/CD | API web y comunicación con navegadores | Windows antiguo y configuración de Git |
Modos de corrupción comunes y guía de recuperación hexadecimal
El analizador muestra el error «Duplicate key in table» (clave duplicada en la tabla) o «Invalid table header» (cabecera de tabla no válida).
Causa raíz: Se intenta volver a definir una clave o un espacio de nombres de tabla que ya existe en el documento.
Recuperación: Valida y corrija la sintaxis TOML con TOML Formatter de File2File.app.
Análisis de seguridad y vectores de ataque al analizador
Los analizadores TOML deben prevenir la contaminación de prototipos y el agotamiento de la CPU por matrices de tablas anidadas de forma excesiva.
Vectores de ataque conocidos
- Contaminación de prototipos mediante analizadores TOML de JavaScript que inyectan propiedades en Object.prototype.
- Denegación de servicio mediante declaraciones de matrices de tablas con anidamiento excesivo.
- Asignación de memoria ilimitada durante el análisis masivo de matrices en línea.
Mejores prácticas defensivas: Limita los niveles de anidamiento de las tablas y usa objetos de diccionario protegidos contra la contaminación de prototipos.
Orígenes históricos e hitos
Ventajas principales
- No deja lugar a ambigüedades: se representa de forma clara y predecible como una tabla hash y no convierte tipos de manera inesperada.
- Admite de forma nativa fechas y horas RFC 3339 sin tener que escapar cadenas.
- Es el formato de configuración estándar de herramientas modernas, como Cargo.toml de Rust y pyproject.toml de Python.
Limitaciones técnicas
- Los árboles de objetos con varios niveles de anidamiento pueden ocupar más que en YAML.
- La sintaxis para matrices de tablas ([[table.array]]) puede no ser intuitiva para los principiantes.
- Menos compacto que JSON para el intercambio de datos de API de máquina a máquina de alto rendimiento.
Curiosidades técnicas interesantes
- TOML fue creado por Tom Preston-Werner, quien también cofundó GitHub y creó Gravatar y SemVer (control de versiones semántico).
- Los paquetes de Cargo usan Cargo.toml para declarar metadatos, dependencias y destinos; los proyectos Rust que emplean otros sistemas de compilación pueden usar archivos distintos.
- A diferencia de JSON, TOML admite de forma nativa comentarios (usando el carácter '#') y cadenas multilínea.
Preguntas técnicas frecuentes
¿Para qué se utiliza TOML?
TOML se usa para la configuración de software, sobre todo en Cargo.toml de Rust, pyproject.toml de Python, los archivos de configuración de Hugo y las herramientas para contenedores.
¿Por qué se prefiere TOML a YAML para la configuración?
TOML evita errores de análisis de casos límite conocidos de YAML, como interpretar «NO» sin comillas como el valor booleano false. Aun así, permite añadir comentarios y organizar los datos en tablas claras.
¿Cómo puedo convertir TOML a JSON o YAML?
Puedes convertir archivos TOML a JSON o YAML directamente en el navegador con File2File.app.
Pares de conversión de TOML relacionados
La conversión de archivos de configuración TOML al formato JSON transforma ajustes de propiedades fáciles de entender en un objeto de datos estricto que las aplicaciones web pueden analizar al instante.
Convertir archivos de configuración JSON al formato TOML facilita la edición y conserva todas las jerarquías de datos estructurados de clave y valor.