Удобочитаемый формат файла конфигурации/сериализации ASCII с комментариями и анализаторами для нескольких языков, которые сохраняют порядок и комментарии.
Мой проект сейчас использует файлы .py в качестве файлов конфигурации. Их очень сложно изменить из скриптов, нам пришлось написать собственный упрощенный парсер на Python. Конфигурационные файлы сложны, содержат много диктовок, и нам нужно их часто изменять, иногда с помощью скриптов.
Я хотел бы переместить проект в файлы конфигурации, которые поддерживают комментарии (поэтому чистый JSON отсутствует) и, в идеале, формат, который поддерживается не только Python с существующими простыми парсерами. В идеале что-то, что не слишком отличается от диктовок JSON/Python. В проекте используется множество диктовок/хешей для организации конфигурации.
На удивление сложно найти формат файла для этого варианта использования!
Кандидаты:
JSON5: было бы идеально, но есть только одна библиотека для анализа/редактирования/записи, которая сохраняет комментарии, и она написана на Javascript, который не используют серверные люди: https://github.com/noahsug/json5-writer , и она находится в Javascript.
HJSON выглядит идеально, но не может найти библиотеку, поддерживающую сохранение комментариев/ответную запись.
YAML: ruaml — только библиотека сохранения комментариев, и только Python. Было бы нормально, но он сильно отличается от JSON/Python, и было бы неплохо иметь поддержку хотя бы еще одного языка.
XML — отстой, в INI нет диктовок/хешей, eno-lang выглядит странно, в TOML нет парсера, сохраняющего комментарии, и диктовки там выглядят странно с точечной записью.
Хороший обзор темы можно найти здесь, но он датирован 2016 годом: https://kevin.burke.dev/kevin/more-comment-preserving-configuration-parsers/