Español

Herramientas de desarrollo · Convertidores de sintaxis

Por qué existe TOML: los objetivos de diseño detrás de Cargo.toml y pyproject.toml

· Antecedentes

toml formatos de datos flujo de trabajo del desarrollador

Una tabla TOML con valores escritos asignados a un objeto simple mientras los comentarios permanecen
Ilustración de vector original de ToolAcre

TOML se creó en 2013 como reacción tanto a la austeridad de JSON como a la ambigüedad de YAML. Esta publicación explica los objetivos de diseño declarados, las opciones que produjeron y por qué Rust y Python lo estandarizaron para la configuración del proyecto.

Tres formatos de configuración en un repositorio: JSON para el editor, YAML para CI, TOML para la compilación y la pregunta de por qué existe el tercero

Un repositorio puede usar JSON, YAML y TOML para diferentes superficies de configuración. ToolAcre no puede explicar la elección de cada proyecto, pero la conversión concreta las diferencias estructurales: TOML comienza como una tabla raíz, usa encabezados y rutas de puntos para anidar y lleva valores temporales no disponibles en JSON.

Cargue el ejemplo en lugar de argumentar por la apariencia. Las tablas anidadas se convierten en objetos, las tablas con doble corchete se convierten en matrices y los comentarios desaparecen cuando los valores ingresan JSON. Esos límites observados son más procesables que una afirmación genérica de que una sintaxis es inherentemente mejor.

Los objetivos del diseño: semántica mínima y obvia, fácil de leer y un formato que se asigne sin ambigüedades a una tabla hash.

El analizador enviado expone una semántica de tabla obvia: los encabezados son rutas, las asignaciones pertenecen a la tabla activa y los tokens escalares tienen tipos TOML definidos. Las cadenas no se escriben simplemente porque su contenido parezca fechas; La sintaxis temporal real produce objetos de fecha que ToolAcre normaliza deliberadamente.

El repositorio no proporciona los creadores del formato, las fechas o la filosofía declarada, por lo que este artículo evita presentar la historia recordada como un hecho. Informa el comportamiento probado en smol-toml y la propia capa de normalización del convertidor.

Propiedades de diseño observables en el analizador enviado, sin afirmaciones de origen sin fuente

TOML no tiene ningún valor nulo y la raíz de su documento no puede ser una matriz o un escalar. No proporciona anclajes ni alias de estilo YAML en esta asignación. Los comentarios existen en TOML de autor, pero el analizador de valores no los retiene y, por lo tanto, no pueden sobrevivir a la conversión a través de JSON o YAML.

Los valores básicos sin comillas siguen la gramática TOML en lugar de la selección de esquema de YAML. El analizador acepta un valor escrito o informa TOML no válido con información de posición. ToolAcre no agrega un modo de cadena implícito para asignaciones con formato incorrecto.

Lo que el modelo de valor admitido excluye o maneja de manera diferente

El modelo incluye cadenas, enteros con signo, flotantes, booleanos, cuatro tipos temporales, matrices y tablas. Los conjuntos de tablas expresan registros de objetos repetidos. Los enteros grandes con signo más allá de 2^53 se convierten en cadenas decimales en la conversión, por lo que JavaScript no los redondea silenciosamente.

Los valores temporales se convierten en texto orientado al origen para fecha y hora compensadas, fecha y hora local, fecha local u hora local. La advertencia conserva el tipo en prosa, pero JSON recibe solo una cadena. Por lo tanto, la conversión posterior lo cita y pierde el tipo nativo TOML.

Adopción: carga de los primeros días de Rust, PEP 518 eligiendo pyproject.toml y la especificación 1.0.0 en 2021

La adopción de carga y pyproject son reclamaciones históricas y del ecosistema que requieren fuentes que no están presentes en el repositorio del convertidor. Se omiten aquí intencionalmente. Una ruta o nombre de archivo no es evidencia de una cronología, publicación de especificaciones o decisión de estándares.

La pregunta operativa es si la herramienta de destino lee TOML y qué tablas espera. Consulte la documentación actual de esa herramienta. Los convertidores de sintaxis conocen la sintaxis y el mapeo de valores, no los contratos de configuración del administrador de paquetes.

El historial de adopción del ecosistema se omite sin fuentes de repositorio

El anidamiento profundo puede ser más difícil de analizar porque el contexto de la tabla persiste a lo largo de las líneas, mientras que grandes conjuntos de tablas distribuyen una lista lógica en encabezados repetidos. JSON hace explícita la jerarquía completa pero agrega llaves y comillas. Ninguna representación elimina la complejidad de la configuración subyacente.

El analizador limita el anidamiento en 100 y la longitud del origen en dos millones de caracteres. Esos son límites de rechazo, no declaraciones sobre el tamaño de configuración ideal o límites universales TOML.

Lo que esto no cubre: TOML elección del analizador en cada idioma y la naturaleza de solo lectura de algunas implementaciones de biblioteca estándar

La elección del analizador en cada idioma está fuera del alcance, al igual que las capacidades de escritura de la biblioteca estándar. ToolAcre usa smol-toml dinámicamente y envuelve sus errores. Otra implementación puede formatear una salida válida de manera diferente o exponer otra API mientras representa los mismos datos.

Utilice accesorios de herramientas cruzadas para valores temporales, números enteros grandes, matrices y claves de puntos cuando la interoperabilidad sea importante. Un archivo aceptado aquí no lo aceptan automáticamente todos los consumidores TOML.

Conclusión: TOML tiene opiniones sobre ser un formato de configuración y cómo el panel de convertidores de sintaxis le permite ver cualquier archivo JSON o YAML en esa forma.

TOML tiene opiniones de maneras observables: raíz de tabla, valores escritos explícitos, tipos temporales nativos y sin nulos. La conversión expone esas opciones y sus incompatibilidades con objetivos en forma de JSON sin necesidad de un mito de origen.

Utilice el panel para inspeccionar un árbol e identificar advertencias. Luego regrese al esquema del destino y cree el diseño de la tabla que mantendrán los humanos. El convertidor proporciona evidencia sobre los valores, no un veredicto sobre la preferencia de formato.

La misma disciplina se aplica cuando TOML es solo una vista intermedia. Conserve la fuente, compare valores normalizados y observe cada conversión temporal o de entero ancho antes de juzgar la legibilidad. Un diseño de tabla compacto aún puede ocultar un tipo modificado, mientras que una matriz detallada de tablas puede ser semánticamente exacta. La elección del formato debe seguir el contrato de configuración y el flujo de trabajo de mantenimiento, no la pulcritud visual de una muestra generada.