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øg & Metadata

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

Vælg eller træk filer hertil

100% privat konvertering i browseren - filer forlader aldrig din enhed

eller indsæt Ctrl+V
Privatlivsgaranti uden netværksoverførsel: 0 bytes uploadet til eksterne servere. Al behandling foregik lokalt i din browsers 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

ContainerarkitekturHuman-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs
KomprimeringUncompressed text stream
BytterejsningUTF-8 text stream
FarverumN/A (Configuration File)
Kanaler og strukturTables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes
Maks. dimensionerUnbounded text length
GennemsigtighedNone
Streaming og progressivSequential line-by-line configuration parsing

Tekniske sammenligningsmatrix: TOML vs. konkurrenter

Teknisk attributTOML (Aktuel)YAMLJSONINI
AmbiguitetsrisikoNul (strengt entydig specifikation)Høj (YAML 'Norge-problem' boolske fejl)Nul (strenge datatyper)Moderat (ingen officiel standard)
Indfødte datovelgerIndfødt RFC 3339 dato- og tidsunderstøttelseImplicit streng- / datofortolkningIngen (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 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:

Historisk oprindelse og milepæle

2021TOML v1.0.0 udgives formelt, hvilket fastfryser specifikationen for kernesynkadiksen.
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: mapper rent og forudsigeligt til en hashtabel uden overraskende typekonvertering.
  • Førsteklasses indfødt understøttelse af dato og tid (RFC 3339-tidsstempler, datoer, klokkeslæt) uden strengundslippelse (escaping).
  • 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 ordrette og uoverskuelige sammenlignet med YAML.
  • Syntaksen for tabellarraer ([[table.array]]) kan være mindre intuitiv for begyndere.
  • Mindre kompakt end JSON til maskine-til-maskine-API-dataudveksling med høj gennemstrømning.

Interessant teknisk trivia

  • TOML blev skabt af Tom Preston-Werner, som også var med til at stifte GitHub samt skabte Gravatar og SemVer (Semantic Versioning).
  • Filen 'Cargo.toml' i ethvert Rust-projekt specificerer alle pakkebegrænsninger og kompilatorflag i TOML-format.
  • I modsætning til JSON understøtter TOML indfødte kommentarer (ved hjælp af tegnet '#') og flersprogede strenge (multiline strings).

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 ukoteret '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.