TOML конфиг (.toml)

TOML Стандарт

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

Конвертиране от TOML към JSON

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

Проверка и метаданни

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

Изберете или пуснете файлове тук

Поверително - файловете никога не напускат устройството ви

или поставете Ctrl+V
Гаранция за поверителност с нулево мрежово предаване: 0 байта са качени на външни сървъри. Цялата обработка се извършва локално в пясъчниците на вашия браузър.

Байтов подпис на заглавката (сигнатурни байтове)

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

HEX ПОДПИС (ОФСЕТ 0):

5B ... 5D

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

Стандартизация: TOML v1.0.0 Specification

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

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

Техническа сравнителна матрица: 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.app 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 използват Cargo.toml за метаданни, зависимости и цели; Rust проектите с други системи за изграждане може да използват различни файлове.
  • За разлика от JSON, TOML поддържа естествено коментари (чрез знака '#') и многоредкови низове.

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

За какво се използва TOML?

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

Защо TOML е за предпочитане пред YAML за конфигурация?

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

Как мога да конвертирам TOML в JSON или YAML?

Можете незабавно да конвертирате TOML файлове в JSON или YAML с помощта на File2File.app директно във вашия уеб браузър.