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

Vyberte nebo přetáhněte soubory sem

100% soukromá konverze v prohlížeči - 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 (OFFSET 0):

5B ... 5D

ASCII REPREZENTACE: [...]

Standardizace: TOML v1.0.0 Specification

Technické specifikace

Architektura kontejneruHuman-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs
KompreseUncompressed text stream
Endiantita bajtůUTF-8 text stream
Barevné prostoryN/A (Configuration File)
Kanály a strukturaTables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes
Max. rozměryUnbounded text length
PrůhlednostNone
Streamování a progresivní načítáníSequential line-by-line configuration parsing

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ř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

2021Byla formálně vydána specifikace TOML v1.0.0, čímž se stabilizovala specifikace základní syntaxe.
2018Python standardizuje '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 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.