TOML-konfiguration (.toml)

TOML Standard

Tom's Obvious Minimal Language (TOML) er et entydigt, menneskecentreret konfigurationsformat skabt af GitHub-medstifteren Tom Preston-Werner, som er bredt vedtaget på tværs af moderne programmeringsøkosystemer, herunder Rust (Cargo) og Python (pyproject.toml).

Konverter TOML til JSON

Gratis TOML til JSON-konverter i browseren. Konverter filer med det samme på din enhed.

Undersøgelse og metadata

Operativsystemer og filanalysatorer identificerer TOML-filer ved at inspicere den indledende binære bytesekvens:

Vælg eller træk filer hertil

Privat - filer forlader aldrig din enhed

eller indsæt Ctrl+V
Privatlivsgaranti uden netværksoverførsel: 0 byte overført til eksterne servere. Al behandling foregik lokalt i browserens sandkasse.

Byte-niveau Header-signatur (Magic Bytes)

Operativsystemer og filanalysatorer identificerer TOML-filer ved at inspicere den indledende binære bytesekvens:

HEX-SIGNATUR (OFFSET 0):

5B ... 5D

ASCII-REPRÆSENTATION: [...]

Standardisering: TOML v1.0.0 Specification

Tekniske specifikationer

ContainerarkitekturMenneskeligt læsbar konfigurationsfil, der entydigt afbildes til en hashtabel, struktureret med [tables] og nøgle = værdi-par
KomprimeringUkomprimeret tekststrøm
Byte-rækkefølgeUTF-8-tekststrøm
FarverumIkke relevant (konfigurationsfil)
Kanaler og strukturTabeller, arrays af tabeller, inline-tabeller, strenge, heltal, flydende kommatal, booleske værdier og RFC 3339-dato-/tidsværdier
Maks. dimensionerUbegrænset tekstlængde
GennemsigtighedIngen
Streaming og progressivSekventiel fortolkning af konfiguration linje for linje

Teknisk sammenligningsmatrix: TOML sammenlignet med konkurrenterne

Teknisk attributTOML (Aktuel)YAMLJSONINI
AmbiguitetsrisikoNul (strengt entydig specifikation)Høj (YAML 'Norge-problem' boolske fejl)Nul (strikte datatyper)Moderat (ingen officiel standard)
Indbyggede dato- og tidstyperIndbygget understøttelse af dato og klokkeslæt efter RFC 3339.Implicit fortolkning af strenge og datoerIngen (kun strenge)Ingen (kun strenge)
KommentarunderstøttelseIndfødt (# kommentarer)Indfødt (# kommentarer)Ingen kommentarer tilladtIndfødt (; og # kommentarer)
Primært økosystemRust (Cargo), Python (PEP 518), GoKubernetes, Ansible, CI/CD-pipelinerWeb-API'er, browserkommunikationÆldre Windows, Git-konfig

Almindelige korruptionstilstande og hex-gendannelsesvejledning

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

Grundlæggende årsag: Forsøg på at omdefinere en eksisterende nøgle eller tabelnavneområde i dokumentet.

Gendannelse: Valider og omformater TOML-syntaks ved hjælp af File2File.app TOML Formatter.

Sikkerhedsanalyse og parser-angrebsvektorer

TOML-parsere skal værne mod prototyppollution (prototype pollution) og CPU-udmattelse fra patologiske indlejringer af tabelarrayer.

Kendte angrebsvektorer

  • Prototyppollution i JavaScript TOML-parsere, der injicerer egenskaber i Object.prototype.
  • Angreb mod tilgængelighed (Denial of Service) via dybt indlejrede tabelarray-deklarationer.
  • Ubegrænset allokering af hukommelse under fortolkning af massive indlejrede arrays (inline arrays).

Defensive bedste praksisser: Valider tabelindlejringsgrænser og brug prototypeforureningssikre ordbogsobjekter.

Historisk oprindelse og milepæle

2021TOML v1.0.0 udgives formelt, hvilket fastfryser specifikationen for kernesyntaksen.
2018Python standardiserer 'pyproject.toml' (PEP 518) som standarden for moderne build-konfiguration.
2013Tom Preston-Werner udgiver TOML for at tilbyde et rent konfigurationsformat uden YAMLs kompleksitet.

Vigtige fordele og styrker

  • Fuldstændig entydigt: dataene kan mappes klart og forudsigeligt til en hash-tabel uden overraskende typekonvertering.
  • Indbygget understøttelse af dato og klokkeslæt (RFC 3339-tidsstempler, datoer og klokkeslæt) uden escaping af strenge.
  • Vedtaget som det officielle standardkonfigurationsformat for moderne sprogværktøjer (Rust Cargo.toml, Python pyproject.toml).

Tekniske begrænsninger og ulemper

  • Dybt indlejrede objekttræer i flere niveauer kan blive omfangsrige sammenlignet med YAML.
  • Syntaksen for arrays af tabeller ([[table.array]]) kan virke ulogisk for begyndere.
  • Mindre kompakt end JSON til maskine-til-maskine-API-dataudveksling med høj gennemstrømning.

Interessante tekniske fakta

  • TOML blev skabt af Tom Preston-Werner, som også var med til at stifte GitHub samt skabte Gravatar og SemVer (Semantic Versioning).
  • Cargo-pakker bruger Cargo.toml til metadata, afhængigheder og mål; Rust-projekter med andre byggesystemer kan bruge andre filer.
  • I modsætning til JSON understøtter TOML indfødte kommentarer (ved hjælp af tegnet '#') og strenge over flere linjer.

Ofte stillede tekniske spørgsmål

Hvad bruges TOML til?

TOML bruges til softwarekonfiguration, mest bemærkelsesværdigt i Rusts Cargo.toml, Pythons pyproject.toml, Go Hugo-konfigurationer og containerværktøjer.

Hvorfor foretrækkes TOML frem for YAML til konfiguration?

TOML undgår YAMLs berygtede fejl i fortolkningen af specialtilfælde (såsom at et uden anførselstegn 'NO' omdannes til den booleske værdi false), samtidig med at det forbliver menneskevenligt med kommentarer og klare tabeller.

Hvordan kan jeg konvertere TOML til JSON eller YAML?

Du kan konvertere TOML-filer til JSON eller YAML med det samme ved hjælp af File2File.app direkte i din webbrowser.