author

Apa itu WebAssembly?


Saat pertama kali mendengar kata WebAssembly, saya kira kita akan membuat web dengan bahasa assembly. Ternyata bukan.

Sekitar dua minggu yang lalu saya mendapatkan kiriman link milis melalui channel @reddit_programming tentang pengumuman WebAssembly.

WebAssembly akan segera tersedia di Firefox dan Google Chrome bulan ini

dan benar saja, Firefox dan Google Chrome merilis versi terbarunya.

Lalu apa sebenarnya WebAssembly itu?

Menurut Wikipedia:

WebAssembly atau disingkat wasm adalah sebuah eksperimen untuk menggunakan bahasa tingkat bawah pada browser. Proyek ini masih dalam tahapan pengembangan yang digarap oleh orang-orang dari Firefox, Webkit (Chromium), Google Chrome, Microsoft Edge, dan W3C.

kerjasama google, yahoo, microsoft, webkit, dan w3c untuk membangun webassembly

Jadi, nanti aplikasi yang menggunakan bahasa pemrograman dari tingkat bawah seperti C dan C++ akan bisa berjalan di browser layaknya javascript. 😮

Sedangkan menurut Eric Elliott, seorang peteran javascript:

WebAssembly adalah:

  • Sebuah bahasa baru: Kode WebAssembly merupakan representasi dari AST (Abstract Syntax Tree) dalam format binary.
  • Sebuah peningkatan performa untuk javascript.
  • Peningkatan untuk browser: Browser akan mampu mengeksekusi format binary

Seblum WebAssembly

Sebelum datangnya WebAssembly beberapa perusahaan sudah berusaha untuk membuat sesuatu agar program yang dibuat dari bahasa pemrograman selain javascript bisa berjalan dengan mulus di browser.

Mereka melakuannya dengan cara mereka sendiri,

  • Firefox membuat turunan javascript bernama asm.js.
  • Microsoft membuat typescript.
  • Google membuat NaCl (Native Client).

Kini mereka semua bersatu membangun WebAssembly. WebAssembly sendiri dibangun dari asm.js dan NaCl.

Roadmap Pengembangan WebAssembly

  • April 2015 - Pembentukan tim dan komunitas WebAssembly
  • Juni 2015 - Publikasi pengumuman pertama
  • Maret 2016 - Implementasi fitur inti
  • Oktober 2016 - Versi Preview diluncurkan
  • Februari 2017 - Pemilihan logo resmi
  • Maret 2017 - Beberapa web browser sepakat mulai menggunakan WebAssembly dan versi preview berakhir.

Untuk agenda selanjutnya, dapat dipantau di: http://webassembly.org/roadmap/

Contoh Kode WebAssembly

Berikut ini contoh kode yang saya ambil dari Wikipedia:

program_faktorial.c

int factorial(int n) {
    if (n == 0)
        return 1;
    else
        return n * factorial(n-1);
}

Setelah dikompilasi menjadi WASM:

program_faktorial.wasm

get_local 0
i64.const 0
i64.eq
if i64
    i64.const 1
else
    get_local 0
    get_local 0
    i64.const 1
    i64.sub
    call 0
    i64.mul
end

WASM binary (heksadesimal)

20 00
42 00
51
04 7e
42 01
05
20 00
20 00
42 01
7d
10 00
7e
0b

Demo WebAssembly

Untuk mengecek browsermu sudah mendukung WebAssembly atau tidak, coba buka demo berikut ini:

Kalau belum bisa, maka browsernya harus di-update ke versi terakhir saat ini.

Itulah sedikit hal yang saya ketahui tentang WebAssembly.

Kedepan mungkin akan lebih banyak lagi game dan aplikasi yang di-porting ke Web dengan WebAssembly. Misalnya, nanti kita bisa buka Photoshop di browser. Jadi tidak perlu nginstal deh 😄.

Referensi: