TOML-konfiguraatio (.toml)

TOML Standardi

Tom's Obvious Minimal Language (TOML) on yksiselieköinen, ihmiskeskeinen asetustiedostomuoto, jonka loi GitHubin perustajajäsen Tom Preston-Werner. Sitä käytetään laajasti nykyaikaisissa ohjelmointiekosysteemeissä, kuten Rustissa (Cargo) ja Pythonissa (pyproject.toml).

Muunna tiedostot muodosta TOML muotoon JSON

Ilmainen selaimen sisäinen TOML - JSON-muunnin. Muunna tiedostoja välittömästi laitteellasi.

Tarkastele ja metatiedot

Käyttöjärjestelmät ja tiedostoanalyysaattorit tunnistavat TOML-tiedostot tarkistamalla tiedoston alun binäärisarjan:

Valitse tai pudota tiedostot tähän

100 % yksityinen selaimen sisäinen muunnos - tiedostot eivät poistu laitteeltasi

tai liitä Ctrl+V
Tietosuojatakuu: 0 % verkkosiirtoa 0 tavua ladattu ulkoisille palvelimille. Kaikki käsittely tapahtui paikallisesti selaimen hiekkalaatikossa.

Tavutason otsikon allekirjoitus (Magic Bytes)

Käyttöjärjestelmät ja tiedostoanalyysaattorit tunnistavat TOML-tiedostot tarkistamalla tiedoston alun binäärisarjan:

HEX-ALLEKIRJOITUS (OFFSET 0):

5B ... 5D

ASCII-ESITYSTAPA: [...]

Standardointi: TOML v1.0.0 Specification

Tekniset tiedot

SäiliöarkkitehtuuriHuman-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs
PakkausUncompressed text stream
Tavujärjestys (Endianness)UTF-8 text stream
VäriavaruudetN/A (Configuration File)
Kanavat ja rakenneTables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes
Suurimmat mitatUnbounded text length
LäpinäkyvyysNone
Suoratoisto ja progressiivinen latausSequential line-by-line configuration parsing

Tekninen vertailumatriisi: TOML vs. kilpailijat

Tekninen attribuuttiTOML (Nykyinen)YAMLJSONINI
MoniselitteisyysriskiNolla (tiukasti yksiselitteinen määrittely)Korkea (YAML:n 'Norja-ongelma' totuusarvobugit)Nolla (tiukat tietotyypit)Kohtalainen (ei virallista standardia)
Natiivit päivämäärä- ja aikatyypitNatiivi RFC 3339 -päivämäärän ja -ajan tukiEpäsuora merkkijono-/päivämääräjäsennysEi ole (vain merkkijonot)Ei ole (vain merkkijonot)
KommenttitukiNatiivi (#-kommentit)Natiivi (#-kommentit)Kommentit eivät ole sallittujaNatiivi (; ja #-kommentit)
Ensisijainen ekosysteemiRust (Cargo), Python (PEP 518), GoKubernetes, Ansible, CI/CD-putketVerkko-rajapinnat, selaimen viestintäPerinteinen Windows, Git-asetukset

Yleiset korruptiotilat ja heksatietojehdotusopas

Jäsennysvirhe: 'Duplicate key in table' tai 'Invalid table header'.

Perussyy: Yritys määrittää olemassa oleva avain tai taulukkonimiavaruus uudelleen asiakirjan sisällä.

Korjaus: Tarkista ja muotoile TOML-syntaksi uudelleen File2File TOML Formatter -työkalulla.

Turvallisuusanalyysi ja jäsenninhyökkäysvektorit

TOML-jäsenninten on suojattava prototyypin saastumiselta ja suorittimen ylikuormitukselta, joka johtuu patologisesta taulukoiden sisäkkäisyydestä.

Tunnetut hyökkäysvektorit

  • Prototyypin saastuminen JavaScriptin TOML-jäsennissä, mikä lisää ominaisuuksia Object.prototype-kohteeseen.
  • Palvelunesto hyödyntämällä syvälle sisäkkäisiä taulukkoilmoituksia.
  • Rajoittamaton muistinvaraus massiivisen sisäkkäisen taulukon jäsennyksen aikana.

Parhaat puolustuskäytännöt:

Historia ja virstanpylväät

2021TOML v1.0.0 julkaistaan virallisesti, mikä jäädyttää perussyntaksimäärittelyn.
2018Python ottaa standardikseen 'pyproject.toml'-tiedoston (PEP 518) nykyaikaiseksi rakennusasetusstandardiksi.
2013Tom Preston-Werner julkaisee TOML:n tarjotakseen puhtaan asetustiedostomuodon ilman YAML:n monimutkaisuutta.

Tärkeimmät edut

  • Täysin yksiselitteinen: muuntuu puhtaasti ja ennustettavasti hajautustaulukkoon ilman yllättäviä tietotyyppimuunnoksia.
  • Ensiluokkainen natiivi päivämäärän ja ajan tuki (RFC 3339 -aikaleimat, päivämäärät, kellonajat) ilman merkkijonojen karkausta.
  • Hyväksytty viralliseksi standardiasetusmuodoksi nykyaikaisille kielityökaluille (Rust Cargo.toml, Python pyproject.toml).

Tekniset rajoitukset

  • Syvälle sisäkkäiset monitasoiset oliopuut voivat kasvaa polveileviksi verrattuna YAML:ään.
  • Syntaksi taulukoiden taulukoille ([[table.array]]) saattaa olla aloittelijoille epäintuitiivinen.
  • Vähemmän kompakti kuin JSON suuren läpimenon koneelta koneelle -rajapintojen tiedonsiirrossa.

Mielenkiintoisia teknisiä faktoja

  • TOML:n loi Tom Preston-Werner, joka oli myös mukana perustamassa GitHubia sekä loi Gravatarin ja SemVerin (Semantic Versioning).
  • Jokaisen Rust-projektin 'Cargo.toml'-tiedosto määrittää kaikki pakettiriippuvuudet ja kääntäjän liput TOML-muodossa.
  • Toisin kuin JSON, TOML tukee natiivisti kommentteja (käyttäen '#' -merkkiä) ja monirivisiä merkkijonoja.

Usein kysytyt tekniset kysymykset

Mihin TOMLia käytetään?

TOMLia käytetään ohjelmistojen konfigurointiin, erityisesti Rustin Cargo.toml-tiedostossa, Pythonin pyproject.toml-tiedostossa, Go Hugo -asetuksissa ja säilötyökaluissa.

Miksi TOMLia suositaan YAML-muodon sijaan asetuksissa?

TOML vältetään YAMLin tunnetut reunaehtojen jäsennysvirheet (kuten lainaamaton 'NO', joka muuttuu totuusarvoksi false), pysyen samalla ihmisystävällisenä kommenttien ja selkeiden taulukoiden ansiosta.

Miten voin muuntaa TOMLin JSON- tai YAML-muotoon?

Voit muuntaa TOML-tiedostot JSON- tai YAML-muotoon hetkessä File2File.appilla suoraan verkkoselaimessasi.