TOML konfiguracija (.toml)

TOML Standard

Tom's Obvious Minimal Language (TOML) je nedvoumen konfiguracijski format, osredotočen na človeka, ki ga je ustvaril soustanovitelj GitHuba Tom Preston-Werner in je široko sprejet v sodobnih programskih ekosistemih, vključno z Rustom (Cargo) in Pythonom (pyproject.toml).

Pretvori TOML v JSON

Brezplačen pretvornik iz TOML v JSON v brskalniku. Pretvorite datoteke takoj v svoji napravi.

Pregled in metapodatki

Operacijski sistemi in analizatorji datotek identificirajo datoteke TOML s pregledom vodilnega binarnega zaporedja bajtov:

Izberite ali povlecite datoteke sem

100-odstotno zasebna pretvorba v brskalniku - datoteke nikoli ne zapustijo vaše naprave

ali prilepi Ctrl+V
Jamstvo o zasebnosti brez prenosa podatkov v omrežje: 0 bajtov naloženih na zunanje strežnike. Vsa obdelava je potekala lokalno v varnem območju vašega brskalnika.

Podpis glave na ravni bajtov (Čarobni bajti)

Operacijski sistemi in analizatorji datotek identificirajo datoteke TOML s pregledom vodilnega binarnega zaporedja bajtov:

PODPIS HEX (ZAMIK 0):

5B ... 5D

REPREZENTACIJA ASCII: [...]

Standardizacija: TOML v1.0.0 Specification

Tehnične specifikacije

Arhitektura vsebnikaHuman-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs
StiskanjeUncompressed text stream
Vrstni red bajtovUTF-8 text stream
Barvni prostoriN/A (Configuration File)
Kanali in strukturaTables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes
Največje dimenzijeUnbounded text length
ProsojnostNone
Pretočno in progresivno predvajanjeSequential line-by-line configuration parsing

Tehnična primerjalna matrika: TOML proti konkurenci

Tehnični atributTOML (Trenutno)YAMLJSONINI
Tveganje dvoumnostiNičelno (strogo nedvoumna specifikacija)Visoko (hrošči z logičnimi vrednostmi zaradi 'norveškega problema' v YAML-u)Ničelno (strogi podatkovni tipi)Zmerno (brez formalnega standarda)
Izvorni tipi datumov in časovIzvorna podpora za datum in čas po RFC 3339Implicitno razčlenjevanje nizov / datumovBrez (samo nizi)Brez (samo nizi)
Podpora za komentarjeIzvorna (# komentarji)Izvorna (# komentarji)Komentarji niso dovoljeniIzvorna (; in # komentarji)
Glavni ekosistemRust (Cargo), Python (PEP 518), GoKubernetes, Ansible, cevovodi CI/CDSpletni vmesniki API, komunikacija v brskalnikuZastarel Windows, konfiguracija Git

Pogosti načini okvar in vodič za heksadecimalno obnovo

Napaka razčlenjevalnika: 'Duplicate key in table' ali 'Invalid table header'.

Glavni vzrok: Poskus ponovne opredelitve obstoječega ključa ali imenskega prostora tabele znotraj dokumenta.

Sanacija: Preverite in ponovno oblikujte skladnjo TOML z uporabo oblikovalnika TOML File2File.

Varnostna analiza in napadalni vektorji razčlenjevalnika

Razčlenjevalniki TOML se morajo braniti pred onesnaževanjem prototipov in izčrpavanjem CPE zaradi patološkega gnezdenja matrik tabel.

Znani vektorji napada

  • Onesnaževanje prototipov v razčlenjevalnikih TOML za JavaScript, ki vbrizgavajo lastnosti v Object.prototype.
  • Zavrnitev storitve prek globoko vgnezdenih deklaracij matrik tabel.
  • Neomejena dodelitev pomnilnika med razčlenjevanjem obsežnih vstavljenih matrik.

Obrambne najboljše prakse:

Zgodovinski izvor in mejniki

2021Uradno izdan TOML v1.0.0, ki zamrzne specifikacijo osrednje skladnje.
2018Python standardizira 'pyproject.toml' (PEP 518) kot sodoben standard za gradbene konfiguracije.
2013Tom Preston-Werner objavi TOML, da bi zagotovil čist konfiguracijski format brez zapletenosti YAML-a.

Ključne prednosti

  • Popolnoma nedvoumen: čisto in predvidljivo se preslikava v razpršeno tabelo z nič presenetljivimi pretvorbami tipov.
  • Prvovrstna izvorna podpora za datume in čase (časovne žige RFC 3339, datume, čase) brez ubežnih znakov za nize.
  • Sprejet kot uradni standardni konfiguracijski format za sodobna jezikovna orodja (Rust Cargo.toml, Python pyproject.toml).

Tehnične omejitve in slabosti

  • Globoko vgnezdena večnivojska drevesa objektov lahko v primerjavi z YAML-om postanejo obsežna.
  • Skladnost za tabele matrik ([[table.array]]) je lahko za začetnike neintuitivna.
  • Manj kompakten kot JSON za visokozmogljivo izmeno podatkov med napravami v API-jih.

Zanimive tehnične malenkosti

  • TOML je ustvaril Tom Preston-Werner, ki je tudi soustanovitelj GitHuba ter ustvarjalec Gravatarja in SemVerja (Semantic Versioning).
  • Datoteka 'Cargo.toml' v vsakem projektu Rust v formatu TOML določa vse odvisnosti paketa in zastavice prevajalnika.
  • Za razliko od JSON-a TOML izvorno podpira komentarje (z uporabo znaka '#') in večvrstične nize.

Pogosta tehnična vprašanja

Za kaj se uporablja TOML?

TOML se uporablja za konfiguracijo programske opreme, predvsem v datotekah Cargo.toml za Rust, pyproject.toml za Python, konfiguracijah Go Hugo in orodjih za vsebnike.

Zakaj ima TOML pred YAML prednost pri konfiguraciji?

TOML se izogiba znanim napakam YAML pri razčlenjevanju robnih primerov (kot je npr. neoznačen 'NO', ki se spremeni v logično vrednost false), hkrati pa ostaja prijazen do ljudi s komentarji in jasnimi tabelami.

Kako lahko pretvorim TOML v JSON ali YAML?

Datoteke TOML lahko takoj pretvorite v JSON ali YAML s pomočjo File2File.app neposredno v vašem spletnem brskalniku.