TOML-configuratie (.toml)

TOML Standaard

Tom'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:

Selecteer of sleep bestanden hierheen

Privé - bestanden verlaten uw apparaat niet

of plak Ctrl+V
Privacygarantie zonder netwerktransmissie: 0 bytes geüpload naar externe servers. Alle verwerking vond lokaal plaats in uw browser-sandbox.

Bestandshandtekening op byteniveau (magic bytes)

Besturingssystemen en bestandsanalysators herkennen TOML-bestanden aan de hand van de eerste binaire bytesequentie:

HEX-HANDTEKENING (OFFSET 0):

5B ... 5D

ASCII-WEERGAVE: [...]

Standaardisatie: TOML v1.0.0-specificatie

Technische specificaties

ContainerarchitectuurMenselijk leesbaar configuratiebestand dat eenduidig naar een hashtabel kan worden omgezet, met [tables] en key = value-paren
CompressieNiet-gecomprimeerde tekststroom
Bytevolgorde (endianness)UTF-8-tekststroom
KleurruimtenN.v.t. (configuratiebestand)
Kanalen en structuurTabellen, arrays van tabellen, inline-tabellen, tekenreeksen, gehele getallen, drijvende-kommagetallen, booleaanse waarden en RFC 3339-datums en -tijden
Maximale afmetingenOnbegrensde tekstlengte
TransparantieGeen
Streaming en progressiefSequentiële configuratieverwerking regel voor regel

Technische vergelijkingsmatrix: TOML versus concurrenten

Technisch kenmerkTOML (Huidig)YAMLJSONINI
Risico op dubbelzinnigheidNul (strikt ondubbelzinnige specificatie)Hoog (boolean-fouten door het 'Norway problem' van YAML)Nul (strikte datatypen)Matig (geen formele standaard)
Ingebouwde datum- en tijdtypenIngebouwde ondersteuning voor RFC 3339-datum en -tijdImpliciete parsing van strings en datumsGeen (alleen strings)Geen (alleen strings)
Ondersteuning voor opmerkingenIngebouwd #-commentaarIngebouwd #-commentaarGeen opmerkingen toegestaanIngebouwd ;- en #-commentaar
Primair ecosysteemRust (Cargo), Python (PEP 518), GoKubernetes, Ansible, CI/CD-pipelinesWeb-API's, browsercommunicatieLegacy 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

2021TOML v1.0.0 formeel uitgebracht, waarmee de kernsyntaxisspecificatie is bevroren.
2018Python standaardiseert op 'pyproject.toml' (PEP 518) als de moderne standaard voor build-configuratie.
2013Tom Preston-Werner publiceert TOML om een overzichtelijk configuratieformaat te bieden zonder de complexiteit van YAML.

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.