Lompat ke isi

YAML

Ensiklopedia Pengetahuan Universitas Islam Sultan Agung
Revisi sejak 24 Agustus 2026 03.17 oleh Maintenance script (bicara | kontrib) (Impor teks terkontrol dari Wikipedia bahasa Indonesia; revisi 28944576; atribusi sumber disertakan.)
(beda) ← Revisi sebelumnya | Revisi terkini (beda) | Revisi selanjutnya → (beda)

YAML adalah format serialisasi data terbaca-manusia yang mengambil konsep dari bahasa-bahasa seperti XML, C, Python, Perl, serta format surat elektronik seperti yang tercantum dalam RFC 2822. YAML pertama kali diusulkan oleh Clark Evans pada tahun 2001 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. YAML mencapai rilis lengkap dalam versi 1.0 pada awal 2004. Sebelum versi 1.0 selesai, YAML telah diimplementasikan lebih dulu seperti dalam Perl pada 2001 dan Ruby pada 2003.

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

Pada 2024, RFC 9512 menetapkan tipe MIME application/yaml untuk berkas YAML.

Fitur

YAML dirancang untuk mudah dibaca dan ditulis oleh manusia dengan menerapkan penggunaan sensitif terhadap indentasi dan spasi kosong (whitespace). Indentasi YAML harus menggunakan spasi, bukan tab.

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.


Struktur data

YAML menetapkan tiga jenis struktur data, yaitu scalar, sequence, dan mapping. Scalar meliputi string, bilangan, stempel waktu, boolean, dan null. Sequence merupakan larik atau daftar yang urut. Mapping merupakan pasangan kunci-nilai yang tidak urut.

Sebuah scalar bisa diapit dengan tanda petik, khususnya ketika nilai mengandung bilangan tetapi diharuskan menjadi tipe string seperti 1984:

Tag

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. Contoh berikut menggunakan tag eksplisit, !!str pada nilai 1984 untuk mencegah diartikan sebagai bilangan bulat:

Ekspresi blok dan alir

YAML memungkinkan dua gaya ekspresi, yaitu gaya blok (block) yang berbasis indentasi dan gaya alir (flow) yang mirip JSON. Contoh berikut menggunakan --- untuk menandakan dokumen baru:

Anchor dan alias

Anchor dan alias adalah fitur YAML yang memungkinkan pengguna "menggunakan kembali" data tanpa harus mengulang penulisannya. Anchor ditandai dengan & dan alias ditandai dengan *.

Penggunaan

YAML luas digunakan sebagai berkas konfigurasi untuk otomasi DevOps. khususnya Kubernetes untuk konfigurasi berbagai sumber daya yang akan dipakai berbagai kontainer. GitHub Actions dan GitLab CI/CD juga menggunakan YAML untuk konfigurasi alur kerja pembangunan perangkat lunak.

TensorFlow sebelumnya mendukung konfigurasi model berbasis YAML hingga 2021.

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

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.

Referensi

Daftar pustaka

Pranala luar


Sumber dan atribusi

Konten artikel ini diadaptasi dari Wikipedia bahasa Indonesia, revisi 28944576 (2026-02-09T05:08:13Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Mohon gunakan konten ini secara bijak serta sesuai dengan ketentuan lisensi yang berlaku.