TOML конфиг (.toml)
TOML СтандартTom's Obvious Minimal Language (TOML) е еднозначен конфигурационен формат, насочен към хората, създаден от съоснователя на GitHub Том Престън-Вернер и широко възприет в съвременните среди за програмиране, включително Rust (Cargo) и Python (pyproject.toml).
Конвертиране на TOML към JSON
Безплатен конвертор от TOML към JSON в браузъра. Конвертирайте файлове незабавно на вашето устройство.
Инспектиране и метаданни
Операционните системи и файловите анализатори идентифицират TOML файлове чрез проверка на началната двоична байтова последователност:
Байтов подпис на хедъра (Magic Bytes)
Операционните системи и файловите анализатори идентифицират TOML файлове чрез проверка на началната двоична байтова последователност:
HEX ПОДПИС (ОФСЕТ 0):
5B ... 5DASCII ПРЕДСТАВЯНЕ: [...]
Стандартизация: 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 (Текущ) | YAML | JSON | INI |
|---|---|---|---|---|
| Риск от двусмисленост | Нулев (строго еднозначна спецификация) | Висок (грешки с булеви стойности от „проблема с Норвегия" в YAML) | Нулев (строги типове данни) | Умерен (няма официален стандарт) |
| Борни типове дата и час | Естествена поддръжка на дата и час по RFC 3339 | Неясно парсиране на низове / дати | Няма (само низове) | Няма (само низове) |
| Поддръжка на коментари | Естествена (# коментари) | Естествена (# коментари) | Не са разрешени коментари | Естествена (; и # коментари) |
| Основна екосистема | Rust (Cargo), Python (PEP 518), Go | Kubernetes, Ansible, CI/CD пипълайн | Уеб API, браузърна комуникация | Стар софтуер за Windows, Git конфиг |
Често срещани режими на повреда и ръководство за хекс възстановяване
Грешка на парсера: 'Duplicate key in table' или 'Invalid table header'.
Първопричина: Опит за повторно дефиниране на съществуващ ключ или пространство от имена на таблица в документа.
Възстановяване: Валидирайте и преформатирайте TOML синтаксиса с помощта на File2File TOML Formatter.
Анализ на сигурността и вектори на атака към парсера
TOML парсерите трябва да се пазят от замърсяване на прототипите и изчерпване на процесора от патологично вложени масиви от таблици.
Известни вектори на атака
- Замърсяване на прототипи в JavaScript TOML парсери, инжектиращи свойства в Object.prototype.
- Отказ от услуга (DoS) чрез дълбоко вложени декларации на масиви от таблици.
- Неограничено разпределение на паметта по време на масивно парсиране на вградени масиви.
Защитни добри практики:
Исторически произход и етапи
Основни предимства и плюсове
- Напълно еднозначен: картографира се чисто и предсказуемо към хеш таблица без изненадващо принудително преобразуване на типове.
- Първокласна родна поддръжка на дата и час (времеви щампи 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 директно във вашия уеб браузър.
Свързани двойки за конвертиране на TOML
Конвертирането на TOML конфигурационни файлове в JSON формат превежда удобни за потребителя настройки на свойства в стриктен обект от данни, който уеб приложенията могат да анализират незабавно.
Конвертирането на JSON конфигурационен файл в TOML файл прехвърля данните от структура с множество скоби във формат за настройки, който е изчистен и лесен за четене от хора.