YAML adalah format serialisasidataterbaca-manusia yang mengambil konsep dari bahasa-bahasa seperti XML, C, Python, Perl, serta format surat elektronik seperti yang tercantum dalam RFC2822. YAML pertama kali diusulkan oleh Clark Evans pada tahun 2001[1] yang merancang format ini bersama dengan Ingy döt Net dan Oren Ben-Kiki. YAML tersedia bagi beberapa bahasa dan skrip pemrograman.
Sejarah
YAML dikembangkan oleh Clark Evans, Oren Ben-Kiki, dan Ingy dot Net. Draf pertama YAML resmi dirilis sebagai versi 0.1 pada Mei 2001.[2] YAML mencapai rilis lengkap dalam versi 1.0 pada awal 2004.[3] Sebelum versi 1.0 selesai, YAML telah diimplementasikan lebih dulu seperti dalam Perl pada 2001 dan Ruby pada 2003.[4][5]
YAML aslinya merupakan kepanjangan dari "Yet Another Markup Language", tetapi pada April 2002 kepanjangannya telah berubah menjadi akronim rekursif dari "YAML Ain't Markup Language".[6]
Pada 2024, RFC9512 menetapkan tipe MIMEapplication/yaml untuk berkas YAML.[7]
Fitur
YAML dirancang untuk mudah dibaca dan ditulis oleh manusia dengan menerapkan penggunaan sensitif terhadap indentasi dan spasi kosong (whitespace).[8] Indentasi YAML harus menggunakan spasi, bukan tab.[9]
Contoh
Berikut ini adalah contoh metadata buku dalam YAML. Data judul dan pengarang merupakan bentuk pasangan kunci-nilai, sementara bahasa merupakan bentuk larik yang dinotasikan dengan daftar berbutir.[10]
Tag digunakan untuk mengenali tipe data. Sebuah data bisa diberi tag secara jelas (eksplisit) dengan !, sementara data biasa akan diberikan tag secara tersirat oleh implementasi saat diproses.[13] Contoh berikut menggunakan tag eksplisit, !!str pada nilai 1984 untuk mencegah diartikan sebagai bilangan bulat:[14]
judul:!!str1984# sama dengan "1984"pengarang:"GeorgeOrwell"bahasa:-Inggris-Indonesia
Ekspresi blok dan alir
YAML memungkinkan dua gaya ekspresi, yaitu gaya blok (block) yang berbasis indentasi dan gaya alir (flow) yang mirip JSON.[12] Contoh berikut menggunakan --- untuk menandakan dokumen baru:[12]
---# Gaya blokjudul:1984pengarang:"GeorgeOrwell"bahasa:-Inggris-Indonesia---# Gaya alir judul:1984pengarang:"GeorgeOrwell"bahasa:["Inggris","Indonesia"]# atau juga bisa { Inggris, Indonesia }
Anchor dan alias
Anchor dan alias adalah fitur YAML yang memungkinkan pengguna "menggunakan kembali" data tanpa harus mengulang penulisannya.[15]Anchor ditandai dengan & dan alias ditandai dengan *.[16]
-buku_1:judul:1984pengarang:"GeorgeOrwell"bahasa:&bahasa["Inggris","Indonesia"]# Nilai bahasa di sini sama dengan nilai bahasa pada buku_1-buku_2:judul:"ArtofWar"pengarang:"SunTzu"bahasa:*bahasa
Penggunaan
YAML luas digunakan sebagai berkas konfigurasi untuk otomasi DevOps.[17] khususnya Kubernetes untuk konfigurasi berbagai sumber daya yang akan dipakai berbagai kontainer.[18]GitHub Actions dan GitLab CI/CD juga menggunakan YAML untuk konfigurasi alur kerja pembangunan perangkat lunak.[19][20]
TensorFlow sebelumnya mendukung konfigurasi model berbasis YAML hingga 2021.[21]
Keamanan implementasi
Beberapa implementasi kerap menghadapi celah keamanan karena rancangan YAML membolehkan tipe data yang ditentukan sendiri sehingga rentan disalahgunakan untuk eksekusi kode jarak jauh.[8] Pada 2017, para ahli keamanan melaporkan celah pada implementasi Python PyYAML sebelum versi 5.1, CVE-2017-18342, bahwa API yaml.load() dapat dieksploitasi untuk menjalankan kode jarak jauh.[14] Kendati telah ditanggapi, perbaikannya tidak sepenuhnya tuntas karena masih bisa dieksploitasi melalui tag konstruktor PyYAML yang spesifik seperti !!python/object/apply. Celah ini dilaporkan dalam CVE-2019-20477.[22]
Sebuah penelitian dari 2019 menunjukkan bahwa fitur anchor dan alias bisa dieksploitasi sebagai serangan kegagalan layanan (denial-of-service) dengan cara kerja yang mirip bom zip.[23]
Referensi
↑Evans, Clark (11 Mei 2001). "YAML Draft 0.1". Yahoo! Tech groups: sml-dev. Diarsipkan dari asli tanggal 2013-09-07. Diakses tanggal 2008-08-02.
↑Net, Ingy döt (12 Desember 2020). "In The Beginning". The YAML Company (dalam bahasa Inggris). Diakses tanggal 9 Februari 2026.
↑Freeman, Jonathan (30 November 2016). "Review: GitLab rocks version control". Computerworld (dalam bahasa English). Diakses tanggal 7 Februari 2026. Pemeliharaan CS1: Bahasa yang tidak diketahui (link)