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 na JSON
Bezplatný konvertor z TOML do JSON v prohlížeči. Převeďte soubory okamžitě ve svém zařízení.
Kontrola 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 (POSUN 0):
5B ... 5DASCII REPREZENTACE: [...]
Standardizace: TOML v1.0.0 Specification
Technické specifikace
| Architektura kontejneru | Konfigurační formát v podobě tabulek a párů klíč = hodnota, který je čitelný pro člověka a jednoznačně se převádí na hashovací tabulku |
| Komprese | Nekomprimovaný textový proud |
| Pořadí bajtů | Proud textu UTF-8 |
| Barevné prostory | Nevztahuje se (konfigurační soubor) |
| Kanály a struktura | Tabulky, pole tabulek, vložené tabulky, řetězce, celá čísla, desetinná čísla, booleovské hodnoty a datum a čas podle RFC 3339 |
| Max. rozměry | Délka textu není omezená |
| Průhlednost | Žádná |
| Streamování a progresivní načítání | Sekvenční parsování konfigurace po jednotlivých řádcích |
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řeformátujte syntaxi TOML pomocí nástroje File2File.app 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.
- Neomezená alokace paměti při parsování rozsáhlých inline polí.
Doporučené bezpečnostní postupy: Ověřte limity vnoření tabulek a používejte objekty slovníku odolné vůči znečištění prototypu.
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 vnořené 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í).
- Balíčky Cargo používají Cargo.toml k uvedení metadat, závislostí a cílů; projekty Rust využívající jiné systémy sestavení mohou používat jiné soubory.
- 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á ke konfiguraci softwaru, zejména v souborech Cargo.toml pro Rust a pyproject.toml pro Python, v konfiguracích Go Hugo a v 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í 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.