YAML

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.
judul: 1984
pengarang: "George Orwell"
bahasa:
    - Inggris
    - Indonesia

 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:"judul": "1984"
"pengarang": "George Orwell"
"bahasa":
    - "Inggris"
    - "Indonesia"

 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:judul: !!str 1984 # sama dengan "1984"
pengarang: "George Orwell"
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. Contoh berikut menggunakan --- untuk menandakan dokumen baru:---
# Gaya blok
judul: 1984
pengarang: "George Orwell"
bahasa:
    - Inggris
    - Indonesia

---
# Gaya alir 
judul: 1984
pengarang: "George Orwell"
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. Anchor ditandai dengan & dan alias ditandai dengan *.- buku_1:
    judul: 1984
    pengarang: "George Orwell"
    bahasa: &bahasa
      [ "Inggris", "Indonesia" ]

# Nilai bahasa di sini sama dengan nilai bahasa pada buku_1
- buku_2:
    judul: "Art of War"
    pengarang: "Sun Tzu"
    bahasa: *bahasa

 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 
  Situs web resmi
  Repositori di GitHub
  Laman pengembangan spesifikasi terbaru

Kategori:Bahasa markah
Kategori:Format serialisasi data
Kategori:Pengenalan terkait komputer pada tahun 2001