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ů:

Vyberte nebo přetáhněte soubory sem

Soukromě - soubory nikdy neopustí vaše zařízení

nebo vložte Ctrl+V
Záruka ochrany soukromí s nulovým přenosem po síti: 0 bajtů odesláno na externí servery. Veškeré zpracování probíhalo lokálně v sandboxu vašeho prohlížeče.

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 ... 5D

ASCII REPREZENTACE: [...]

Standardizace: TOML v1.0.0 Specification

Technické specifikace

Architektura kontejneruKonfigurač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
KompreseNekomprimovaný textový proud
Pořadí bajtůProud textu UTF-8
Barevné prostoryNevztahuje se (konfigurační soubor)
Kanály a strukturaTabulky, pole tabulek, vložené tabulky, řetězce, celá čísla, desetinná čísla, booleovské hodnoty a datum a čas podle RFC 3339
Max. rozměryDé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ý atributTOML (Aktuální)YAMLJSONINI
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 časNativní podpora data a času dle RFC 3339Implicitní 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 povolenyNativní (komentáře pomocí ; a #)
Primární ekosystémRust (Cargo), Python (PEP 518), GoKubernetes, Ansible, kanály CI/CDWebová API, komunikace v prohlížečiStarší 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

2021Byla formálně vydána specifikace TOML v1.0.0, čímž se stabilizovala specifikace základní syntaxe.
2018Python zavádí 'pyproject.toml' (PEP 518) jako moderní standard pro konfiguraci sestavení.
2013Tom Preston-Werner publikuje TOML s cílem poskytnout čistý konfigurační formát bez složitosti jazyka YAML.

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.