Configuración TOML (.toml)

TOML Estándar

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

Selecciona o arrastra archivos aquí

Privado - 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 que se representa sin ambigüedades como una tabla hash y se estructura mediante [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, números decimales, booleanos y fechas y horas RFC 3339
Dimensiones máximasLongitud de texto ilimitada
TransparenciaNinguna
Streaming y progresivoAná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écnicoTOML (Actual)YAMLJSONINI
Riesgo de ambigüedadCero (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 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 y procesos CI/CDAPI web y comunicación con navegadoresWindows 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

2021Se publica TOML v1.0.0 y queda fijada la especificación de su sintaxis principal.
2018Python adopta «pyproject.toml» (PEP 518) como formato estándar moderno para la configuración de compilación.
2013Tom Preston-Werner publica TOML para ofrecer un formato de configuración sencillo, sin la complejidad de YAML.

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.