TOML Yapılandırması (.toml)
TOML StandartTom'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:
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 ... 5DASCII GÖSTERİMİ: [...]
Standardizasyon: TOML v1.0.0 Specification
Teknik Özellikler
| Konteyner Mimarisi | Human-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs |
| Sıkıştırma | Uncompressed 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 Boyutlar | Unbounded text length |
| Şeffaflık | None |
| Akış ve Aşamalı (Streaming & Progressive) | Sequential line-by-line configuration parsing |
Teknik Karşılaştırma Matrisi: TOML ve Rakipleri
| Teknik Nitelik | TOML (Güncel) | YAML | JSON | INI |
|---|---|---|---|---|
| Belirsizlik Riski | Sı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 Tipleri | Yerel RFC 3339 tarih ve saat desteği | Örtük dize / tarih ayrıştırma | Yok (yalnızca dizeler) | Yok (yalnızca dizeler) |
| Yorum Desteği | Yerel (# yorumları) | Yerel (# yorumları) | Yorumlara izin verilmez | Yerel (; ve # yorumları) |
| Birincil Ekosistem | Rust (Cargo), Python (PEP 518), Go | Kubernetes, Ansible, CI/CD boru hatları | Web API'leri, tarayıcı iletişimi | Eski 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ı
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.
İlgili TOML Dönüşüm Çiftleri
TOML yapılandırma dosyalarını JSON biçimine dönüştürmek, insan dostu özellik ayarlarını web uygulamalarının anında ayrıştırabileceği katı bir veri nesnesine çevirir.
JSON yapılandırma dosyalarını TOML formatına dönüştürmek, tüm yapılandırılmış anahtar-değer veri hiyerarşilerini korurken insan tarafından düzenlemeyi basitleştirir.