TOML-Konfiguration (.toml)
TOML-v1.0.0-Spezifikation StandardTom'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:
Headersignatur auf Byte-Ebene (Magic Bytes)
Betriebssysteme und Dateianalyseprogramme identifizieren TOML-Dateien anhand der führenden binären Bytefolge:
HEX-SIGNATUR (OFFSET 0):
5B ... 5DASCII-DARSTELLUNG: [...]
Standardisierung: TOML-v1.0.0-Spezifikation
Technische Daten
| Container-Architektur | Menschenlesbare Konfigurationsdatei, die sich eindeutig auf eine Hashtabelle abbilden lässt und mit [tables] sowie Schlüssel-Wert-Paaren strukturiert ist |
| Kompression | Unkomprimierter Textdatenstrom |
| Byte-Reihenfolge | UTF-8-Textdatenstrom |
| Farbräume | Nicht zutreffend (Konfigurationsdatei) |
| Kanäle und Struktur | Tabellen, Tabellenarrays, Inline-Tabellen, Zeichenfolgen, Ganzzahlen, Gleitkommazahlen, Booleans und RFC 3339-Datums-/Zeitangaben |
| Max. Abmessungen | Unbegrenzte Textlänge |
| Transparenz | Keine |
| Streaming und progressive Darstellung | Sequenzielle zeilenweise Konfigurationsanalyse |
Technische Vergleichsmatrix: TOML und Konkurrenzformate
| Technisches Attribut | TOML (Aktuelles Format) | YAML | JSON | INI |
|---|---|---|---|---|
| Mehrdeutigkeitsrisiko | Null (streng eindeutige Spezifikation) | Hoch (Boolean-Bugs beim YAML 'Norwegen-Problem') | Null (strenge Datentypen) | Moderat (kein formaler Standard) |
| Native Datums-/Zeittypen | Native Unterstützung für RFC-3339-Datums- und Zeitangaben | Implizite String-/Datumsanalyse | Keine (nur Strings) | Keine (nur Strings) |
| Kommentarunterstützung | Nativ (#-Kommentare) | Nativ (#-Kommentare) | Keine Kommentare erlaubt | Nativ (; und #-Kommentare) |
| Primäres Ökosystem | Rust (Cargo), Python (PEP 518), Go | Kubernetes, Ansible, CI/CD-Pipelines | Web-APIs, Browser-Kommunikation | Legacy 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
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.
Passende TOML-Konvertierungen
Das Konvertieren von TOML-Konfigurationsdateien in das JSON-Format übersetzt für Menschen gut lesbare Einstellungen in ein strenges Datenobjekt, das von Webanwendungen sofort analysiert werden kann.
Das Konvertieren von JSON-Konfigurationsdateien in das TOML-Format vereinfacht die manuelle Bearbeitung und bewahrt gleichzeitig alle strukturierten Schlüssel-Wert-Datenhierarchien.