Configurazione TOML (.toml)

Specifica Standard

Tom's Obvious Minimal Language (TOML) è un formato di configurazione inequivocabile e incentrato sull'uomo, creato dal co-fondatore di GitHub Tom Preston-Werner, ampiamente adottato nei moderni ecosistemi di programmazione tra cui Rust (Cargo) e Python (pyproject.toml).

Converti da TOML a JSON

Convertitore gratuito da TOML a JSON nel browser. Converti i file istantaneamente sul tuo dispositivo.

Ispeziona e metadati

I sistemi operativi e gli analizzatori di file identificano i file TOML ispezionando la sequenza di byte binari iniziale:

Seleziona o rilascia i file qui

Conversione 100% privata nel browser: i file non lasciano mai il tuo dispositivo

o incolla Ctrl+V
Garanzia di privacy con zero trasmissioni di rete: 0 byte caricati su server esterni. Tutta l'elaborazione è avvenuta localmente nella sandbox del tuo browser.

Firma dell'intestazione a livello di byte (Magic Bytes)

I sistemi operativi e gli analizzatori di file identificano i file TOML ispezionando la sequenza di byte binari iniziale:

FIRMA ESADECIMALE (OFFSET 0):

5B ... 5D

RAPPRESENTAZIONE ASCII: [...]

Standardizzazione: Specifica TOML v1.0.0

Specifiche tecniche

Architettura del containerFile di configurazione leggibile dall'uomo che mappa in modo inequivocabile su una tabella hash, strutturato con [tabelle] e coppie chiave = valore
CompressioneFlusso di testo non compresso
Endianness dei byteFlusso di testo UTF-8
Spazi coloreN/D (File di configurazione)
Canali e strutturaTabelle, array di tabelle, tabelle inline, stringhe, interi, numeri in virgola mobile, booleani e date/ore RFC 3339
Dimensioni massimeLunghezza del testo illimitata
TrasparenzaNessuna
Streaming e progressivoAnalisi della configurazione sequenziale riga per riga

Matrice di confronto tecnico: TOML vs Concorrenti

Attributo tecnicoTOML (Corrente)YAMLJSONINI
Rischio di ambiguitàZero (specifica rigorosamente inequivocabile)Alto (bug booleani del 'problema Norvegia' in YAML)Zero (tipi di dati rigorosi)Moderato (nessuno standard formale)
Tipi di data e ora nativiSupporto nativo per date e orari RFC 3339Analisi implicita di stringhe / dateNessuno (solo stringhe)Nessuno (solo stringhe)
Supporto ai commentiNativo (commenti con #)Nativo (commenti con #)Nessun commento consentitoNativo (commenti con ; e #)
Ecosistema principaleRust (Cargo), Python (PEP 518), GoKubernetes, Ansible, pipeline CI/CDAPI Web, comunicazione via browserWindows legacy, configurazione Git

Modalità di corruzione comuni e guida al recupero Hex

Errore del parser: 'Duplicate key in table' o 'Invalid table header'.

Causa principale: Tentativo di ridefinire una chiave esistente o un namespace di tabelle all'interno del documento.

Ripristino: Valida e riformatta la sintassi TOML utilizzando il formattatore TOML di File2File.

Analisi di sicurezza e vettori di attacco del parser

I parser TOML devono difendersi dalla contaminazione del prototipo (prototype pollution) e dall'esaurimento della CPU dovuto alla nidificazione patologica di array di tabelle.

Vettori di attacco noti

  • Contaminazione del prototipo nei parser TOML JavaScript che iniettano proprietà in Object.prototype.
  • Denial of service tramite dichiarazioni di array di tabelle profondamente nidificate.
  • Allocazione di memoria illimitata durante l'analisi di array inline massicci.

Migliori pratiche difensive: Valida i limiti di nidificazione delle tabelle e utilizza oggetti dizionario sicuri contro la contaminazione dei prototipi.

Origini storiche e tappe fondamentali

2021Rilasciata formalmente la versione TOML v1.0.0, che cristallizza la specifica della sintassi principale.
2018Python adotta ufficialmente 'pyproject.toml' (PEP 518) come standard moderno per la configurazione delle build.
2013Tom Preston-Werner pubblica TOML per fornire un formato di configurazione pulito privo della complessità di YAML.

Vantaggi principali e pro

  • Completamente inequivocabile: si mappa in modo pulito e prevedibile su una tabella hash senza alcuna sorprendente coercizione dei tipi.
  • Supporto nativo di prima classe per data e ora (timestamp, date e orari RFC 3339) senza escape delle stringhe.
  • Adottato come formato di configurazione standard ufficiale per i moderni strumenti linguistici (Rust Cargo.toml, Python pyproject.toml).

Limiti tecnici e svantaggi

  • Gli alberi di oggetti multilivello profondamente nidificati possono risultare prolissi rispetto a YAML.
  • La sintassi per gli array di tabelle ([[table.array]]) può risultare poco intuitiva per i principianti.
  • Meno compatto di JSON per lo scambio di dati API ad alte prestazioni tra macchine.

Curiosità tecniche interessanti

  • TOML è stato creato da Tom Preston-Werner, che ha anche co-fondato GitHub e creato Gravatar e SemVer (Semantic Versioning).
  • Il file 'Cargo.toml' in ogni progetto Rust specifica tutte le dipendenze del pacchetto e i flag del compilatore in formato TOML.
  • A differenza di JSON, TOML supporta nativamente i commenti (usando il carattere '#') e le stringhe multilinea.

Domande tecniche frequenti

A cosa serve TOML?

TOML viene utilizzato per la configurazione del software, in particolare in Cargo.toml di Rust, pyproject.toml di Python, nelle configurazioni di Go Hugo e negli strumenti per container.

Perché TOML è preferito a YAML per la configurazione?

TOML evita i famigerati bug di analisi dei casi limite di YAML (come la stringa non quotata 'NO' che si trasforma nel booleano false), rimanendo al contempo leggibile dall'uomo grazie ai commenti e a tabelle chiare.

Come posso convertire TOML in JSON o YAML?

Puoi convertire file TOML in JSON o YAML istantaneamente utilizzando File2File.app direttamente nel tuo browser web.