Configuración TOML (.toml)

TOML Estándar

Tom'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:

Selecciona o arrastra archivos aquí

Conversión 100% privada en el navegador; los archivos nunca salen de tu dispositivo

o pega Ctrl+V
Garantía de privacidad sin transmisión de red: 0 bytes subidos a servidores externos. Todo el procesamiento se realizó de forma local en el entorno seguro de tu navegador.

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 ... 5D

REPRESENTACIÓN ASCII: [...]

Estandarización: TOML v1.0.0 Specification

Especificaciones técnicas

Arquitectura del contenedorArchivo de configuración legible por humanos que se asigna inequívocamente a una tabla hash, estructurada con [tablas] y pares clave = valor
CompresiónFlujo de texto sin comprimir
Orden de bytes (Endianness)Flujo de texto UTF-8
Espacios de colorN/A (Archivo de configuración)
Canales y estructuraTablas, matrices de tablas, tablas en línea, cadenas, enteros, flotantes, booleanos y fechas y horas RFC 3339
Dimensiones máximasLongitud de texto ilimitada
TransparenciaNinguna
Streaming y progresivoAnálisis de configuración secuencial línea por línea

Matriz de comparación técnica: TOML frente a la competencia

Atributo técnicoTOML (Actual)YAMLJSONINI
Riesgo de ambigüedadCero (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 horaSoporte nativo de fecha y hora RFC 3339Análisis implícito de cadenas / fechasNinguno (solo cadenas)Ninguno (solo cadenas)
Soporte de comentariosNativo (comentarios #)Nativo (comentarios #)No se permiten comentariosNativo (comentarios ; y #)
Ecosistema principalRust (Cargo), Python (PEP 518), GoKubernetes, Ansible, canales CI/CDAPI web, comunicación del navegadorWindows 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

2021Se publica formalmente TOML v1.0.0, congelando la especificación de sintaxis central.
2018Python se estandariza en 'pyproject.toml' (PEP 518) como el estándar de configuración de compilación moderno.
2013Tom Preston-Werner publica TOML para proporcionar un formato de configuración limpio sin la complejidad de YAML.

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.