TOML-Konfiguration (.toml)

TOML-v1.0.0-Spezifikation Standard

Tom's Obvious Minimal Language (TOML) ist ein eindeutiges, auf den Menschen ausgerichtetes Konfigurationsformat, das vom GitHub-Mitbegründer Tom Preston-Werner erstellt wurde und in modernen Programmierökosystemen wie Rust (Cargo) und Python (pyproject.toml) weit verbreitet ist.

Von TOML zu JSON konvertieren

Kostenloser Konverter von TOML zu JSON im Browser. Konvertieren Sie Dateien sofort auf Ihrem Gerät.

Untersuchen & Metadaten

Betriebssysteme und Dateianalyseprogramme identifizieren TOML-Dateien anhand der führenden binären Bytefolge:

Dateien auswählen oder hierher ziehen

Privat - Dateien verlassen Ihr Gerät nie

oder einfügen Strg+V
Datenschutzgarantie ohne Netzwerkübertragung: 0 Bytes an externe Server hochgeladen. Die gesamte Verarbeitung erfolgt lokal in Ihrer Browser-Sandbox.

Headersignatur auf Byte-Ebene (Magic Bytes)

Betriebssysteme und Dateianalyseprogramme identifizieren TOML-Dateien anhand der führenden binären Bytefolge:

HEX-SIGNATUR (OFFSET 0):

5B ... 5D

ASCII-DARSTELLUNG: [...]

Standardisierung: TOML-v1.0.0-Spezifikation

Technische Daten

Container-ArchitekturMenschenlesbare Konfigurationsdatei, die sich eindeutig auf eine Hashtabelle abbilden lässt und mit [tables] sowie Schlüssel-Wert-Paaren strukturiert ist
KompressionUnkomprimierter Textdatenstrom
Byte-ReihenfolgeUTF-8-Textdatenstrom
FarbräumeNicht zutreffend (Konfigurationsdatei)
Kanäle und StrukturTabellen, Tabellenarrays, Inline-Tabellen, Zeichenfolgen, Ganzzahlen, Gleitkommazahlen, Booleans und RFC 3339-Datums-/Zeitangaben
Max. AbmessungenUnbegrenzte Textlänge
TransparenzKeine
Streaming und progressive DarstellungSequenzielle zeilenweise Konfigurationsanalyse

Technische Vergleichsmatrix: TOML und Konkurrenzformate

Technisches AttributTOML (Aktuelles Format)YAMLJSONINI
MehrdeutigkeitsrisikoNull (streng eindeutige Spezifikation)Hoch (Boolean-Bugs beim YAML 'Norwegen-Problem')Null (strenge Datentypen)Moderat (kein formaler Standard)
Native Datums-/ZeittypenNative Unterstützung für RFC-3339-Datums- und ZeitangabenImplizite String-/DatumsanalyseKeine (nur Strings)Keine (nur Strings)
KommentarunterstützungNativ (#-Kommentare)Nativ (#-Kommentare)Keine Kommentare erlaubtNativ (; und #-Kommentare)
Primäres ÖkosystemRust (Cargo), Python (PEP 518), GoKubernetes, Ansible, CI/CD-PipelinesWeb-APIs, Browser-KommunikationLegacy Windows, Git-Konfiguration

Häufige Datenbeschädigungen und Leitfaden zur Wiederherstellung anhand von Hex-Daten

Parserfehler: 'Duplicate key in table' oder 'Invalid table header'.

Ursache: Versuch, einen vorhandenen Schlüssel oder Tabellennamensraum innerhalb des Dokuments neu zu definieren.

Wiederherstellung: Validieren und formatieren Sie die TOML-Syntax mit dem File2File.app TOML Formatter neu.

Sicherheitsanalyse und Angriffsvektoren für Parser

TOML-Parser müssen sich vor Prototype Pollution und CPU-Überlastung durch pathologische Verschachtelungen von Tabellenarrays schützen.

Bekannte Angriffsvektoren

  • Prototype Pollution in JavaScript-TOML-Parsern, bei der Eigenschaften in Object.prototype eingeschleust werden.
  • Denial of Service durch tief verschachtelte Tabellenarray-Deklarationen.
  • Unbegrenzte Speicherallokation bei der Analyse massiver Inline-Arrays.

Empfohlene Schutzmaßnahmen: Validieren Sie Tabellenverschachtelungslimits und verwenden Sie prototypverschmutzungssichere Wörterbuchobjekte.

Historische Ursprünge & Meilensteine

2021TOML v1.0.0 formell veröffentlicht, wodurch die Kernsyntaxspezifikation eingefroren wurde.
2018Python legt 'pyproject.toml' (PEP 518) als modernen Standard für Build-Konfigurationen fest.
2013Tom Preston-Werner veröffentlicht TOML, um ein sauberes Konfigurationsformat ohne die Komplexität von YAML bereitzustellen.

Hauptvorteile & Stärken

  • Vollkommen eindeutig: bildet sich sauber und vorhersehbar auf eine Hashtabelle ab, ohne überraschende Typumwandlungen.
  • Erstklassige native Datums-/Zeitunterstützung (RFC 3339-Zeitstempel, Datumsangaben, Zeiten) ohne Maskierung von Zeichenfolgen.
  • Als offizielles Standardkonfigurationsformat für moderne Sprachwerkzeuge übernommen (Rust Cargo.toml, Python pyproject.toml).

Technische Einschränkungen & Nachteile

  • Tief verschachtelte mehrstufige Objektbäume können im Vergleich zu YAML ausführlich werden.
  • Die Syntax für Tabellenarrays ([[table.array]]) kann für Anfänger nicht intuitiv sein.
  • Weniger kompakt als JSON für den API-Datenaustausch zwischen Maschinen mit hohem Durchsatz.

Interessante technische Fakten

  • TOML wurde von Tom Preston-Werner erstellt, der auch GitHub mitbegründet und Gravatar sowie SemVer (Semantic Versioning) ins Leben gerufen hat.
  • Cargo-Pakete verwenden Cargo.toml für Metadaten, Abhängigkeiten und Ziele; Rust-Projekte mit anderen Build-Systemen können andere Dateien verwenden.
  • Im Gegensatz zu JSON unterstützt TOML nativ Kommentare (über das '#'-Zeichen) und mehrzeilige Zeichenfolgen.

Häufig gestellte technische Fragen

Wofür wird TOML verwendet?

TOML wird für Softwarekonfigurationen verwendet, am bekanntesten in Rusts Cargo.toml, Pythons pyproject.toml, Go-Hugo-Konfigurationen und Container-Tools.

Warum wird TOML gegenüber YAML für Konfigurationen bevorzugt?

TOML vermeidet die berüchtigten Edge-Case-Parsing-Bugs von YAML (wie das nicht in Anführungszeichen gesetzte 'NO', das zu dem Boolean false wird), während es durch Kommentare und klare Tabellen benutzerfreundlich bleibt.

Wie kann ich TOML in JSON oder YAML konvertieren?

Sie können TOML-Dateien direkt in Ihrem Webbrowser mit File2File.app sofort in JSON oder YAML konvertieren.