TOML konfigūracija (.toml)

TOML Standartinis

Tom's Obvious Minimal Language (TOML) yra vienareikšmis, į žmogų orientuotas konfigūracijos formatas, kurį sukūrė „GitHub" bendraįkūrėjas Tomas Prestonas-Werneris. Jis plačiai naudojamas šiuolaikinėse programuotojų ekosistemose, įskaitant „Rust" („Cargo") ir „Python" („pyproject.toml").

Konvertuoti TOML į JSON

Nemokamas TOML į JSON konverteris naršyklėje. Konvertuokite failus akimirksniu savo įrenginyje.

Tikrinti ir metaduomenys

Operacinės sistemos ir failų analizatoriai atpažįsta TOML failus tikrindami pradinę dvejetainę baitų seką:

Pasirinkite arba nuvilkite failus čia

100% privatus konvertavimas naršyklėje - failai niekada nepalieka jūsų įrenginio

arba įklijuokite Ctrl+V
Nulinio tinklo perdavimo privatumo garantija: 0 baitų įkelta į išorinius serverius. Visas apdorojimas vyko vietoje, jūsų naršyklės smėlio dėžėje (sandbox).

Baitų lygio antraštės parašas (magiškieji baitai)

Operacinės sistemos ir failų analizatoriai atpažįsta TOML failus tikrindami pradinę dvejetainę baitų seką:

ŠEŠIOLIKTAINIS PARAŠAS (POSLINKIS 0):

5B ... 5D

ASCII ATVAIZDAVIMAS: [...]

Standartizacija: TOML v1.0.0 Specification

Techninės specifikacijos

Konteinerio architektūraHuman-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs
GlaudinimasUncompressed text stream
Baitų seka (Endianness)UTF-8 text stream
Spalvų erdvėsN/A (Configuration File)
Kanalai ir struktūraTables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes
Maksimalūs matmenysUnbounded text length
SkaidrumasNone
Srautas ir progresyvusis įkėlimasSequential line-by-line configuration parsing

Techninė palyginimo matrica: TOML vs konkurentai

Techninis atributasTOML (Dabartinis)YAMLJSONINI
Ambiguitiškumo rizikaNulinė (griežtai vienareikšmė specifikacija)Didelė („YAML" Norvegijos problemos Būlio logikos klaidos)Nulinė (griežti duomenų tipai)Vidutinė (nėra oficialaus standarto)
Vietiniai datos/laiko tipaiVietinis RFC 3339 datos ir laiko palaikymasNetiesioginis eilučių / datų analizavimasNėra (tik eilutės)Nėra (tik eilutės)
Komentarų palaikymasVietinis (# komentarai)Vietinis (# komentarai)Komentarai neleidžiamiVietinis (; ir # komentarai)
Pagrindinė ekosistema„Rust" („Cargo"), „Python" (PEP 518), „Go"„Kubernetes", „Ansible", CI/CD konvejeriaiŽiniatinklio API, naršyklės ryšysPasenusi „Windows", „Git" konfigūracija

Dažni sugadinimo režimai ir šešioliktainio atkūrimo vadovas

Analizatoriaus klaida: „Duplicate key in table" arba „Invalid table header".

Pirminė priežastis: Bandymas dokumente iš naujo apibrėžti esamą raktą arba lentelės vardų sritį.

Atkūrimas: Patvirtinkite ir iš naujo suformatuokite TOML sintaksę naudodami „File2File TOML" formatuotuvą.

Saugumo analizė ir analizatoriaus atakos vektoriai

TOML analizatoriai turi apsisaugoti nuo prototipų taršos ir procesoriaus išsekimo dėl patologinio lentelių masyvų įdėjimo.

Žinomi atakos vektoriai

  • Prototipų tarša „JavaScript TOML" analizatoriuose, įpurškianti savybes į Object.prototype.
  • Paslaugos trikdymo (DoS) atakos per giliai įdėtų lentelių masyvų deklaracijas.
  • Nebūdinga atminties asignacija analizuojant didžiulius vidinius masyvus.

Geriausia apsaugos praktika:

Istorinė kilmė ir svarbiausi etapai

2021Oficialiai išleista TOML v1.0.0 versija, užfiksuojanti pagrindinę sintaksės specifikaciją.
2018„Python" standartizuoja „pyproject.toml" (PEP 518) kaip šiuolaikinį kūrimo konfigūracijos standartą.
2013Tomas Prestonas-Werneris išleidžia TOML, siekdamas sukurti švarų konfigūracijos formatą be „YAML" sudėtingumo.

Pagrindiniai privalumai

  • Visiškai vienareikšmis: švariai ir nuspėjamai susiejamas su maišos lentele be jokių netikėtų tipo pertvarkymų.
  • Pirmos klasės vietinis datos ir laiko palaikymas (RFC 3339 laiko žymos, datos, laikai) be eilučių kaitos simbolių.
  • Priimtas kaip oficialus standartinis konfigūracijos formatas šiuolaikiniams kalbos įrankiams („Rust Cargo.toml", „Python pyproject.toml").

Techniniai apribojimai ir trūkumai

  • Giliai įdėti daugiapakopiai objektų medžiai gali tapti pernelyg išsamių lyginant su „YAML".
  • Lentelių masyvų sintaksė ([[table.array]]) pradedantiesiems gali būti neintuityvi.
  • Mažiau kompaktiškas nei JSON didelio pralaidumo mašinos su mašina (M2M) API duomenų mainams.

Įdomūs techniniai faktai

  • TOML sukūrė Tomas Prestonas-Werneris, kuris taip pat buvo vienas iš „GitHub" įkūrėjų bei sukūrė „Gravatar" ir „SemVer" (semantinį versionavimą).
  • „Cargo.toml" failas kiekviename „Rust" projekte apibrėžia visas paketo priklausomybes ir kompiliatoriaus vėliavėles TOML formatu.
  • Skirtingai nuo JSON, TOML iš prigimties palaiko komentarus (naudojant '#' simbolį) ir kelių eilučių eilutes.

Dažniausiai užduodami techniniai klausimai

Kam naudojamas TOML?

TOML naudojamas programinės įrangos konfigūracijai, dažniausiai „Rust“ faile Cargo.toml, „Python“ faile pyproject.toml, „Go Hugo“ konfigūracijose ir konteinerių įrankiuose.

Kodėl konfigūracijai teikiama pirmenybė TOML, o ne YAML?

TOML leidžia išvengti YAML liūdnai pagarsėjusių kraštytinių atvejų analizės klaidų (pvz., kai neįkabintos „NO“ virsta Būlio (boolean) reikšme false), kartu išlikdamas patogus žmonėms su komentarais ir aiškiomis lentelėmis.

Kaip galiu konvertuoti TOML į JSON arba YAML?

Naudodami File2File.app tiesiogiai interneto naršyklėje, galite akimirksniu konvertuoti TOML failus į JSON arba YAML.