TOML konfigurācija (.toml)

TOML Standarts

Tom's Obvious Minimal Language (TOML) ir nepārprotams, uz cilvēku orientēts konfigurācijas formāts, kuru izveidoja GitHub līdzdibinātājs Toms Prestons-Verners (Tom Preston-Werner) un kurš ir plaši iecienīts mūsdienu programmēšanas ekosistēmās, tostarp Rust (Cargo) un Python (pyproject.toml).

Konvertēt TOML uz JSON

Bezmaksas TOML uz JSON konvertētājs pārlūkprogrammā. Konvertējiet failus uzreiz savā ierīcē.

Pārbaudīt un metadati

Operētājsistēmas un failu analizatori identificē TOML failus, pārbaudot sākotnējo bināro baitu secību:

Atlasiet vai velciet failus šeit

100% privāta konvertēšana pārlūkprogrammā - faili nekad neatstāj jūsu ierīci

vai ielīmējiet Ctrl+V
Privātuma garantija bez datu pārraides tīklā: 0 baitu augšupielādēti ārējos serveros. Visa apstrāde notika lokāli jūsu pārlūkprogrammas smilškastē.

Baitu līmeņa galvenes paraksts (maģiskie baiti)

Operētājsistēmas un failu analizatori identificē TOML failus, pārbaudot sākotnējo bināro baitu secību:

HEKSADECIMĀLAIS PARAKSTS (NOBĪDE 0):

5B ... 5D

ASCII ATTEIOLOJUMS: [...]

Standartizācija: TOML v1.0.0 Specification

Tehniskās specifikācijas

Konteinera arhitektūraHuman-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs
SaspiešanaUncompressed text stream
Baitu secībaUTF-8 text stream
Krāsu telpasN/A (Configuration File)
Kanāli un struktūraTables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes
Maks. izmēriUnbounded text length
CaurspīdīgumsNone
Straumēšana un progresīvā ielādeSequential line-by-line configuration parsing

Tehniskā salīdzinājuma matrica: TOML pret konkurentiem

Tehniskais atribūtsTOML (Pašreizējais)YAMLJSONINI
Ambiguitātes risksNulle (stingri nepārprotama specifikācija)Augsts (YAML "Norvēģijas problēmas" Būla vērtību kļūdas)Nulle (stingri datu tipi)Mērens (nav oficiāla standarta)
Vietējie datuma un laika tipiVietējais RFC 3339 datuma un laika atbalstsNetieša virkņu / datumu parsēšanaNav (tikai virknes)Nav (tikai virknes)
Komentāru atbalstsVietējais ("#" komentāri)Vietējais ("#" komentāri)Komentāri nav atļautiVietējais (";" un "#" komentāri)
Galvenā ekosistēmaRust (Cargo), Python (PEP 518), GoKubernetes, Ansible, CI/CD konveijeriTīmekļa API, pārlūkprogrammu saziņaMantotās Windows, Git konfigurācijas

Biežākie bojājumu veidi un heksadecimālās atkopšanas ceļvedis

Parsētāja kļūda: "Duplicate key in table" vai "Invalid table header".

Pamatcēlonis: Mēģinājums atkārtoti definēt esošu atslēgu vai tabulas nosaukumvietu dokumentā.

Atkopšana: Validējiet un pārformātējiet TOML sintaksi, izmantojot File2File TOML formātētāju.

Drošības analīze un parsētāja uzbrukuma vektori

TOML parsētājiem ir jāaizsargājas pret prototipu piesārņošanu un CPU izsmelšanu, ko izraisa patoloģiska tabulu masīvu iegulšana.

Zināmie uzbrukuma vektori

  • Prototipu piesārņošana JavaScript TOML parsētājos, injicējot rekvizītus Object.prototype.
  • Pakalpojuma atteice (DoS) caur dziļi iegultām tabulu masīvu deklarācijām.
  • Neierobežota atmiņas piešķire masveida iekļauto masīvu parsēšanas laikā.

Aizsardzības labākā prakse:

Vēsturiskā izcelsme un pavērsieni

2021Oficiāli izlaists TOML v1.0.0, fiksējot pamata sintakses specifikāciju.
2018Python standartizē "pyproject.toml" (PEP 518) kā mūsdienu būvēšanas konfigurācijas standartu.
2013Toms Prestons-Verners publicē TOML, lai nodrošinātu tīru konfigurācijas formātu bez YAML sarežģītības.

Galvenās priekšrocības un plusi

  • Pilnīgi nepārprotams: tīri un paredzami kartējas uz jaucumtabulu bez pārsteidzošas tipu piespiedu konvertēšanas.
  • Pirmās klases vietējais datuma un laika atbalsts (RFC 3339 laikspiedumi, datumi, laiki) bez virkņu aizsargzīmju (escaping) lietošanas.
  • Pieņemts kā oficiālais standarta konfigurācijas formāts mūsdienu valodu rīkiem (Rust Cargo.toml, Python pyproject.toml).

Tehniskie ierobežojumi un mīnusi

  • Dziļi iegulti vairāku līmeņu objektu koki var kļūt garvārdiski salīdzinājumā ar YAML.
  • Tabulu masīvu sintakse ([[table.array]]) iesācējiem var šķist neintuitīva.
  • Mazāk kompakts nekā JSON liela datu plūsmas apjoma mašīna-mašīnai API datu apmaiņai.

Interesanti tehniski fakti

  • TOML izveidoja Toms Prestons-Verners, kurš arī bija līdzdibinātājs GitHub un izveidoja Gravatar un SemVer (Semantic Versioning).
  • Fails "Cargo.toml" katrā Rust projektā nosaka visas pakotņu atkarības un kompilatora karodziņus TOML formātā.
  • Atšķirībā no JSON, TOML dabiski atbalsta komentārus (izmantojot rakstzīmi "#") un daudzrindu virknes.

Bieži uzdotie tehniskie jautājumi

Kam tiek izmantots TOML?

TOML tiek izmantots programmatūras konfigurācijai, visievērojamāk Rust Cargo.toml, Python pyproject.toml, Go Hugo konfigurācijās un konteineru rīkos.

Kāpēc konfigurācijā TOML ir priekšroka attiecībā pret YAML?

TOML novērš YAML bēdīgi slavenās malējo gadījumu parsēšanas kļūdas (piemēram, nepēdiņās ievietots "NO", kas pārvēršas par Būla vērtību false), vienlaikus saglabājot cilvēkam draudzīgu izskatu ar komentāriem un skaidrām tabulām.

Kā es varu konvertēt TOML uz JSON vai YAML?

Jūs varat uzreiz konvertēt TOML failus uz JSON vai YAML, izmantojot File2File.app tieši savā tīmekļa pārlūkprogrammā.