Konfigurace TOML (.toml)
TOML StandardníTom's Obvious Minimal Language (TOML) je jednoznačný konfigurační formát zaměřený na lidi, který vytvořil spoluzakladatel GitHubu Tom Preston-Werner. Je široce přijímaný v moderních programovacích ekosystémech včetně jazyka Rust (Cargo) a Pythonu (pyproject.toml).
Převést TOML do JSON
Bezplatný konvertor z TOML do JSON v prohlížeči. Převeďte soubory okamžitě ve svém zařízení.
Zkontrolovat a metadata
Operační systémy a analyzátory souborů identifikují soubory TOML kontrolou počáteční binární sekvence bajtů:
Podpis hlavičky na úrovni bajtů (Magic Bytes)
Operační systémy a analyzátory souborů identifikují soubory TOML kontrolou počáteční binární sekvence bajtů:
HEXADECIMÁLNÍ PODPIS (OFFSET 0):
5B ... 5DASCII REPREZENTACE: [...]
Standardizace: TOML v1.0.0 Specification
Technické specifikace
| Architektura kontejneru | Human-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs |
| Komprese | Uncompressed text stream |
| Endiantita bajtů | UTF-8 text stream |
| Barevné prostory | N/A (Configuration File) |
| Kanály a struktura | Tables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes |
| Max. rozměry | Unbounded text length |
| Průhlednost | None |
| Streamování a progresivní načítání | Sequential line-by-line configuration parsing |
Technická srovnávací matice: TOML vs konkurence
| Technický atribut | TOML (Aktuální) | YAML | JSON | INI |
|---|---|---|---|---|
| Riziko nejednoznačnosti | Žádné (přísně jednoznačná specifikace) | Vysoké (chyby booleovských hodnot kvůli 'norskému problému' v YAML) | Žádné (přísné datové typy) | Mírné (žádný formální standard) |
| Nativní typy pro datum a čas | Nativní podpora data a času dle RFC 3339 | Implicitní parsování řetězců / dat | Žádné (pouze řetězce) | Žádné (pouze řetězce) |
| Podpora komentářů | Nativní (komentáře pomocí #) | Nativní (komentáře pomocí #) | Komentáře nejsou povoleny | Nativní (komentáře pomocí ; a #) |
| Primární ekosystém | Rust (Cargo), Python (PEP 518), Go | Kubernetes, Ansible, kanály CI/CD | Webová API, komunikace v prohlížeči | Starší Windows, konfigurace Gitu |
Běžné režimy poškození a příručka pro obnovení v hex
Chyba parseru: 'Duplicate key in table' nebo 'Invalid table header'.
Hlavní příčina: Pokus o redefinici existujícího klíče nebo jmenného prostoru tabulky v rámci dokumentu.
Obnovení: Ověřte a přejděte na správnou syntaxi TOML pomocí formátovače File2File TOML Formatter.
Bezpečnostní analýza a vektory útoků na parser
Analyzátory TOML se musí chránit před znečištěním prototypu (prototype pollution) a vyčerpáním CPU v důsledku patologického vnořování polí tabulek.
Známé vektory útoků
- Znečištění prototypu v JS parserech TOML vkládající vlastnosti do Object.prototype.
- Odepření služby (DoS) prostřednictvím hluboce vnořených deklarací polí tabulek.
- Nezabezpečená alokace paměti při parsování masivních vnořených polí.
Doporučené bezpečnostní postupy:
Historický vývoj a milníky
Klíčové výhody a přednosti
- Zcela jednoznačný: mapuje se čistě a předvídatelně na tabulku hashů bez jakéhokoli překvapivého vynucování typů.
- Prvotřídní nativní podpora pro datum a čas (časová razítka, data a časy dle RFC 3339) bez nutnosti escapování řetězců.
- Přijat jako oficiální standardní konfigurační formát pro moderní jazykové nástroje (Rust Cargo.toml, Python pyproject.toml).
Technická omezení a nevýhody
- Hluboce vnucené víceúrovňové objektové stromy mohou být ve srovnání s YAML upovídanější.
- Syntaxe pro pole tabulek ([[table.array]]) může být pro začátečníky málo intuitivní.
- Méně kompaktní než JSON pro vysokorychlostní výměnu dat mezi stroji přes API.
Zajímavé technické drobnosti
- Formát TOML vytvořil Tom Preston-Werner, který je rovněž spoluzakladatelem GitHubu a autorem služeb Gravatar a SemVer (sémantického verzování).
- Soubor 'Cargo.toml' v každém projektu v jazyce Rust určuje všechny závislosti balíčků a příznaky kompilátoru ve formátu TOML.
- Na rozdíl od JSONu podporuje TOML nativně komentáře (pomocí znaku '#') a víceřádkové řetězce.
Často kladené technické otázky
K čemu se používá TOML?
TOML se používá pro konfiguraci softwaru, nejvýznamněji v Cargo.toml pro Rust, pyproject.toml pro Python, konfiguracích Go Hugo a nástrojích pro kontejnery.
Proč je TOML pro konfiguraci upřednostňován před YAML?
TOML se vyhýbá známým chybám parsování v YAML v mezních případech (jako když se neuzávorkované 'NO' změní na booleovskou hodnotu false), přičemž zůstává srozumitelný pro lidi díky komentářům a přehledným tabulkám.
Jak mohu převést TOML na JSON nebo YAML?
Soubory TOML můžete okamžitě převést na JSON nebo YAML pomocí File2File.app přímo ve vašem webovém prohlížeči.
Související konverzní páry pro TOML
Konverze konfiguračních souborů TOML do formátu JSON převádí uživatelsky přívětivá nastavení vlastností na přísný datový objekt, který webové aplikace dokážou okamžitě zpracovat.
Konverze konfiguračních souborů JSON do formátu TOML zjednodušuje ruční úpravy při zachování všech strukturovaných hierarchií klíč-hodnota.