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 — целое, в любой реализации.
- layer8
> что видишь, то и получаешь: […] '10.20' и 10.20 — это строка и число с плавающей точкой, ровно как написано.
Это выглядит и недоопределённым, и неверным. Если предположить одноprecision двоичное число с плавающей точкой IEEE 754, то 10.20 на самом деле равно 10.19999980926513671875. При двойной точности это было бы 10.199999999999999289457264239899814128875732421875. Так что что видишь, то не получаешь, и ещё непонятно, что именно получишь.
> Тип значения определяется его синтаксисом, никогда его содержимым […] allowed-origins: [
]
Это выглядит как URL, но это строки. А если бы у вас было:
> allowed-origins: [
'httpș://example.com'
'ħttps://example.org'
]
Всё ещё строки, и поэтому нормально для парсера SOML, но, вероятно, недопустимая конфигурация с точки зрения типов значений на уровне приложения. Синтаксис, сообщающий вам типы, имеет ограниченную пользу, как только схема приложения имеет более конкретные представления о типах, чем язык конфигурации.
- lightandlight
По иронии судьбы, проект, похоже, сгенерирован LLM.
Я не хочу читать интерпретацию Claude о том, почему ваш проект важен. Я хочу, чтобы вы сказали мне это напрямую.
- ActionHank
Честно говоря, каждый раз, когда появляется решение вроде этого, которое делает что-то более «человечным», они просто убирают структуру / синтаксис.
Полагаю, чтобы вам не нужно было их учить, и тогда любой прохожий сможет редактировать файлы, но без этих ограничений всё сломается так сильно, обычно каким-то неочевидным образом.
Что возвращает нас к изобретению какой-то новой «человечной» штуки, но с более неявными правилами, и цикл продолжается.
- mofle
Всем привет. Я тот, кто работает над этим (человек). Это ещё рано. Это то, чего я хотел много лет, но у меня не было времени вкладываться в это до сих пор.
Это уже используется для frontmatter моего сайта: https://github.com/sindresorhus/sindresorhus.github.com/blob...
- james_marks
Из заголовка я подумал, что это спецификация для конфигурирования людей. Я не совсем понимаю, что это значит, и до сих пор разочарован, что не знаю.