TOML konfiguracija (.toml)

TOML Standardno

Tom's Obvious Minimal Language (TOML) je nedvosmislen konfiguracioni format usredsređen na čoveka, koji je kreirao suosnivač GitHub-a Tom Preston-Verner, a koji je široko prihvaćen u modernim programskim ekosistemima, uključujući Rust (Cargo) i Python (pyproject.toml).

Конвертујте TOML у JSON

Бесплатан TOML у JSON конвертор у прегледачу. Конвертујте фајлове тренутно без слања на сервер уз 100% приватност.

Pregledaj i metapodaci

Operativni sistemi i analizatori datoteka identifikuju TOML datoteke proverom početnog binarnog niza bajtova:

Изаберите или превуците датотеке овде

100% приватна конверзија у прегледачу – датотеке никада не напуштају ваш уређај

или налепите Ctrl+V
100% Локална обрада у прегледачу 0 бајтова послато спољним серверима. Сва обрада је извршена локално у безбедном окружењу вашег прегледача.

Potpis zaglavlja na nivou bajtova (Magic Bytes)

Operativni sistemi i analizatori datoteka identifikuju TOML datoteke proverom početnog binarnog niza bajtova:

HEX POTPIS (OFFSET 0):

5B ... 5D

ASCII REPREZENTACIJA: [...]

Standardizacija: TOML v1.0.0 Specification

Tehničke specifikacije

Arhitektura kontejneraHuman-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs
KompresijaUncompressed text stream
Bajtni redosled (Endianness)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
TransparentnostNone
Strimovanje i progresivno učitavanjeSequential line-by-line configuration parsing

Tehnička matrica poređenja: TOML vs Konkurenti

Tehnički atributTOML (Trenutno)YAMLJSONINI
Rizik od dvosmislenostiNula (strogo nedvosmislena specifikacija)Visok (greške sa boolean vrednostima u YAML 'Norveškom problemu')Nula (strogi tipovi podataka)Umeren (nema formalnog standarda)
Izvorni tipovi datuma i vremenaIzvorna podrška za RFC 3339 datum i vremeImplicitno parsiranje niski / datumaNema (samo niske)Nema (samo niske)
Podrška za komentareIzvorna (# komentari)Izvorna (# komentari)Komentari nisu dozvoljeniIzvorna (; i # komentari)
Primarni ekosistemRust (Cargo), Python (PEP 518), GoKubernetes, Ansible, CI/CD procesiVeb API-ji, komunikacija u pregledačuNasleđeni Windows, Git konfig

Uobičajeni režimi oštećenja i vodič za heksadecimalni oporavak

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

Osnovni uzrok: Pokušaj redefinisanja postojećeg ključa ili imenskog prostora tabele unutar dokumenta.

Oporavak: Potvrdite i reformatirajte TOML sintaksu pomoću File2File TOML Formatter-a.

Bezbednosna analiza i vektori napada parsera

TOML parseri se moraju braniti od zagađenja prototipa (prototype pollution) i iscrpljivanja CPU-a usled patološkog ugnježđivanja nizova tabela.

Poznati vektori napada

  • Zagađenje prototipa u JavaScript TOML parserima koji ubacuju svojstva u Object.prototype.
  • Uskraćivanje usluge (DoS) kroz duboko ugnježđene deklaracije nizova tabela.
  • Neograničena alokacija memorije tokom parsiranja masivnih ugrađenih nizova.

Defanzivne najbolje prakse:

Istorijat i prekretnice

2021Zvanično objavljen TOML v1.0.0, čime je zamrznuta specifikacija osnovne sintakse.
2018Python standardizuje 'pyproject.toml' (PEP 518) kao moderan standard za konfiguraciju gradnje.
2013Tom Preston-Verner objavljuje TOML kako bi obezbedio čist konfiguracioni format bez složenosti YAML-a.

Ključne prednosti

  • Potpuno nedvosmislen: čisto i predvidivo se preslikava u heš tabelu bez iznenađujućih konverzija tipova.
  • Prvoklasna izvorna podrška za datume i vreme (RFC 3339 vremenske oznake, datumi, vreme) bez navodnika i eskejpovanja.
  • Usvojen kao zvanični standardni konfiguracioni format za moderne alate jezika (Rust Cargo.toml, Python pyproject.toml).

Tehnička ograničenja i nedostaci

  • Duboko ugnježđena stabla objekata na više nivoa mogu postati opširna u poređenju sa YAML-om.
  • Sintaksa za nizove tabela ([[table.array]]) može biti intuitivna za početnike.
  • Manje kompaktan od JSON-a za razmenu API podataka između mašina sa velikim protokom.

Zanimljivosti

  • TOML je kreirao Tom Preston-Verner, koji je takođe suosnivač GitHub-a i tvorac Gravatar-a i SemVer-a (Semantičko verzionisanje).
  • Datoteka 'Cargo.toml' u svakom Rust projektu definiše sve zavisnosti paketa i flegove kompajlera u TOML formatu.
  • Za razliku od JSON-a, TOML izvorno podržava komentare (korišćenjem znaka '#') i višelinijske niske.

Često postavljana tehnička pitanja

Čemu služi TOML?

TOML se koristi za konfiguraciju softvera, a najpoznatiji je u Rust-ovom Cargo.toml, Python-ovom pyproject.toml, Go Hugo konfiguracijama i alatima za kontejnere.

Zašto je TOML poželjniji u odnosu na YAML za konfiguraciju?

TOML izbegava čuvene greške parsiranja u graničnim slučajevima kod YAML-a (kao što je nenastavnavano 'NO' koje se pretvara u boolean false), a istovremeno ostaje razumljiv ljudima uz komentare i jasne tabele.

Kako mogu da konvertujem TOML u JSON ili YAML?

Možete trenutno da konvertujete TOML fajlove u JSON ili YAML koristeći File2File.app direktno u vašem veb pretraživaču.