Konfigurasi TOML (.toml)

Spesifikasi Standar

Tom'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:

Pilih atau letakkan berkas di sini

Privat - file tidak pernah meninggalkan perangkat Anda

atau tempel Ctrl+V
Jaminan Privasi Tanpa Transmisi Jaringan: 0 byte diunggah ke server eksternal. Semua pemrosesan berlangsung secara lokal di sandbox browser Anda.

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 ... 5D

REPRESENTASI ASCII: [...]

Standardisasi: Spesifikasi TOML v1.0.0

Spesifikasi Teknis

Arsitektur KontainerFile konfigurasi yang mudah dibaca manusia dan dipetakan secara tegas ke tabel hash, dengan struktur [tables] serta pasangan key = value
KompresiAliran teks tanpa kompresi
Urutan ByteAliran teks UTF-8
Ruang WarnaTidak berlaku (file konfigurasi)
Saluran & StrukturTabel, larik tabel, tabel sebaris, string, bilangan bulat, bilangan pecahan, boolean, dan tanggal-waktu RFC 3339
Dimensi MaksimumPanjang teks tidak terbatas
TransparansiTidak ada
Streaming & ProgresifPenguraian konfigurasi berurutan baris demi baris

Perbandingan Teknis TOML dengan Pesaing

Atribut TeknisTOML (Saat Ini)YAMLJSONINI
Risiko AmbiguitasTidak 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 AsliDukungan tanggal & waktu RFC 3339 asliPenguraian string / tanggal implisitTidak ada (hanya string)Tidak ada (hanya string)
Dukungan KomentarMendukung komentar # secara langsungMendukung komentar # secara langsungKomentar tidak diizinkanMendukung komentar ; dan # secara langsung
Ekosistem UtamaRust (Cargo), Python (PEP 518), GoKubernetes, Ansible, pipeline CI/CDAPI Web, komunikasi perambanWindows 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

2021TOML v1.0.0 resmi dirilis, menetapkan spesifikasi sintaks inti secara permanen.
2018Python menetapkan 'pyproject.toml' (PEP 518) sebagai standar konfigurasi pembangunan modern.
2013Tom Preston-Werner menerbitkan TOML untuk menyediakan format konfigurasi yang bersih tanpa kerumitan YAML.

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.