TOML-konfiguratsioon (.toml)

TOML Standard

Tom's Obvious Minimal Language (TOML) on ühene, inimkeskne konfiguratsioonivorming, mille lõi GitHubi kaasasutaja Tom Preston-Werner ning mida kasutatakse laialdaselt tänapäevastes programmeerimisökosüsteemides, sealhulgas Rustis (Cargo) ja Pythonis (pyproject.toml).

Teisenda formaadist TOML formaati JSON

Tasuta TOML -> JSON konverter brauseris. Teisenda faile koheselt oma seadmes.

Kontrolli ja metaandmed

Operatsioonisüsteemid ja failianalüsaatorid tuvastavad TOML faile, kontrollides algset binaarset baidijada:

Vali või lohista failid siia

100% privaatne konversioon brauseris - failid ei lahku kunagi sinu seadmest

või kleebi Ctrl+V
Null-võrguülekande privaatsusgarantii: 0 baiti laaditakse üles välistesse serveritesse. Kogu töötlemine toimub lokaalselt sinu brauseri liivakastis.

Baidi-taseme päise allkiri (maagilised baidid)

Operatsioonisüsteemid ja failianalüsaatorid tuvastavad TOML faile, kontrollides algset binaarset baidijada:

HEX-ALLKIRI (NIHE 0):

5B ... 5D

ASCII-ESITUS: [...]

Standardiseerimine: TOML v1.0.0 Specification

Tehnilised andmed

Konteineri arhitektuurHuman-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs
TihendamineUncompressed text stream
Baitide järjekord (Endianness)UTF-8 text stream
VärviruumidN/A (Configuration File)
Kanalid ja struktuurTables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes
Max mõõtmedUnbounded text length
LäbipaistvusNone
Voogedastus ja progressiivsusSequential line-by-line configuration parsing

Tehniline võrdlusmaatriks: TOML vs konkurendid

Tehniline atribuutTOML (Praegune)YAMLJSONINI
Mitmetähenduslikkuse riskNull (rangelt ühene spetsifikatsioon)Kõrge (YAML-i 'Norra probleemi' tõeväärtuse vead)Null (ranged andmetüübid)Mõõdukas (ametlik standard puudub)
Omased kuupäeva/kellaaja tüübidOmane RFC 3339 kuupäeva ja kellaaja tugiKaudne stringi / kuupäeva analüüsPuudub (ainult stringid)Puudub (ainult stringid)
Kommentaaride tugiOmane (# kommentaarid)Omane (# kommentaarid)Kommentaarid pole lubatudOmane (; ja # kommentaarid)
PõhiökosüsteemRust (Cargo), Python (PEP 518), GoKubernetes, Ansible, CI/CD torujuhtmedVeebi API-d, brauserisuhtlusPärand-Windows, Git seadistus

Levinud riknemisvead ja heksataaste juhend

Parseri viga: 'Duplicate key in table' või 'Invalid table header'.

Juurpõhjus: Katse uuesti määratleda olemasolevat võtit või tabeli nimeruumi dokumendis.

Taastamine: Kontrollige ja vormindage TOML-i süntaks uuesti, kasutades File2File TOML-i vormindajat.

Turvaanalüüs ja parsimisründevektorid

TOML-i parserid peavad kaitsma prototüüpide saastamise ja patoloogilisest tabelite massiivide pesastamisest tuleneva protsessori kurnatuse eest.

Teadaolevad ründavektorid

  • Prototüübi saastamine JavaScripti TOML-i parserites, mis süstivad omadusi objekti Object.prototype.
  • Teenusetõkestus sügavalt pesastatud tabelite massiivide deklaratsioonide kaudu.
  • Piiramatu mälueraldis massiivse sisemise massiivi analüüsimise ajal.

Kaitsealased parimad tavad:

Ajalooline taust ja verstapostid

2021Ametlikult antakse välja TOML v1.0.0, mis külmutab põhisüntaksi spetsifikatsiooni.
2018Python võtab standardiks faili 'pyproject.toml' (PEP 518) kui kaasaegse ehituskonfiguratsiooni standardi.
2013Tom Preston-Werner avaldab TOML-i, et pakkuda puhast konfiguratsioonivormingut ilma YAML-i keerukuseta.

Peamised eelised

  • Täiesti ühene: vastendub puhtalt ja etteaimatavalt räsustruktuurile ilma üllatavate tüübiteisendusteta.
  • Esimese klassi omane kuupäeva- ja kellaajatugi (RFC 3339 ajatemplid, kuupäevad, kellaajad) ilma stringi eskaleerimiseta.
  • Võetud vastu kaasaegse keeletööriistastiku ametliku standardse konfiguratsioonivorminguna (Rust Cargo.toml, Python pyproject.toml).

Tehnilised piirangud ja puudused

  • Sügavalt pesastatud mitmetasandilised objektipuud võivad võrreldes YAML-iga muutuda mahukaks.
  • Tabelite massiivide süntaks ([[table.array]]) võib algajatele olla ebaatraditsiooniline.
  • Vähem kompaktne kui JSON suure läbilaskevõimega masinalt-masinale API-andmevahetuse jaoks.

Huvitavaid tehnilisi fakte

  • TOML-i lõi Tom Preston-Werner, kes oli ka GitHubi kaasasutaja ning lõi Gravatari ja SemVeri (semantilise versioonihalduse).
  • Igas Rusti projektis määratleb fail 'Cargo.toml' kõik paketi sõltuvused ja kompilaatori lipud TOML-vormingus.
  • Erinevalt JSON-ist toetab TOML omaselt kommentaare (kasutades märki '#') ja mitmerealisi stringe.

Korduma kippuvad tehnilised küsimused

Milleks TOML-i kasutatakse?

TOML-i kasutatakse tarkvara konfigureerimiseks, kõige märkimisväärsemalt Rusti Cargo.toml-is, Pythoni pyproject.toml-is, Go Hugo konfiguratsioonides ja konteineritööriistades.

Miks eelistatakse konfiguratsioonis YAML-ile TOML-i?

TOML hoiab ära YAML-i kurikuulsad äärmuslike juhtumite parsimise vead (näiteks tsiteerimata 'NO' muutumine tõeväärtuseks false), jäädes samas inimestele sõbralikuks tänu kommentaaridele ja selgetele tabelitele.

Kuidas ma saan TOML-i JSON-iks või YAML-iks konverteerida?

Saate TOML-failid koheselt JSON-iks või YAML-iks konverteerida File2File.app-i abil otse oma veebibrauseris.