Konfigurasi TOML (.toml)
TOML StandarTom's Obvious Minimal Language (TOML) adalah format konfigurasi yang tidak ambigu dan berpusat pada manusia, dibuat oleh salah satu pendiri GitHub Tom Preston-Werner, serta banyak diadopsi di berbagai ekosistem pemrograman modern termasuk Rust (Cargo) dan Python (pyproject.toml).
Konversi TOML ke JSON
Pengonversi TOML ke JSON gratis di dalam peramban. Konversi berkas secara instan di perangkat Anda.
Periksa & Metadata
Sistem operasi dan penganalisis file mengidentifikasi file TOML dengan memeriksa urutan byte biner utama:
Tanda Tangan Header Tingkat-Byte (Magic Bytes)
Sistem operasi dan penganalisis file mengidentifikasi file TOML dengan memeriksa urutan byte biner utama:
SIGNATURE HEX (OFFSET 0):
5B ... 5DREPRESENTASI ASCII: [...]
Standardisasi: TOML v1.0.0 Specification
Spesifikasi Teknis
| Arsitektur Wadah | Human-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs |
| Kompresi | Uncompressed text stream |
| Endianness Byte | UTF-8 text stream |
| Ruang Warna | N/A (Configuration File) |
| Saluran & Struktur | Tables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes |
| Dimensi Maks | Unbounded text length |
| Transparansi | None |
| Streaming & Progresif | Sequential line-by-line configuration parsing |
Matriks Perbandingan Teknis: TOML vs Pesaing
| Atribut Teknis | TOML (Saat Ini) | YAML | JSON | INI |
|---|---|---|---|---|
| Risiko Ambiguitas | Nol (spesifikasi yang sangat tidak ambigu) | 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 | Asli (komentar #) | Asli (komentar #) | Komentar tidak diizinkan | Asli (komentar ; dan #) |
| Ekosistem Utama | Rust (Cargo), Python (PEP 518), Go | Kubernetes, Ansible, pipeline CI/CD | API Web, komunikasi peramban | Windows lama, konfigurasi Git |
Mode Kerusakan Umum & 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 TOML Formatter.
Analisis Keamanan & Vektor Serangan Parser
Pengurai TOML harus mewaspadai polusi prototipe dan kelelahan CPU dari penelusuran array tabel yang patologis.
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:
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 asli kelas satu (stempel waktu, tanggal, dan waktu RFC 3339) tanpa pelarian string.
- Diadopsi sebagai format konfigurasi standar resmi untuk peralatan bahasa modern (Rust Cargo.toml, Python pyproject.toml).
Keterbatasan Teknis & Kekurangan
- Pohon objek bertingkat multi-level yang dalam 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 berthroughput tinggi.
Fakta Teknis Menarik
- TOML dibuat oleh Tom Preston-Werner, yang juga ikut mendirikan GitHub serta menciptakan Gravatar dan SemVer (Semantic Versioning).
- File 'Cargo.toml' di setiap proyek Rust menentukan semua dependensi paket dan flag kompiler dalam format TOML.
- Tidak seperti JSON, TOML secara native mendukung komentar (menggunakan karakter '#') dan string multibaris.
Pertanyaan Teknis yang Sering Diajukan
Untuk apa TOML digunakan?
TOML digunakan untuk konfigurasi perangkat lunak, yang paling terkenal pada Cargo.toml milik Rust, pyproject.toml milik Python, konfigurasi Go Hugo, dan alat-alat penampung (container).
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 ramah manusia ke dalam objek data ketat yang dapat diurai oleh aplikasi web secara instan.
Mengonversi berkas konfigurasi JSON ke format TOML menyederhanakan penyuntingan manual sekaligus mempertahankan seluruh hierarki data kunci-nilai yang terstruktur.