TOML konfig (.toml)

TOML Štandard

Tom's Obvious Minimal Language (TOML) je jednoznačný konfiguračný formát zameraný na ľudí, ktorý vytvoril spoluzakladateľ GitHubu Tom Preston-Werner a je široko používaný v moderných programovacích ekosystémoch vrátane jazyka Rust (Cargo) a Pythonu (pyproject.toml).

Konvertovať TOML do JSON

Bezplatný konvertor z TOML do JSON priamo v prehliadači. Konvertujte súbory okamžite vo svojom zariadení.

Preskúmať a metadáta

Operačné systémy a analyzátory súborov identifikujú súbory TOML kontrolou počiatočnej binárnej bajtovej sekvencie:

Vyberte alebo presuňte súbory sem

100 % súkromná konverzia v prehliadači - súbory nikdy neopustia vaše zariadenie

alebo prilepiť Ctrl+V
Záruka súkromia s nulovým prenosom do siete: 0 bajtov odovzdaných na externé servery. Všetko spracovanie prebehlo lokálne v pieskovisku vášho prehliadača.

Podpis hlavičky na úrovni bajtov (Magic Bytes)

Operačné systémy a analyzátory súborov identifikujú súbory TOML kontrolou počiatočnej binárnej bajtovej sekvencie:

HEXADECIMÁLNY PODPIS (OFFSET 0):

5B ... 5D

ASCII REPREZENTÁCIA: [...]

Štandardizácia: TOML v1.0.0 Specification

Technické špecifikácie

Architektúra kontajneraHuman-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs
KompresiaUncompressed text stream
Poradie bajtov (Endianness)UTF-8 text stream
Farebné priestoryN/A (Configuration File)
Kanály a štruktúraTables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes
Max. rozmeryUnbounded text length
PriehľadnosťNone
Streamovanie a postupné načítavanieSequential line-by-line configuration parsing

Technická porovnávacia matica: TOML vs konkurenti

Technický atribútTOML (Aktuálne)YAMLJSONINI
Riziko nejednoznačnostiNulové (prísne jednoznačná špecifikácia)Vysoké (chyby booleovských hodnôt spôsobené „nórskym problémom" v YAML)Nulové (prísne dátové typy)Stredné (bez formálneho štandardu)
Natívne typy dátumu a časuNatívna podpora dátumu a času podľa RFC 3339Implicitná analýza reťazcov / dátumovŽiadne (iba reťazce)Žiadne (iba reťazce)
Podpora komentárovNatívna (komentáre pomocou #)Natívna (komentáre pomocou #)Komentáre nie sú povolenéNatívna (komentáre pomocou ; a #)
Primárny ekosystémRust (Cargo), Python (PEP 518), GoKubernetes, Ansible, kanály CI/CDWebové rozhrania API, komunikácia v prehliadačiStaršie systémy Windows, konfigurácia Git

Bežné režimy poškodenia a príručka na obnovu v hexadecimálnom kóde

Chyba analyzátora: „Duplicate key in table" (Duplicitný kľúč v tabuľke) alebo „Invalid table header" (Neplatná hlavička tabuľky).

Hlavná príčina: Pokus o opätovnú definíciu existujúceho kľúča alebo menného priestoru tabuľky v rámci dokumentu.

Obnova: Overte a preformátujte syntax TOML pomocou formátovača TOML nástroja File2File.

Bezpečnostná analýza a vektory útokov na parser

Analyzátory TOML sa musia chrániť pred znečistením prototypov (prototype pollution) a vyčerpaním procesora v dôsledku patologického vnorenia polí tabuliek.

Známe vektory útokov

  • Znečistenie prototypov v analyzátoroch TOML pre JavaScript, ktoré vkladajú vlastnosti do objektu Object.prototype.
  • Odopretie služby (DoS) prostredníctvom hlboko vnorených deklarácií polí tabuliek.
  • Neobmedzená alokácia pamäte počas analýzy masívnych vnorených polí.

Najlepšie obranné postupy:

Historický pôvod a míľniky

2021Oficiálne vydanie TOML v1.0.0, ktorým sa zmrazila špecifikácia základnej syntaxe.
2018Python štandardizoval súbor „pyproject.toml" (PEP 518) ako moderný štandard pre konfiguráciu zostavenia.
2013Tom Preston-Werner publikoval TOML s cieľom poskytnúť čistý konfiguračný formát bez zložitosti jazyka YAML.

Kľúčové výhody a prednosti

  • Úplne jednoznačný: čisto a predvídateľne sa mapuje na tabuľku s hashmi bez prekvapujúceho vynucovania typov.
  • Prvotriedna natívna podpora pre dátum a čas (časové pečiatky, dátumy a časy podľa RFC 3339) bez potreby únikových znakov v reťazcoch.
  • Prijatý ako oficiálny štandardný konfiguračný formát pre moderné nástroje programovacích jazykov (Rust Cargo.toml, Python pyproject.toml).

Technické obmedzenia a nevýhody

  • Hlboko vnorené viacúrovňové stromové štruktúry objektov môžu byť v porovnaní s YAML obsiahlejšie.
  • Syntax pre polia tabuliek ([[table.array]]) môže byť pre začiatočníkov neintuitívna.
  • Menej kompaktný než JSON na výmenu údajov medzi strojmi v rozhraniach API s vysokou priepustnosťou.

Zaujímavé technické drobnosti

  • Formát TOML vytvoril Tom Preston-Werner, ktorý tiež spoluzaložil GitHub a vytvoril služby Gravatar a SemVer (sémantické verzovanie).
  • Súbor „Cargo.toml" v každom projekte v jazyku Rust špecifikuje všetky závislosti balíka a príznaky kompilátora vo formáte TOML.
  • Na rozdiel od formátu JSON podporuje TOML natívne komentáre (pomocou znaku „#") a viacriadkové reťazce.

Často kladené technické otázky

Na čo sa používa TOML?

TOML sa používa na konfiguráciu softvéru, najmä v súbore Cargo.toml jazyka Rust, pyproject.toml jazyka Python, konfiguráciách Go Hugo a nástrojoch pre kontajnery.

Prečo je TOML uprednostňovaný pred YAML pre konfiguráciu?

TOML sa vyhýba známym chybám analýzy YAML v hraničných prípadoch (ako napríklad keď sa neuzatvorené 'NO' zmení na booleovskú hodnotu false), pričom zostáva zrozumiteľný pre ľudí vďaka komentárom a prehľadným tabuľkám.

Ako môžem konvertovať TOML do formátu JSON alebo YAML?

Súbory TOML môžete okamžite konvertovať do formátu JSON alebo YAML pomocou File2File.app priamo vo vašom webovom prehliadači.