Configurazione TOML (.toml)

Specifica Standard

Tom’s Obvious Minimal Language (TOML) è un formato di configurazione chiaro e leggibile, creato dal cofondatore di GitHub Tom Preston-Werner e adottato in molti 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.

Ispezione 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

Privato - 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 contenitoreFile 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 sequenziale della configurazione, riga per riga

Matrice di confronto tecnico: TOML vs Concorrenti

Attributo tecnicoTOML (Attuale)YAMLJSONINI
Rischio di ambiguitàZero (specifica rigorosamente inequivocabile)Elevato (bug di conversione dei valori booleani, come il “problema Norvegia” di 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 di CI/CDAPI Web, comunicazione via browserversioni obsolete di Windows, configurazione Git

Modalità di corruzione comuni e guida al recupero esadecimale

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.app.

Analisi di sicurezza e vettori di attacco del parser

I parser TOML devono proteggersi dalla contaminazione dei prototipi e dall’esaurimento della CPU causato da array di tabelle annidati in modo anomalo.

Vettori di attacco noti

  • Contaminazione del prototipo nei parser TOML JavaScript che iniettano proprietà in Object.prototype.
  • Interruzione del servizio tramite dichiarazioni di array di tabelle profondamente annidate.
  • 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

2021TOML v1.0.0 viene rilasciato ufficialmente e la specifica di base della sintassi viene definita in modo stabile.
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

  • Completamente inequivocabile: si traduce in modo chiaro e prevedibile in una tabella hash, senza conversioni di tipo inattese.
  • Supporto nativo di prima classe per data e ora (timestamp, date e orari RFC 3339) senza caratteri di escape nelle stringhe.
  • Adottato come formato di configurazione standard ufficiale per i moderni strumenti per i linguaggi di programmazione (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

  • TOML è stato creato da Tom Preston-Werner, che ha anche co-fondato GitHub e creato Gravatar e SemVer (Semantic Versioning).
  • I pacchetti Cargo usano Cargo.toml per dichiarare metadati, dipendenze e target; i progetti Rust che usano altri sistemi di build possono usare file diversi.
  • 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 noti errori di interpretazione dei casi limite di YAML (per esempio, la stringa non quotata “NO” che diventa il booleano false) e resta leggibile grazie ai commenti e alle 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.