Konfigurasi TOML (.toml)

TOML Standar

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

Pilih atau letakkan berkas di sini

100% konversi privat di dalam peramban - berkas tidak pernah meninggalkan perangkat Anda

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

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

REPRESENTASI ASCII: [...]

Standardisasi: TOML v1.0.0 Specification

Spesifikasi Teknis

Arsitektur WadahHuman-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs
KompresiUncompressed text stream
Endianness ByteUTF-8 text stream
Ruang WarnaN/A (Configuration File)
Saluran & StrukturTables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes
Dimensi MaksUnbounded text length
TransparansiNone
Streaming & ProgresifSequential line-by-line configuration parsing

Matriks Perbandingan Teknis: TOML vs Pesaing

Atribut TeknisTOML (Saat Ini)YAMLJSONINI
Risiko AmbiguitasNol (spesifikasi yang sangat tidak ambigu)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 KomentarAsli (komentar #)Asli (komentar #)Komentar tidak diizinkanAsli (komentar ; dan #)
Ekosistem UtamaRust (Cargo), Python (PEP 518), GoKubernetes, Ansible, pipeline CI/CDAPI Web, komunikasi perambanWindows 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

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