SOML: формат конфигурации, который избавляет от догадок YAML и шума JSON

SOML – A Config Format for Humans

SOML (Sindre's Objectively Marvelous Language) — новый формат конфигурации, где тип значения определяется синтаксисом, а не содержимым: '123' — строка, 123 — целое. Он убирает кавычки с ключей, запятые заменяет переносами строк, поддерживает комментарии, даты, моменты времени и длительности вроде 30s. В отличие от YAML, где country: no превращается в false, SOML строг и предсказуем. Спецификация включает каноническую форму и общий набор тестов почти на 1000 случаев.

В YAML содержимое значения определяет его тип. В SOML тип определяет синтаксис, поэтому 'no' — это строка, 3.10 — число с плавающей точкой, а 2 — целое, в любой реализации.
  1. layer8

    > что видишь, то и получаешь: […] '10.20' и 10.20 — это строка и число с плавающей точкой, ровно как написано.

    Это выглядит и недоопределённым, и неверным. Если предположить одноprecision двоичное число с плавающей точкой IEEE 754, то 10.20 на самом деле равно 10.19999980926513671875. При двойной точности это было бы 10.199999999999999289457264239899814128875732421875. Так что что видишь, то не получаешь, и ещё непонятно, что именно получишь.

    > Тип значения определяется его синтаксисом, никогда его содержимым […] allowed-origins: [

    'https://example.com'

    'https://example.org'

    ]

    Это выглядит как URL, но это строки. А если бы у вас было:

    > allowed-origins: [

    'httpș://example.com'

    'ħttps://example.org'

    ]

    Всё ещё строки, и поэтому нормально для парсера SOML, но, вероятно, недопустимая конфигурация с точки зрения типов значений на уровне приложения. Синтаксис, сообщающий вам типы, имеет ограниченную пользу, как только схема приложения имеет более конкретные представления о типах, чем язык конфигурации.

  2. lightandlight

    По иронии судьбы, проект, похоже, сгенерирован LLM.

    Я не хочу читать интерпретацию Claude о том, почему ваш проект важен. Я хочу, чтобы вы сказали мне это напрямую.

  3. ActionHank

    Честно говоря, каждый раз, когда появляется решение вроде этого, которое делает что-то более «человечным», они просто убирают структуру / синтаксис.

    Полагаю, чтобы вам не нужно было их учить, и тогда любой прохожий сможет редактировать файлы, но без этих ограничений всё сломается так сильно, обычно каким-то неочевидным образом.

    Что возвращает нас к изобретению какой-то новой «человечной» штуки, но с более неявными правилами, и цикл продолжается.

  4. mofle

    Всем привет. Я тот, кто работает над этим (человек). Это ещё рано. Это то, чего я хотел много лет, но у меня не было времени вкладываться в это до сих пор.

    Это уже используется для frontmatter моего сайта: https://github.com/sindresorhus/sindresorhus.github.com/blob...

  5. james_marks

    Из заголовка я подумал, что это спецификация для конфигурирования людей. Я не совсем понимаю, что это значит, и до сих пор разочарован, что не знаю.

Ещё за этот день

2026-11-02