Configurație TOML (.toml)

TOML Standard

Tom's Obvious Minimal Language (TOML) este un format de configurare neambiguu, centrat pe utilizatorul uman, creat de co-fondatorul GitHub Tom Preston-Werner și adoptat pe scară largă în ecosistemele de programare moderne, inclusiv Rust (Cargo) și Python (pyproject.toml).

Convertește din TOML în JSON

Convertor gratuit din TOML în JSON direct în browser. Convertește fișiere instantaneu pe dispozitivul tău.

Inspectează și Metadate

Sistemele de operare și analizatoarele de fișiere identifică fișierele TOML prin inspectarea secvenței binare inițiale:

Selectează sau plasează fișierele aici

Conversie 100% privată în browser - fișierele nu părăsesc niciodată dispozitivul tău

sau lipește Ctrl+V
Garanție de confidențialitate cu zero transmisie în rețea: 0 octeți încărcați pe servere externe. Toată procesarea a avut loc local în sandbox-ul browserului tău.

Semnătura antetului la nivel de octet (Magic Bytes)

Sistemele de operare și analizatoarele de fișiere identifică fișierele TOML prin inspectarea secvenței binare inițiale:

SEMNĂTURĂ HEX (OFFSET 0):

5B ... 5D

REPREZENTARE ASCII: [...]

Standardizare: TOML v1.0.0 Specification

Specificații tehnice

Arhitectură containerHuman-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs
CompresieUncompressed text stream
Endianitatea octețilorUTF-8 text stream
Spații de culoareN/A (Configuration File)
Canale și structurăTables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes
Dimensiuni maximeUnbounded text length
TransparențăNone
Streaming și progresivSequential line-by-line configuration parsing

Matrice de comparație tehnică: TOML vs Competitori

Atribut tehnicTOML (Curent)YAMLJSONINI
Risc de ambiguitateZero (specificație strict neambiguă)Ridicat (erori booleene cauzate de 'problema Norvegiei' în YAML)Zero (tipuri de date stricte)Moderat (fără standard formal)
Tipuri native de dată și orăSuport nativ pentru dată și oră RFC 3339Analiză implicită a șirurilor / datelorNiciunul (doar șiruri de caractere)Niciunul (doar șiruri de caractere)
Suport pentru comentariiNativ (comentarii #)Nativ (comentarii #)Nu sunt permise comentariiNativ (comentarii ; și #)
Ecosistem principalRust (Cargo), Python (PEP 518), GoKubernetes, Ansible, conducte CI/CDAPI-uri Web, comunicare în browserWindows vechi, configurare Git

Moduri comune de corupție și ghid de recuperare hexazecimală

Eroare de analizor: 'Duplicate key in table' sau 'Invalid table header'.

Cauză principală: Încercarea de a redefini o cheie existentă sau un spațiu de nume de tabel în cadrul documentului.

Recuperare: Validați și re-formați sintaxa TOML utilizând Formatorul TOML File2File.

Analiză de securitate și vectori de atac asupra parserului

Analizoarele TOML trebuie să se protejeze împotriva poluării de prototip și a epuizării procesorului cauzate de imbricarea patologică a matricelor de tabele.

Vectori de atac cunoscuți

  • Poluarea de prototip în analizoarele TOML JavaScript, injectând proprietăți în Object.prototype.
  • Refuz de serviciu (DoS) prin declarații de matrice de tabele imbricate profund.
  • Alocare nelimitată de memorie în timpul analizei matricelor inline masive.

Cele mai bune practici de securitate:

Origini istorice și repere

2021Lansarea formală a TOML v1.0.0, care stabilizează specificația de bază a sintaxei.
2018Python standardizează 'pyproject.toml' (PEP 518) ca standard modern pentru configurarea build-ului.
2013Tom Preston-Werner publică TOML pentru a oferi un format de configurare curat, fără complexitatea YAML.

Avantaje cheie și beneficii

  • Complet neambiguu: se mapează curat și predictibil la un tabel de dispersie (hash table), fără nicio conversie surpriză de tip.
  • Suport nativ de primă clasă pentru date și timp (marcaje temporale RFC 3339, date, ore) fără evadarea șirurilor de caractere (string escaping).
  • Adoptat ca format de configurare standard oficial pentru instrumentele lingvistice moderne (Rust Cargo.toml, Python pyproject.toml).

Limitări tehnice și dezavantaje

  • Arborii de obiecte imbricați profund pe mai multe niveluri pot deveni verboși în comparație cu YAML.
  • Sintaxa pentru matrice de tabele ([[table.array]]) poate fi greu de intuit pentru începători.
  • Mai puțin compact decât JSON pentru schimbul de date API între mașini cu debit ridicat.

Curiozități tehnice interesante

  • TOML a fost creat de Tom Preston-Werner, care a co-fondat și GitHub și a creat Gravatar și SemVer (Semantic Versioning).
  • Fișierul 'Cargo.toml' din fiecare proiect Rust specifică toate dependențele pachetului și fanioanele (flags) compilatorului în format TOML.
  • Spre deosebire de JSON, TOML acceptă nativ comentarii (utilizând caracterul '#') și șiruri de caractere pe mai multe rânduri.

Întrebări tehnice frecvente

Pentru ce este folosit TOML?

TOML este folosit pentru configurarea software-ului, cel mai vizibil în Cargo.toml din Rust, pyproject.toml din Python, configurațiile Go Hugo și instrumente pentru containere.

De ce este preferat TOML în fața YAML pentru configurare?

TOML evită bugurile de parsare notorioase din YAML pentru cazurile limită (cum ar fi transformarea valorii neghilimate 'NO' în booleanul false), rămânând în același timp prietenos cu utilizatorul prin comentarii și tabele clare.

Cum pot converti TOML în JSON sau YAML?

Puteți converti fișiere TOML în JSON sau YAML instantaneu folosind File2File.app direct în browserul dumneavoastră web.