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.
- Firefox 52 Rilis dengan Dukungan WebAssembly dan Peningkatan Sync
- Google Chrome 57 Rilis dengan Dukungan WebAssembly dan Spesifikasi CSS Gird Baru
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.
Jadi, nanti aplikasi yang menggunakan bahasa pemrograman dari tingkat bawah seperti C dan C++ akan bisa berjalan di browser layaknya javascript. 😮
#WebAssembly memungkinkan game desktop berjalan di atas web browser dengan performa yang hampir sama. 😯 pic.twitter.com/dwDKfeT1CZ
— Petani Kode (@petanikode) March 15, 2017
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 melakukannya 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.
Ke depan 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: