TOML-konfigurasjon (.toml)

TOML Standard

Tom's Obvious Minimal Language (TOML) er et entydig, menneskesentrert konfigurasjonsformat skapt av GitHub-medgrunnlegger Tom Preston-Werner, og er bredt tatt i bruk på tvers av moderne programmeringsøkosystemer, inkludert Rust (Cargo) og Python (pyproject.toml).

Konverter TOML til JSON

Gratis TOML til JSON-konverterer i nettleseren. Konverter filer umiddelbart på enheten din.

Undersøk og metadata

Operativsystemer og filanalysatorer identifiserer TOML-filer ved å undersøke den innledende binære bytesekvensen:

Velg eller slipp filer her

100 % privat in-browser-konvertering - filer forlater aldri enheten din

eller lim inn Ctrl+V
Personverngaranti uten nettverksoverføring: 0 byte lastet opp til eksterne servere. All behandling skjedde lokalt i nettlesersandkassen din.

Byte-nivå hodesignatur (Magic Bytes)

Operativsystemer og filanalysatorer identifiserer TOML-filer ved å undersøke den innledende binære bytesekvensen:

HEX-SIGNATUR (OFFSET 0):

5B ... 5D

ASCII-REPRESENTASJON: [...]

Standardisering: TOML v1.0.0 Specification

Tekniske spesifikasjoner

BeholderarkitekturHuman-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs
KomprimeringUncompressed text stream
BytterekkefølgeUTF-8 text stream
FargeromN/A (Configuration File)
Kanaler og strukturTables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes
Maks. dimensjonerUnbounded text length
GjennomsiktighetNone
Strømming og progressivSequential line-by-line configuration parsing

Teknisk sammenligningsmatrise: TOML vs konkurrenter

Teknisk attributtTOML (Gjeldende)YAMLJSONINI
AmbisuitetsrisikoNull (streng entydig spesifikasjon)Høy (YAMLs «Norge-problem» med boolske feil)Null (strenge datatyper)Moderat (ingen formell standard)
Innebygde dato-/tidstyperInnebygd støtte for RFC 3339 dato og klokkeslettImplisitt streng-/datotolkingIngen (kun strenger)Ingen (kun strenger)
Støtte for kommentarerInnebygd (#-kommentarer)Innebygd (#-kommentarer)Ingen kommentarer tillattInnebygd (; og #-kommentarer)
PrimærøkosystemRust (Cargo), Python (PEP 518), GoKubernetes, Ansible, CI/CD-rørledningerWeb-API-er, nettleserkommunikasjonEldre Windows, Git-konfigurasjon

Vanlige korrupsjonsmoduser og heksadesimal gjenopprettingsveiledning

Parserfeil: 'Duplicate key in table' eller 'Invalid table header'.

Underliggende årsak: Forsøk på å omdefinere en eksisterende nøkkel eller tabellnavneområde i dokumentet.

Utbedring: Valider og formater TOML-syntaksen på nytt ved hjelp av File2File TOML-formatereren.

Sikkerhetsanalyse og parser-angrepsvektorer

TOML-parsere må beskytte mot prototypeforurensning og CPU-utmattelse fra patologisk nestede tabell-arrayer.

Kjente angrepsvektorer

  • Prototypeforurensning i JavaScript TOML-parsere som injiserer egenskaper i Object.prototype.
  • Angrep mot tjenestetilgjengelighet gjennom dypt nestede tabell-array-deklarasjoner.
  • Ubegrenset minneallokering under parsing av massive innebygde arrayer.

Beste praksis for forsvar:

Historisk opprinnelse og milepæler

2021TOML v1.0.0 blir formelt utgitt, og fryser spesifikasjonen for kjernesyntaksen.
2018Python standardiserer på 'pyproject.toml' (PEP 518) som standarden for moderne byggekonfigurasjon.
2013Tom Preston-Werner publiserer TOML for å tilby et rent konfigurasjonsformat uten Yamls kompleksitet.

Viktige fordeler

  • Helt entydig: maper rent og forutsigbart til en nøkkel-verdi-tabell uten overraskende typekonvertering.
  • Førsteklasses innfødt støtte for dato og klokkeslett (RFC 3339-tidsstempler, datoer, klokkeslett) uten strengundersøking.
  • Tatt i bruk som det offisielle standardkonfigurasjonsformatet for moderne verktøy i programmeringsspråk (Rust Cargo.toml, Python pyproject.toml).

Tekniske begrensninger og ulemper

  • Dypere nestede objekttrær med flere nivåer kan bli ordrike sammenlignet med YAML.
  • Syntaks for tabell-arrayer ([[table.array]]) kan være lite intuitiv for nybegynnere.
  • Mindre kompakt enn JSON for API-datautveksling mellom maskiner med høyt volum.

Interessante tekniske fakta

  • TOML ble skapt av Tom Preston-Werner, som også var med på å grunnlegge GitHub samt skape Gravatar og SemVer (Semantisk versjonering).
  • «Cargo.toml»-filen i alle Rust-prosjekter spesifikserer alle pakkeavhengigheter og kompilatorflagg i TOML-format.
  • I motsetning til JSON støtter TOML kommentarer (ved hjelp av tegnet '#') og flersidige strenger naturlig.

Ofte stilte tekniske spørsmål

Hva brukes TOML til?

TOML brukes til programvarekonfigurasjon, mest nevneverdig i Rusts Cargo.toml, Pythons pyproject.toml, Go Hugo-konfigurasjoner og beholderverktøy.

Hvorfor foretrekkes TOML fremfor YAML for konfigurasjon?

TOML unngår YAMLs beryktede feil ved tolking av særtilfeller (som at uquerete 'NO' blir til den boolske verdien false), samtidig som det forblir menneskevennlig med kommentarer og tydelige tabeller.

Hvordan kan jeg konvertere TOML til JSON eller YAML?

Du kan konvertere TOML-filer til JSON eller YAML umiddelbart ved hjelp av File2File.app direkte i nettleseren din.