Configuración TOML (.toml)
TOML EstándarTom's Obvious Minimal Language (TOML) es un formato de configuración inequívoco y centrado en las personas creado por el cofundador de GitHub Tom Preston-Werner, ampliamente adoptado en ecosistemas de programación modernos, incluidos 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.
Inspeccionar 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 por humanos que se asigna inequívocamente a una tabla hash, estructurada con [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, flotantes, booleanos y fechas y horas RFC 3339 |
| Dimensiones máximas | Longitud de texto ilimitada |
| Transparencia | Ninguna |
| Streaming y progresivo | Análisis de configuración secuencial 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 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, canales CI/CD | API web, comunicación del navegador | Windows heredado, configuración de Git |
Modos de corrupción comunes y guía de recuperación hexadecimal
Error del analizador: 'Clave duplicada en la tabla' o 'Cabecera de tabla no válida'.
Causa raíz: Intento de redefinir una clave existente o un espacio de nombres de tabla dentro del documento.
Recuperación: Valida y reformatea la sintaxis TOML utilizando el formateador TOML de File2File.
Análisis de seguridad y vectores de ataque al analizador
Los analizadores TOML deben protegerse contra la contaminación de prototipos y el agotamiento de la CPU debido al anidamiento patológico de matrices de tablas.
Vectores de ataque conocidos
- Contaminación de prototipos en analizadores TOML de JavaScript que inyectan propiedades en Object.prototype.
- Denegación de servicio a través de declaraciones de matrices de tablas profundamente anidadas.
- Asignación de memoria ilimitada durante el análisis masivo de matrices en línea.
Mejores prácticas defensivas: Valida los límites de anidamiento de tablas y utiliza objetos de diccionario seguros contra la contaminación de prototipos.
Orígenes históricos e hitos
Ventajas clave y pros
- Completamente inequívoco: se asigna de forma limpia y predecible a una tabla hash con cero coerción de tipos sorprendente.
- Soporte nativo de primera clase para fechas y horas (marcas de tiempo RFC 3339, fechas y horas) sin escape de cadenas.
- Adoptado como el formato de configuración estándar oficial para herramientas de lenguajes modernos (Rust Cargo.toml, Python pyproject.toml).
Limitaciones técnicas y contras
- Los árboles de objetos multinivel profundamente anidados pueden volverse detallados en comparación con 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 API 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 (Semantic Versioning).
- El archivo 'Cargo.toml' en cada proyecto de Rust especifica todas las dependencias del paquete y los indicadores del compilador en formato TOML.
- 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 utiliza para la configuración de software, sobre todo en Cargo.toml de Rust, pyproject.toml de Python, configuraciones de Go Hugo y herramientas de contenedores.
¿Por qué se prefiere TOML a YAML para la configuración?
TOML evita los notorios errores de análisis de casos extremos de YAML (como que un 'NO' sin comillas se convierta en el booleano falso), sin dejar de ser amigable para los humanos con comentarios y tablas claras.
¿Cómo puedo convertir TOML a JSON o YAML?
Puedes convertir archivos TOML a JSON o YAML al instante utilizando File2File.app directamente en tu navegador web.
Pares de conversión de TOML relacionados
La conversión de archivos de configuración TOML al formato JSON traduce configuraciones de propiedades amigables para los humanos en un objeto de datos estricto que las aplicaciones web pueden analizar al instante.
Convertir archivos de configuración JSON al formato TOML simplifica la edición humana al tiempo que preserva todas las jerarquías estructuradas de datos de clave-valor.