Konfigurasi TOML (.toml)
Spesifikasi StandarTom's Obvious Minimal Language (TOML) adalah format konfigurasi yang tidak ambigu dan berpusat pada manusia, dibuat oleh Tom Preston-Werner, salah satu pendiri GitHub, serta banyak diadopsi di berbagai ekosistem pemrograman modern termasuk Rust (Cargo) dan Python (pyproject.toml).
Konversi TOML ke JSON
Konverter TOML ke JSON gratis yang berjalan di peramban. Konversikan berkas secara instan di perangkat Anda.
Pemeriksaan & Metadata
Sistem operasi dan penganalisis file mengenali file TOML dengan memeriksa urutan byte biner di bagian awal:
Tanda Tangan Header per Byte (Byte Penanda)
Sistem operasi dan penganalisis file mengenali file TOML dengan memeriksa urutan byte biner di bagian awal:
TANDA TANGAN HEX (OFFSET 0):
5B ... 5DREPRESENTASI ASCII: [...]
Standardisasi: Spesifikasi TOML v1.0.0
Spesifikasi Teknis
| Arsitektur Kontainer | File konfigurasi yang mudah dibaca manusia dan dipetakan secara tegas ke tabel hash, dengan struktur [tables] serta pasangan key = value |
| Kompresi | Aliran teks tanpa kompresi |
| Urutan Byte | Aliran teks UTF-8 |
| Ruang Warna | Tidak berlaku (file konfigurasi) |
| Saluran & Struktur | Tabel, larik tabel, tabel sebaris, string, bilangan bulat, bilangan pecahan, boolean, dan tanggal-waktu RFC 3339 |
| Dimensi Maksimum | Panjang teks tidak terbatas |
| Transparansi | Tidak ada |
| Streaming & Progresif | Penguraian konfigurasi berurutan baris demi baris |
Perbandingan Teknis TOML dengan Pesaing
| Atribut Teknis | TOML (Saat Ini) | YAML | JSON | INI |
|---|---|---|---|---|
| Risiko Ambiguitas | Tidak ada ambiguitas (spesifikasi tidak menyisakan ambiguitas) | Tinggi (bug boolean 'masalah Norwegia' pada YAML) | Nol (tipe data ketat) | Sedang (tidak ada standar formal) |
| Tipe Tanggal-Waktu Asli | Dukungan tanggal & waktu RFC 3339 asli | Penguraian string / tanggal implisit | Tidak ada (hanya string) | Tidak ada (hanya string) |
| Dukungan Komentar | Mendukung komentar # secara langsung | Mendukung komentar # secara langsung | Komentar tidak diizinkan | Mendukung komentar ; dan # secara langsung |
| Ekosistem Utama | Rust (Cargo), Python (PEP 518), Go | Kubernetes, Ansible, pipeline CI/CD | API Web, komunikasi peramban | Windows lama, konfigurasi Git |
Pola Kerusakan Umum dan Panduan Pemulihan Hex
Kesalahan pengurai: 'Duplicate key in table' atau 'Invalid table header'.
Penyebab Utama: Mencoba mendefinisikan ulang kunci atau namespace tabel yang sudah ada di dalam dokumen.
Pemulihan: Validasi dan format ulang sintaks TOML menggunakan File2File.app TOML Formatter.
Analisis Keamanan & Vektor Serangan Parser
Pengurai TOML harus mencegah polusi prototipe dan kehabisan sumber daya CPU akibat penyarangan larik tabel yang ekstrem.
Vektor Serangan yang Diketahui
- Polusi prototipe pada pengurai TOML JavaScript yang menyuntikkan properti ke dalam Object.prototype.
- Penolakan layanan melalui deklarasi array tabel bertingkat yang dalam.
- Alokasi memori tak terbatas selama penguraian array inline besar-besaran.
Praktik Terbaik Defensif: Batasi kedalaman penyarangan tabel dan gunakan objek kamus yang aman dari polusi prototipe.
Asal-Usul & Tonggak Sejarah
Keunggulan & Kelebihan Utama
- Sepenuhnya tidak ambigu: dipetakan secara bersih dan dapat diprediksi ke tabel hash tanpa koersi tipe data yang mengejutkan.
- Dukungan tanggal-waktu bawaan (stempel waktu, tanggal, dan waktu RFC 3339) tanpa perlu mengapit string.
- Diadopsi sebagai format konfigurasi standar resmi untuk alat bahasa pemrograman modern (Cargo.toml untuk Rust dan pyproject.toml untuk Python).
Keterbatasan Teknis & Kekurangan
- Pohon objek bertingkat dalam dengan banyak level dapat menjadi sangat panjang dibandingkan dengan YAML.
- Sintaks untuk array tabel ([[table.array]]) mungkin kurang intuitif bagi pemula.
- Kurang ringkas dibandingkan JSON untuk pertukaran data API mesin-ke-mesin dengan laju pemrosesan tinggi.
Fakta Teknis Menarik
- TOML dibuat oleh Tom Preston-Werner, yang juga ikut mendirikan GitHub serta menciptakan Gravatar dan SemVer (Semantic Versioning).
- Paket Cargo menggunakan Cargo.toml untuk metadata, dependensi, dan target; proyek Rust dengan sistem build lain dapat menggunakan berkas berbeda.
- Tidak seperti JSON, TOML secara bawaan mendukung komentar (menggunakan karakter '#') dan string multibaris.
Pertanyaan Teknis yang Sering Diajukan
Untuk apa TOML digunakan?
TOML digunakan untuk konfigurasi perangkat lunak, terutama di Cargo.toml milik Rust, pyproject.toml milik Python, konfigurasi Hugo untuk Go, dan alat kontainer.
Mengapa TOML lebih dipilih daripada YAML untuk konfigurasi?
TOML menghindari bug penguraian kasus tepi yang terkenal pada YAML (seperti 'NO' tanpa tanda kutip yang berubah menjadi nilai boolean false), sekaligus tetap ramah bagi manusia dengan menyertakan komentar dan tabel yang jelas.
Bagaimana cara mengonversi TOML ke JSON atau YAML?
Anda dapat mengonversi file TOML menjadi JSON atau YAML secara instan menggunakan File2File.app langsung di browser web Anda.
Pasangan Konversi TOML Terkait
Mengonversi file konfigurasi TOML ke format JSON menerjemahkan pengaturan properti yang mudah dibaca manusia menjadi objek data ketat yang dapat diurai dengan cepat oleh aplikasi web.
Mengonversi berkas konfigurasi JSON ke format TOML menyederhanakan penyuntingan manual sekaligus mempertahankan seluruh hierarki data kunci-nilai yang terstruktur.