SOML, siglas de Sindre's Objectively Marvelous Language, es un formato de configuración diseñado para ser agradable de escribir manteniendo reglas de análisis estrictas. Su filosofía central es que el tipo de un valor debe provenir de su sintaxis, nunca de su contenido. Esta elección de diseño aborda una frustración común en YAML, donde un valor como `country: no` podría interpretarse incorrectamente como un booleano `false` porque el analizador adivina el tipo basándose en el texto. En SOML, una cadena siempre debe tener comillas; sin ellas, un valor debe ser un número, fecha, instante, duración, palabra clave, o de lo contrario el archivo resultará en un error.
SOML se distingue tanto de JSON como de YAML al eliminar 'ruidos' y 'comodidades' específicos que considera problemáticos. Elimina las llaves, comillas y comas requeridas por JSON, y permite colocar comentarios en casi cualquier lugar. Sin embargo, conserva la rigurosidad de JSON al prohibir claves duplicadas y asegurar que tipos como enteros y flotantes permanezcan distintos (por ejemplo, `3` y `3.0` son tipos diferentes). A diferencia de YAML, que puede ser impredecible entre diferentes analizadores, SOML utiliza una sintaxis única para listas y mapas y proporciona soporte nativo para fechas, instantes y duraciones. Por ejemplo, una duración como `30s` se trata como un valor real, eliminando la necesidad de que el lector adivine la unidad de un número sin formato.
En comparación con TOML, SOML introduce características como arreglos de nivel superior y comentarios de bloque mientras aborda los problemas de 'alcance oculto' de TOML. En TOML, el significado de una clave puede depender de lo que vino antes, y las rutas con puntos pueden comportarse de manera diferente dependiendo del analizador. SOML utiliza llaves para hacer que los límites de los objetos sean explícitos, asegurando que una clave siempre pertenezca a las llaves que la rodean. Además, SOML proporciona una forma canónica donde los valores iguales resultan en bytes iguales, lo cual es esencial para el hash y la firma. Si bien el proyecto se encuentra actualmente en una fase de especificación de borrador, incluye una suite de conformidad de casi 1,000 casos para asegurar que cada implementación lea un archivo de la misma manera exacta. Sin embargo, debido a que es un borrador, actualmente no hay información sobre un ecosistema de producción de bibliotecas o herramientas específicas de lenguaje más allá de la suite de conformidad.
