TOML konfiguráció (.toml)

TOML Szabvány

A Tom's Obvious Minimal Language (TOML) egy egyértelmű, emberközpontú konfigurációs formátum, amelyet a GitHub társalapítója, Tom Preston-Werner hozott létre, és amelyet széles körben alkalmaznak a modern programozási ökoszisztémákban, beleértve a Rustot (Cargo) és a Pythont (pyproject.toml).

TOML konvertálása erre: JSON

Ingyenes, böngészőben használható TOML-konverter JSON formátumba. A fájlokat azonnal konvertálhatja az eszközén.

Vizsgálat és metaadatok

Az operációs rendszerek és a fájlelemzők a kezdő bináris bájtsorozat vizsgálatával azonosítják a(z) TOML fájlokat:

Válasszon ki vagy húzzon ide fájlokat

Privát - a fájlok soha nem hagyják el az eszközét

vagy beillesztés Ctrl+V
Adatvédelmi garancia hálózati adatátvitel nélkül: 0 bájt került fel külső szerverekre. Minden feldolgozás helyben, a böngésző elkülönített környezetében történt.

Bájtszintű fejlécaláírás (fájlazonosító bájtok)

Az operációs rendszerek és a fájlelemzők a kezdő bináris bájtsorozat vizsgálatával azonosítják a(z) TOML fájlokat:

HEX ALÁÍRÁS (ELTOLÁS 0):

5B ... 5D

ASCII ÁBRÁZOLÁS: [...]

Szabványosítás: TOML v1.0.0 Specification

Műszaki specifikációk

Konténer architektúraEmber által olvasható konfigurációs fájl, amely egyértelműen hashtáblára képezhető le; [tables] fejléceket és kulcs = érték párokat tartalmaz
TömörítésTömörítetlen szövegfolyam
BájtsorrendUTF-8 szövegfolyam
SzínterekNem alkalmazható (konfigurációs fájl)
Csatornák és struktúraTáblák, táblák tömbjei, beágyazott táblák, karakterláncok, egész számok, lebegőpontos számok, logikai értékek és RFC 3339 dátum-idő értékek
Max. méretekA szöveg hossza nincs korlátozva
ÁtlátszóságNincs
Streaming és progresszívSzekvenciális, sorról sorra történő konfigurációelemzés

Műszaki összehasonlító mátrix: TOML vs. versenytársak

Technikai attribútumTOML (Jelenlegi)YAMLJSONINI
Kétértelműségi kockázatNulla (szigorúan egyértelmű specifikáció)Magas (YAML 'Norvégia-probléma' logikai hibák)Nulla (szigorú adattípusok)Mérsékelt (nincs hivatalos szabvány)
Natív dátum-idő típusokNatív RFC 3339-dátum- és időtámogatásImplicit karakterlánc- és dátumelemzésNincs (csak karakterláncok)Nincs (csak karakterláncok)
Megjegyzések támogatásaNatív (#-jellel jelölt megjegyzések)Natív (#-jellel jelölt megjegyzések)Megjegyzések nem engedélyezettekNatív (; és # megjegyzések)
Elsődleges ökoszisztémaRust (Cargo), Python (PEP 518), GoKubernetes, Ansible, CI/CD-munkafolyamatokWebes API-k, böngészőkommunikációRégi Windows-rendszerek, Git-konfiguráció

Gyakori sérülési módok és hexadecimális helyreállítási útmutató

Elemzőhiba: „Duplicate key in table” vagy „Invalid table header”.

Kiváltó ok: Meglévő kulcs vagy táblanévtér újradefiniálásának kísérlete a dokumentumon belül.

Helyreállítás: Érvényesítse és formázza újra a TOML szintaxist a File2File.app TOML Formatter segítségével.

Biztonsági elemzés és elemző (parser) támadási vektorok

A TOML-elemzőknek védekezniük kell a prototípus-szennyezés és a kóros táblatömb-beágyazás miatti CPU-kimerülés ellen.

Ismert támadási vektorok

  • Prototípus-szennyezés a JavaScript TOML-elemzőkben, amelyek tulajdonságokat fecskendeznek be az Object.prototype-ba.
  • Szolgáltatásmegtagadás (DoS) a mélyen beágyazott táblatömb-deklarációk révén.
  • Korlátlan memóriafoglalás hatalmas beágyazott tömbök elemzése közben.

Ajánlott védekezési módszerek: Érvényesítse a táblák beágyazási korlátait, és használjon prototípus-szennyezés szempontjából biztonságos szótárobjektumokat.

Történeti háttér és mérföldkövek

2021Hivatalosan megjelenik a TOML v1.0.0, rögzítve az alapvető szintaxisszabványt.
2018A Python szabványosítja a 'pyproject.toml' fájlt (PEP 518) modern buildkonfigurációs szabványként.
2013Tom Preston-Werner közzéteszi a TOML-t, hogy tiszta konfigurációs formátumot biztosítson a YAML összetessége nélkül.

Főbb előnyök

  • Teljesen egyértelmű: tisztán és kiszámíthatóan képezhető le hashtáblára, meglepő típuskényszerítés nélkül.
  • Első osztályú natív dátum- és időtámogatás (RFC 3339 időbélyegek, dátumok, idők) karakterláncok escape-elése nélkül.
  • A modern programozási nyelvek eszközeinek hivatalos konfigurációs formátumaként fogadták el (Rust Cargo.toml, Python pyproject.toml).

Technikai korlátok és hátrányok

  • A mélyen beágyazott, többszintű objektumfák bőbeszédűvé válhatnak a YAML-hez képest.
  • A táblatömbök szintaxisa ([[table.array]]) kezdők számára nem mindig magától értetődő.
  • Kevésbé kompakt, mint a JSON a nagy áteresztőképességű gép-gép közötti API-k közötti nagy adatforgalmú adatcseréhez.

Érdekes technikai tudnivalók

  • A TOML-t Tom Preston-Werner készítette, aki szintén társalapítója volt a GitHubnak, valamint megalkotta a Gravatart és a SemVert (Szemantikus Verziószámozás).
  • A Cargo-csomagok a Cargo.toml fájlban adják meg a metaadatokat, függőségeket és célokat; más buildrendszerű Rust-projektek eltérő fájlokat használhatnak.
  • A JSON-nel ellentétben a TOML natívan támogatja a megjegyzéseket (a '#' karakter használatával) és a többsoros karakterláncokat.

Gyakran Ismételt Műszaki Kérdések

Mire használatos a TOML?

A TOML-t szoftverkonfigurációhoz használják, leginkább a Rust Cargo.toml fájljában, a Python pyproject.toml fájljában, a Go Hugo konfigurációiban és a konténereszközökben.

Miért részesítik előnyben a TOML-t a YAML-lel szemben a konfigurációhoz?

A TOML elkerüli a YAML hírhedt szélső esetekben előforduló elemzési hibáit (például amikor az idézőjel nélküli 'NO' hamis logikai értékké változik), miközben a megjegyzések és az áttekinthető táblák révén emberbarát marad.

Hogyan alakíthatom át a TOML-t JSON-ba vagy YAML-be?

A TOML-fájlok azonnal JSON- vagy YAML-formátumba konvertálhatók a File2File.app segítségével, közvetlenül a böngészőben.