TOML-configuratie (.toml)
TOML StandaardTom's Obvious Minimal Language (TOML) is een ondubbelzinnig, mensgericht configuratieformaat, gemaakt door GitHub-medeoprichter Tom Preston-Werner en breed toegepast in moderne programmeerecosystemen, waaronder Rust (Cargo) en Python (pyproject.toml).
TOML naar JSON converteren
Gratis TOML-naar-JSON-converter in uw browser. Converteer bestanden direct op uw apparaat.
Inspecteren en metadata
Besturingssystemen en bestandsanalysators herkennen TOML-bestanden aan de hand van de eerste binaire bytesequentie:
Bestandshandtekening op byteniveau (magic bytes)
Besturingssystemen en bestandsanalysators herkennen TOML-bestanden aan de hand van de eerste binaire bytesequentie:
HEX-HANDTEKENING (OFFSET 0):
5B ... 5DASCII-WEERGAVE: [...]
Standaardisatie: TOML v1.0.0-specificatie
Technische specificaties
| Containerarchitectuur | Menselijk leesbaar configuratiebestand dat eenduidig naar een hashtabel kan worden omgezet, met [tables] en key = value-paren |
| Compressie | Niet-gecomprimeerde tekststroom |
| Bytevolgorde (endianness) | UTF-8-tekststroom |
| Kleurruimten | N.v.t. (configuratiebestand) |
| Kanalen en structuur | Tabellen, arrays van tabellen, inline-tabellen, tekenreeksen, gehele getallen, drijvende-kommagetallen, booleaanse waarden en RFC 3339-datums en -tijden |
| Maximale afmetingen | Onbegrensde tekstlengte |
| Transparantie | Geen |
| Streaming en progressief | Sequentiële configuratieverwerking regel voor regel |
Technische vergelijkingsmatrix: TOML versus concurrenten
| Technisch kenmerk | TOML (Huidig) | YAML | JSON | INI |
|---|---|---|---|---|
| Risico op dubbelzinnigheid | Nul (strikt ondubbelzinnige specificatie) | Hoog (boolean-fouten door het 'Norway problem' van YAML) | Nul (strikte datatypen) | Matig (geen formele standaard) |
| Ingebouwde datum- en tijdtypen | Ingebouwde ondersteuning voor RFC 3339-datum en -tijd | Impliciete parsing van strings en datums | Geen (alleen strings) | Geen (alleen strings) |
| Ondersteuning voor opmerkingen | Ingebouwd #-commentaar | Ingebouwd #-commentaar | Geen opmerkingen toegestaan | Ingebouwd ;- en #-commentaar |
| Primair ecosysteem | Rust (Cargo), Python (PEP 518), Go | Kubernetes, Ansible, CI/CD-pipelines | Web-API's, browsercommunicatie | Legacy Windows, Git-configuratie |
Veelvoorkomende beschadigingen en gids voor hex-herstel
Parserfout: 'Duplicate key in table' of 'Invalid table header'.
Oorzaak: Poging om een bestaande sleutel of tabelnaamruimte in het document opnieuw te definiëren.
Herstel: Valideer en formatteer de TOML-syntaxis opnieuw met de TOML-formatter van File2File.app.
Beveiligingsanalyse en aanvalsvectoren voor parsers
TOML-parsers moeten zich beschermen tegen prototype-vervuiling en CPU-uitputting door pathologische nesting van tabelarrays.
Bekende aanvalsvectoren
- Prototype-vervuiling in TOML-parsers voor JavaScript, waarbij eigenschappen in Object.prototype worden geïnjecteerd.
- Denial of service door diep geneste declaraties van tabelarrays.
- Onbegrensde geheugentoewijzing tijdens het parsen van zeer grote inline arrays.
Aanbevolen beveiligingspraktijken: Valideer limieten voor tabelnesting en gebruik woordenboekobjecten die veilig zijn tegen prototype-vervuiling.
Historische oorsprong en mijlpalen
Belangrijkste voordelen
- Volledig ondubbelzinnig: wordt helder en voorspelbaar omgezet naar een hashtabel, zonder verrassende typeconversies.
- Eersteklas ingebouwde ondersteuning voor datum- en tijdwaarden (RFC 3339-tijdstempels, datums en tijden), zonder dat tekenreeksen hoeven te worden ge-escaped.
- Aangenomen als het officiële standaardconfiguratieformaat voor moderne taaltools (Rust Cargo.toml, Python pyproject.toml).
Technische beperkingen
- Diep geneste objectbomen met meerdere niveaus kunnen uitgebreid worden in vergelijking met YAML.
- De syntaxis voor arrays van tabellen ([[table.array]]) kan voor beginners niet-intuïtief zijn.
- Minder compact dan JSON voor API-gegevensuitwisseling tussen machines met een hoge doorvoer.
Interessante technische weetjes
- TOML is gemaakt door Tom Preston-Werner, die ook GitHub heeft medeopgericht en Gravatar en SemVer (Semantic Versioning) heeft gemaakt.
- Cargo-pakketten gebruiken Cargo.toml om metadata, afhankelijkheden en doelen te declareren; Rust-projecten die andere build-systemen gebruiken, kunnen andere bestanden gebruiken.
- In tegenstelling tot JSON ondersteunt TOML standaard opmerkingen (met het teken '#') en tekenreeksen over meerdere regels.
Veelgestelde technische vragen
Waar wordt TOML voor gebruikt?
TOML wordt gebruikt voor softwareconfiguratie, met name in Cargo.toml van Rust, pyproject.toml van Python, Go Hugo-configuraties en containertools.
Waarom heeft TOML de voorkeur boven YAML voor configuratie?
TOML vermijdt de beruchte parseerfouten van YAML in randgevallen (zoals een niet tussen aanhalingstekens geplaatste 'NO' die verandert in de booleaanse waarde false), maar blijft gebruiksvriendelijk dankzij opmerkingen en duidelijke tabellen.
Hoe kan ik TOML converteren naar JSON of YAML?
U kunt TOML-bestanden direct met File2File.app in uw webbrowser converteren naar JSON of YAML.
Gerelateerde conversieparen voor TOML
Het converteren van TOML-configuratiebestanden naar JSON-formaat vertaalt door mensen leesbare eigenschapsinstellingen naar een strikt gegevensobject dat webapplicaties snel kunnen parsen.
Het converteren van JSON-configuratiebestanden naar TOML-formaat vereenvoudigt handmatige bewerking en behoudt tegelijkertijd alle gestructureerde sleutel-waardehiërarchieën.