TOML-конфигурация (.toml)

Спецификация Стандарт

Tom's Obvious Minimal Language (TOML) - это однозначный, ориентированный на человека формат конфигурации, созданный сооснователем GitHub Томом Престоном-Вернером и широко принятый в современных экосистемах программирования, включая Rust (Cargo) и Python (pyproject.toml).

Конвертировать из TOML в JSON

Бесплатный конвертер из TOML в JSON прямо в браузере. Конвертируйте файлы мгновенно на вашем устройстве.

Анализ и метаданные

Операционные системы и анализаторы файлов идентифицируют файлы TOML по начальной двоичной последовательности байтов:

Выберите или перетащите файлы сюда

100% конфиденциальное преобразование в браузере - файлы никогда не покидают ваше устройство

или вставьте Ctrl+V
Гарантия конфиденциальности без передачи по сети: 0 байт загружено на внешние серверы. Вся обработка выполняется локально в песочнице вашего браузера.

Сигнатура заголовка на уровне байтов (Magic Bytes)

Операционные системы и анализаторы файлов идентифицируют файлы TOML по начальной двоичной последовательности байтов:

HEX-СИГНАТУРА (СМЕЩЕНИЕ 0):

5B ... 5D

ПРЕДСТАВЛЕНИЕ ASCII: [...]

Стандартизация: Спецификация TOML v1.0.0

Технические спецификации

Архитектура контейнераЧитаемый человеком конфигурационный файл, однозначно отображаемый в хэш-таблицу, структурирован с помощью [таблиц] и пар ключ = значение
СжатиеНесжатый текстовый поток
Порядок байтов (Endianness)Текстовый поток UTF-8
Цветовые пространстваН/Д (Конфигурационный файл)
Каналы и структураТаблицы, массивы таблиц, встроенные таблицы, строки, целые числа, числа с плавающей точкой, логические значения и даты/время по RFC 3339
Макс. габаритыНеограниченная длина текста
ПрозрачностьОтсутствует
Потоковая передача и прогрессивная загрузкаПострочный последовательный разбор конфигурации

Техническая матрица сравнения: TOML против конкурентов

Технический атрибутTOML (Текущий)YAMLJSONINI
Риск двусмысленностиНулевой (строго однозначная спецификация)Высокий (логические ошибки «норвежской проблемы» в YAML)Нулевой (строгие типы данных)Умеренный (нет формального стандарта)
Встроенные типы даты и времениВстроенная поддержка дат и времени по RFC 3339Неявный синтаксический анализ строк и датОтсутствуют (только строки)Отсутствуют (только строки)
Поддержка комментариевВстроенная (комментарии #)Встроенная (комментарии #)Комментарии не допускаютсяВстроенная (комментарии ; и #)
Основная экосистемаRust (Cargo), Python (PEP 518), GoKubernetes, Ansible, CI/CD конвейерыВеб-API, взаимодействие с браузеромУстаревшие ОС Windows, конфигурация Git

Типичные режимы повреждения и руководство по восстановлению в HEX

Ошибка синтаксического анализа: 'Duplicate key in table' или 'Invalid table header'.

Первопричина: Попытка переопределить существующий ключ или пространство имен таблицы в документе.

Восстановление: Проверьте и переформатируйте синтаксис TOML с помощью модуля форматирования TOML в File2File.

Анализ безопасности и векторы атак на парсер

Анализаторы TOML должны защищаться от загрязнения прототипов (prototype pollution) и исчерпания ЦП из-за патологической вложенности массивов таблиц.

Известные векторы атак

  • Загрязнение прототипов в анализаторах JavaScript TOML путем внедрения свойств в Object.prototype.
  • Отказ в обслуживании (DoS) из-за глубоко вложенных объявлений массивов таблиц.
  • Неограниченное выделение памяти во время синтаксического анализа массивных встроенных массивов.

Защитные лучшие практики: Проверяйте ограничения вложенности таблиц и используйте безопасные от загрязнения прототипов объекты словарей.

Исторические истоки и вехи

2021Официальный релиз TOML v1.0.0, фиксирующий спецификацию базового синтаксиса.
2018Python стандартизирует 'pyproject.toml' (PEP 518) в качестве современного стандарта конфигурации сборки.
2013Том Престон-Вернер публикует TOML, чтобы предоставить чистый формат конфигурации без сложности YAML.

Ключевые преимущества и плюсы

  • Полная однозначность: чисто и предсказуемо отображается в хэш-таблицу без неожиданного приведения типов.
  • Первоклассная встроенная поддержка даты и времени (метки времени RFC 3339, даты, время) без экранирования строк.
  • Принят в качестве официального стандартного формата конфигурации для современных инструментов разработки (Rust Cargo.toml, Python pyproject.toml).

Технические ограничения и минусы

  • Глубоко вложенные многоуровневые деревья объектов могут быть более громоздкими по сравнению с YAML.
  • Синтаксис для массивов таблиц ([[table.array]]) может быть интуитивно непонятен новичкам.
  • Менее компактен, чем JSON, для высокопроизводительного межмашинного обмена данными через API.

Интересные технические факты

  • TOML был создан Томом Престоном-Вернером, который также является сооснователем GitHub и создателем Gravatar и SemVer (семантического версионирования).
  • Файл 'Cargo.toml' в каждом проекте Rust определяет все зависимости пакета и флаги компилятора в формате TOML.
  • В отличие от JSON, TOML нативно поддерживает комментарии (с использованием символа '#') и многострочные строки.

Часто задаваемые технические вопросы

Для чего используется TOML?

TOML используется для конфигурации программного обеспечения, наиболее заметно в Cargo.toml в Rust, pyproject.toml в Python, конфигурациях Go Hugo и инструментах для работы с контейнерами.

Почему TOML предпочитают YAML для конфигурации?

TOML позволяет избежать печально известных ошибок синтаксического анализа YAML в граничных случаях (например, когда незакавыченное слово 'NO' превращается в булево значение false), оставаясь при этом удобным для человека благодаря комментариям и понятным таблицам.

Как конвертировать TOML в JSON или YAML?

Вы можете мгновенно конвертировать файлы TOML в JSON или YAML с помощью File2File.app прямо в своем веб-браузере.