TOML konfiguracija (.toml)

TOML Standardno

Tom's Obvious Minimal Language (TOML) je jednoznačan konfiguracijski format usredotočen na čovjeka koji je stvorio suosnivač GitHub-a Tom Preston-Werner, a široko je prihvaćen u suvremenim programskim ekosustavima, uključujući Rust (Cargo) i Python (pyproject.toml).

Pretvori TOML u JSON

Besplatni TOML u JSON pretvarač u pregledniku. Trenutno pretvorite datoteke na svom uređaju.

Pregledaj i metapodaci

Operativni sustavi i alati za analizu datoteka identificiraju TOML datoteke provjerom početnog niza binarnih bajtova:

Odaberite ili ispustite datoteke ovdje

100% privatna pretvorba u pregledniku - datoteke nikada ne napuštaju vaš uređaj

ili zalijepi Ctrl+V
Jamstvo privatnosti nulte mrežne transmisije: 0 bajtova učitano na vanjske poslužitelje. Sva obrada odvijala se lokalno u sandčiću vašeg preglednika.

Potpis zaglavlja na razini bajtova (Magic Bytes)

Operativni sustavi i alati za analizu datoteka identificiraju TOML datoteke provjerom početnog niza binarnih bajtova:

HEX POTPIS (POMAK 0):

5B ... 5D

ASCII PRIKAZ: [...]

Standardizacija: TOML v1.0.0 Specification

Tehničke specifikacije

Arhitektura spremnikaHuman-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs
KompresijaUncompressed text stream
字节序UTF-8 text stream
Prostori bojaN/A (Configuration File)
Kanali i strukturaTables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes
Maksimalne dimenzijeUnbounded text length
ProzirnostNone
Streaming i progresivnoSequential line-by-line configuration parsing

Tehnička matrica usporedbe: TOML vs Konkurencija

Tehnički atributTOML (Trenutno)YAMLJSONINI
Rizik od dvoznačnostiNula (strogo jednoznačna specifikacija)Visok (bugovi s boolean vrijednostima u YAML-ovom 'Norway problem')Nula (strogi tipovi podataka)Umjeren (nema službenog standarda)
Izvorni tipovi datuma i vremenaIzvorna podrška za RFC 3339 datum i vrijemeImplicitno analiziranje niza / datumaNema (samo nizovi znakova)Nema (samo nizovi znakova)
Podrška za komentareIzvorna (# komentari)Izvorna (# komentari)Komentari nisu dopušteniIzvorna (; i # komentari)
Glavni ekosustavRust (Cargo), Python (PEP 518), GoKubernetes, Ansible, CI/CD cjevovodiWeb API-ji, komunikacija u preglednikuNaslijeđeni Windows, Git konfiguracija

Uobičajeni načini oštećenja i vodič za heksadecimalni oporavak

Pogreška parsera: 'Duplicate key in table' ili 'Invalid table header'.

Temeljni uzrok: Pokušaj ponovnog definiranja postojećeg ključa ili imenskog prostora tablice unutar dokumenta.

Oporavak: Provjerite valjanost i ponovno formatirajte TOML sintaksu pomoću File2File TOML Formattera.

Sigurnosna analiza i vektori napada na parser

TOML parseri se moraju zaštititi od zagađenja prototipa (prototype pollution) i iscrpljivanja CPU-a uzrokovanog patološkim ugniježđivanjem nizova tablica.

Poznati vektori napada

  • Zagađenje prototipa u JavaScript TOML parserima unošenjem svojstava u Object.prototype.
  • Uskraćivanje usluge (DoS) putem duboko ugniježđenih deklaracija nizova tablica.
  • Neograničeno alociranje memorije tijekom analize masivnih ugrađenih nizova.

Najbolje obrambene prakse:

Povijesni izvori i prekretnice

2021Službeno je objavljen TOML v1.0.0, čime je zamrznuta specifikacija osnovne sintakse.
2018Python standardizira 'pyproject.toml' (PEP 518) kao suvremeni standard za konfiguraciju gradnje.
2013Tom Preston-Werner objavljuje TOML kako bi ponudio čist konfiguracijski format bez složenosti YAML-a.

Ključne prednosti

  • Potpuno jednoznačan: čisto i predvidljivo se preslikava u tablicu raspršivanja (hash table) bez ikakvog iznenađujućeg pretvaranja tipova.
  • Prvoklasna izvorna podrška za datum i vrijeme (RFC 3339 vremenske oznake, datumi, vremena) bez navodnika i escapinga.
  • Usvojen kao službeni standardni konfiguracijski format za moderne jezične alate (Rust Cargo.toml, Python pyproject.toml).

Tehnička ograničenja i nedostaci

  • Duboko ugniježđena stabla objekata s više razina mogu postati opširna u usporedbi s YAML-om.
  • Sintaksa za nizove tablica ([[table.array]]) može biti manje intuitivna za početnike.
  • Manje kompaktan od JSON-a za visokopropusnu razmjenu API podataka između strojeva.

Zanimljive tehničke činjenice

  • TOML je stvorio Tom Preston-Werner, koji je također suosnivač GitHub-a te tvorac Gravatara i SemVer-a (Semantic Versioning).
  • Datoteka 'Cargo.toml' u svakom projektu u Rustu definira sve ovisnosti paketa i zastavice prevoditelja u TOML formatu.
  • Za razliku od JSON-a, TOML izvorno podržava komentare (korištenjem znaka '#') i višelinične nizove znakova.

Često postavljana tehnička pitanja

Za što se koristi TOML?

TOML se koristi za softversku konfiguraciju, najistaknutije u Rustovoj datoteci Cargo.toml, Pythonovoj pyproject.toml, Go Hugo konfiguracijama i alatima za kontejnere.

Zašto je TOML draži od YAML-a za konfiguraciju?

TOML izbjegava poznate pogreške u analiziranju rubnih slučajeva u YAML-u (kao što je nenavodeni 'NO' koji se pretvara u logičku vrijednost false), a pritom ostaje razumljiv ljudima s komentarima i jasnim tablicama.

Kako mogu pretvoriti TOML u JSON ili YAML?

TOML datoteke možete trenutno pretvoriti u JSON ili YAML pomoću alata File2File.app izravno u svom web pregledniku.