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.

Inspeksjon og metadata

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

Velg eller slipp filer her

Privat - filer forlater aldri enheten din

eller lim inn Ctrl+V
Personverngaranti uten nettverksoverføring: 0 byte ble lastet opp til eksterne servere. All behandling foregikk lokalt i det isolerte nettlesermiljøet ditt.

Filsignatur på bytenivå (magiske byte)

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

BeholderarkitekturMenneskeleselig konfigurasjonsfil som gir en entydig representasjon av en hash-tabell, strukturert med [tabeller] og nøkkel = verdi-par
KomprimeringUkomprimert tekststrøm
BytterekkefølgeUTF-8-tekststrøm
FargeromIkke relevant (konfigurasjonsfil)
Kanaler og strukturTabeller, tabellarrayer, innebygde tabeller, strenger, heltall, flyttall, boolske verdier og RFC 3339-datoer og -klokkeslett
Maks. dimensjonerUbegrenset tekstlengde
GjennomsiktighetIngen
Strømming og progressiv visningSekvensiell tolking av konfigurasjonen linje for linje

Teknisk sammenligningsmatrise: TOML sammenlignet med konkurrenter

Teknisk attributtTOML (Gjeldende)YAMLJSONINI
TvetydighetsrisikoNull (strengt 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-systemer, 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.app TOML-formatereren.

Sikkerhetsanalyse og angrepsvektorer mot parsere

TOML-parsere må beskytte mot prototypeforurensning og overbelastning av CPU-en som følge av ekstremt dypt nestede tabellarrayer.

Kjente angrepsvektorer

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

Anbefalte sikkerhetstiltak: Valider grenser for tabellnesting, og bruk ordbokobjekter som er beskyttet mot prototypforurensning.

Historisk opprinnelse og milepæler

2021TOML v1.0.0 ble formelt utgitt, og kjernesyntaksen ble dermed fastlagt.
2018Python innfører 'pyproject.toml' (PEP 518) som standard for moderne byggekonfigurasjon.
2013Tom Preston-Werner publiserer TOML for å tilby et rent konfigurasjonsformat uten Yamls kompleksitet.

Viktige fordeler

  • Helt entydig: tilordnes 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 escaping av strenger.
  • 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 arrayer av tabeller ([[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-pakker bruker Cargo.toml til metadata, avhengigheter og mål; Rust-prosjekter med andre byggesystemer kan bruke andre filer.
  • I motsetning til JSON støtter TOML kommentarer (ved hjelp av tegnet '#') og strenger over flere linjer naturlig.

Ofte stilte tekniske spørsmål

Hva brukes TOML til?

TOML brukes til programvarekonfigurasjon, særlig 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 'NO' uten anførselstegn blir til den boolske verdien false), samtidig som TOML 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.