TOML-konfigurasjon (.toml)
TOML StandardTom'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:
Filsignatur på bytenivå (magiske byte)
Operativsystemer og filanalysatorer identifiserer TOML-filer ved å undersøke den innledende binære bytesekvensen:
HEX-SIGNATUR (OFFSET 0):
5B ... 5DASCII-REPRESENTASJON: [...]
Standardisering: TOML v1.0.0 Specification
Tekniske spesifikasjoner
| Beholderarkitektur | Menneskeleselig konfigurasjonsfil som gir en entydig representasjon av en hash-tabell, strukturert med [tabeller] og nøkkel = verdi-par |
| Komprimering | Ukomprimert tekststrøm |
| Bytterekkefølge | UTF-8-tekststrøm |
| Fargerom | Ikke relevant (konfigurasjonsfil) |
| Kanaler og struktur | Tabeller, tabellarrayer, innebygde tabeller, strenger, heltall, flyttall, boolske verdier og RFC 3339-datoer og -klokkeslett |
| Maks. dimensjoner | Ubegrenset tekstlengde |
| Gjennomsiktighet | Ingen |
| Strømming og progressiv visning | Sekvensiell tolking av konfigurasjonen linje for linje |
Teknisk sammenligningsmatrise: TOML sammenlignet med konkurrenter
| Teknisk attributt | TOML (Gjeldende) | YAML | JSON | INI |
|---|---|---|---|---|
| Tvetydighetsrisiko | Null (strengt entydig spesifikasjon) | Høy (YAMLs «Norge-problem» med boolske feil) | Null (strenge datatyper) | Moderat (ingen formell standard) |
| Innebygde dato-/tidstyper | Innebygd støtte for RFC 3339-dato og -klokkeslett | Implisitt streng-/datotolking | Ingen (kun strenger) | Ingen (kun strenger) |
| Støtte for kommentarer | Innebygd (#-kommentarer) | Innebygd (#-kommentarer) | Ingen kommentarer tillatt | Innebygd (; og #-kommentarer) |
| Primærøkosystem | Rust (Cargo), Python (PEP 518), Go | Kubernetes, Ansible, CI/CD-rørledninger | Web-API-er, nettleserkommunikasjon | Eldre 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
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.
Relaterte konverteringspar for TOML
Konvertering av TOML-konfigurasjonsfiler til JSON-format oversetter menneskevennlige egenskapsinnstillinger til et strengt dataobjekt som webapplikasjoner kan analysere umiddelbart.
Konvertering av JSON-konfigurasjonsfiler til TOML-format forenkler manuell redigering samtidig som alle strukturerte nøkkel-verdi-datahierarkier bevares.