TOML конфиг (.toml)
TOML СтандартTom's Obvious Minimal Language (TOML) е недвусмислен, ориентиран към хората формат за конфигурация, създаден от съоснователя на GitHub Том Престън-Вернер. Той се използва широко в съвременни програмни среди, включително Rust (Cargo) и Python (pyproject.toml).
Конвертиране от TOML към JSON
Безплатен конвертор от TOML към JSON в браузъра. Конвертирайте файлове незабавно на вашето устройство.
Проверка и метаданни
Операционните системи и файловите анализатори идентифицират TOML файлове чрез проверка на началната двоична байтова последователност:
Байтов подпис на заглавката (сигнатурни байтове)
Операционните системи и файловите анализатори идентифицират TOML файлове чрез проверка на началната двоична байтова последователност:
HEX ПОДПИС (ОФСЕТ 0):
5B ... 5DASCII ПРЕДСТАВЯНЕ: [...]
Стандартизация: TOML v1.0.0 Specification
Технически спецификации
| Контейнерна архитектура | Четим за хората конфигурационен файл, който недвусмислено се преобразува в хеш-таблица и е структуриран с [таблици] и двойки ключ = стойност |
| Компресия | Некомпресиран текстов поток |
| Поредност на байтовете (Endianness) | Текстов поток в UTF-8 |
| Цветови пространства | Неприложимо (конфигурационен файл) |
| Канали и структура | Таблици, масиви от таблици, вградени таблици, низове, цели числа, числа с плаваща запетая, булеви стойности и дати и часове по RFC 3339 |
| Максимални размери | Неограничена дължина на текста |
| Прозрачност | Няма |
| Поточно предаване и прогресивно зареждане | Последователно анализиране на конфигурацията ред по ред |
Техническа сравнителна матрица: 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.app 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 използват 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 директно във вашия уеб браузър.
Свързани двойки за конвертиране на TOML
Конвертирането на TOML конфигурационни файлове в JSON формат преобразува лесни за четене от хора настройки на параметри в строг обект от данни, който уеб приложенията могат да анализират незабавно.
Преобразуването на JSON конфигурационни файлове във формат TOML улеснява редактирането от хора, като същевременно запазва всички структурирани йерархии от двойки ключ-стойност.