TOML конфиг (.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 Specification

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

Контейнерна архитектураHuman-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs
КомпресияUncompressed text stream
Поредност на байтовете (Endianness)UTF-8 text stream
Цветови пространстваN/A (Configuration File)
Канали и структураTables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes
Максимални размериUnbounded text length
ПрозрачностNone
Стрийминг и прогресивно зарежданеSequential line-by-line configuration parsing

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

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

Често срещани режими на повреда и ръководство за хекс възстановяване

Грешка на парсера: 'Duplicate key in table' или 'Invalid table header'.

Първопричина: Опит за повторно дефиниране на съществуващ ключ или пространство от имена на таблица в документа.

Възстановяване: Валидирайте и преформатирайте TOML синтаксиса с помощта на File2File TOML Formatter.

Анализ на сигурността и вектори на атака към парсера

TOML парсерите трябва да се пазят от замърсяване на прототипите и изчерпване на процесора от патологично вложени масиви от таблици.

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

  • Замърсяване на прототипи в 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 директно във вашия уеб браузър.