TOML Yapılandırması (.toml)

TOML Standart

Tom's Obvious Minimal Language (TOML), GitHub kurucu ortağı Tom Preston-Werner tarafından oluşturulan, net, insan odaklı bir konfigürasyon formatıdır; Rust (Cargo) ve Python (pyproject.toml) gibi modern programlama ekosistemlerinde yaygın olarak benimsenmiştir.

TOML formatını JSON formatına dönüştür

Ücretsiz tarayıcı içi TOML - JSON dönüştürücü. Dosyalarınızı cihazınızda anında dönüştürün.

İncele & Meta Veriler

İşletim sistemleri ve dosya çözümleyicileri, TOML dosyalarını başlangıçtaki ikili bayt dizisini inceleyerek tanımlar:

Dosyaları buraya seçin veya bırakın

Kesinlikle %100 tarayıcı içi gizli dönüşüm - dosyalar asla cihazınızdan ayrılmaz

veya yapıştırın Ctrl+V
Sıfır Ağ Aktarımı Gizlilik Garantisi: Harici sunuculara 0 bayt yüklendi. Tüm işlemler tarayıcınızın korumalı alanında (sandbox) yerel olarak gerçekleştirildi.

Bayt Düzeyinde Başlık İmzası (Magic Bytes)

İşletim sistemleri ve dosya çözümleyicileri, TOML dosyalarını başlangıçtaki ikili bayt dizisini inceleyerek tanımlar:

HEX İMZASI (OFSET 0):

5B ... 5D

ASCII GÖSTERİMİ: [...]

Standardizasyon: TOML v1.0.0 Specification

Teknik Özellikler

Konteyner MimarisiHuman-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs
SıkıştırmaUncompressed text stream
Bayt Düzeni (Endianness)UTF-8 text stream
Renk UzaylarıN/A (Configuration File)
Kanallar ve YapıTables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes
Maksimum BoyutlarUnbounded text length
ŞeffaflıkNone
Akış ve Aşamalı (Streaming & Progressive)Sequential line-by-line configuration parsing

Teknik Karşılaştırma Matrisi: TOML ve Rakipleri

Teknik NitelikTOML (Güncel)YAMLJSONINI
Belirsizlik RiskiSıfır (kesin olarak net spesifikasyon)Yüksek (YAML 'Norveç sorunu' boolean hataları)Sıfır (katı veri tipleri)Orta (resmi bir standart yok)
Yerel Tarih/Saat TipleriYerel RFC 3339 tarih ve saat desteğiÖrtük dize / tarih ayrıştırmaYok (yalnızca dizeler)Yok (yalnızca dizeler)
Yorum DesteğiYerel (# yorumları)Yerel (# yorumları)Yorumlara izin verilmezYerel (; ve # yorumları)
Birincil EkosistemRust (Cargo), Python (PEP 518), GoKubernetes, Ansible, CI/CD boru hatlarıWeb API'leri, tarayıcı iletişimiEski Windows, Git yapılandırması

Yaygın Bozulma Modları ve Hex Kurtarma Kılavuzu

Ayrıştırıcı hatası: 'Duplicate key in table' (Tabloda yinelenen anahtar) veya 'Invalid table header' (Geçersiz tablo başlığı).

Kök Neden: Belge içinde mevcut bir anahtarın veya tablo ad alanının yeniden tanımlanmaya çalışılması.

Kurtarma: File2File TOML Biçimlendiriciyi kullanarak TOML sözdizimini doğrulayın ve yeniden biçimlendirin.

Güvenlik Analizi ve Ayrıştırıcı Saldırı Vektörleri

TOML ayrıştırıcıları, prototip kirlenmesine ve hastalıklı tablo dizisi iç içe geçmelerinden kaynaklanan CPU tükenmesine karşı koruma sağlamalıdır.

Bilinen Saldırı Vektörleri

  • JavaScript TOML ayrıştırıcılarında Object.prototype içine özellikler enjekte eden prototip kirlenmesi.
  • Derinlemesine iç içe geçmiş tablo dizisi bildirileri yoluyla hizmet reddi (DoS).
  • Devasa satır içi dizi ayrıştırma sırasında sınırsız bellek tahsisi.

Savunmacı En İyi Uygulamalar:

Tarihsel Kökenler ve Kilometre Taşları

2021TOML v1.0.0 resmi olarak yayınlandı ve çekirdek sözdizimi spesifikasyonu donduruldu.
2018Python, modern derleme yapılandırma standardı olarak 'pyproject.toml' (PEP 518) standardını benimsedi.
2013Tom Preston-Werner, YAML'ın karmaşıklığı olmadan temiz bir konfigürasyon formatı sağlamak için TOML'u yayınladı.

Temel Avantajlar ve Artılar

  • Tamamen net ve belirsizlikten uzak: sürpriz tip zorlamaları olmaksızın temiz ve öngörülebilir bir şekilde hash tablosuyla eşleşir.
  • Dizi kaçış karakterlerine ihtiyaç duymadan birinci sınıf yerel tarih/saat desteği (RFC 3339 zaman damgaları, tarihler, saatler).
  • Modern dil araçları için resmi standart yapılandırma formatı olarak benimsenmiştir (Rust Cargo.toml, Python pyproject.toml).

Teknik Kısıtlamalar ve Eksiler

  • Derinlemesine iç içe geçmiş çok seviyeli nesne ağaçları, YAML ile karşılaştırıldığında uzun ve karmaşık hale gelebilir.
  • Tablo dizileri için sözdizimi ([[table.array]]), yeni başlayanlar için sezgisel olmayabilir.
  • Yüksek hacimli makineden makineye API veri alışverişinde JSON'a göre daha az kompakttır.

İlginç Teknik Bilgiler

  • TOML, aynı zamanda GitHub'ı ortak kuran ve Gravatar ile SemVer'i (Semantik Versiyonlama) oluşturan Tom Preston-Werner tarafından yaratılmıştır.
  • Her Rust projesindeki 'Cargo.toml' dosyası, tüm paket bağımlılıklarını ve derleyici bayraklarını TOML formatında belirtir.
  • JSON'dan farklı olarak TOML, '#' karakterini kullanan yorum satırlarını ve çok satırlı dizeleri yerel olarak destekler.

Sıkça Sorulan Teknik Sorular

TOML ne için kullanılır?

TOML; yazılım yapılandırmasında, özellikle Rust'ın Cargo.toml, Python'un pyproject.toml, Go Hugo yapılandırmaları ve kapsayıcı (container) araçlarında kullanılır.

TOML yapılandırma için neden YAML yerine tercih edilir?

TOML, yorum satırları ve anlaşılır tablolarla insan dostu kalmaya devam ederken, YAML'ın kötü şöhrete sahip uç durum (edge-case) çözümleme hatalarından (tırnaksız 'NO' ifadesinin boolean false değerine dönüşmesi gibi) kaçınır.

TOML dosyasını JSON veya YAML formatına nasıl dönüştürebilirim?

Web tarayıcınız üzerinden doğrudan File2File.app kullanarak TOML dosyalarını anında JSON veya YAML formatına dönüştürebilirsiniz.