TL;DR: WebAssembly lahir untuk solve performa JavaScript di browser. Tapi dengan WASI, sekarang jadi teknologi portable & secure yang bisa jalan dimana aja. Think of it as "universal binary format" untuk era cloud native.
Ketika JavaScript Mulai Kewalahan: Kisah Lahirnya WebAssembly
Apakah kamu inget pertama kali main game 3D di browser? Atau pas buka Google Maps versi web di tahun 2015? Mungkin kamu mikir "wah keren nih, lancar banget di browser". Tapi di balik layar, para developer yang bikin aplikasi itu lagi "perang" sama keterbatasan JavaScript.
Masalahnya itu simpel: JavaScript itu bahasa yang "interpreted". Setiap baris kode dibaca, diterjemahkan, terus dijalankan. Untuk aplikasi kecil? No problem. Tapi untuk aplikasi berat seperti video editing, image processing, atau game engine di browser? JavaScript sudah mulai ngos-ngosan.
Dulu, ada Asm.js (2013)
Para engineer di Mozilla (si pembuat browser Firefox) punya ide: bagaimana kalau kita bikin "subset" JavaScript yang super ketat, tanpa dynamic typing, jadi browser bisa optimasi lebih cepat? Lahirlah asm.js di 2013.
It's worked! Tapi tetap ada masalah: ukuran file jadi gede banget (karena masih text-based), parsing lambat, dan tetep ada overhead dari JavaScript.
Lahirlah WebAssembly (2017)
WebAssembly (Wasm) datang dengan pendekatan berbeda: binary format. Bukan lagi text yang harus di-parse, tapi instruksi biner yang langsung dijalankan mesin.
Analoginya kayak gini:
- JavaScript itu kayak resep masakan dalam bahasa Indonesia yang harus dibaca sama chef dulu
- Wasm itu kayak makanan frozen yang tinggal dipanaskan microwave
Hasilnya? Performa mendekati native code (hampir secepat C/C++), ukuran file lebih kecil, dan yang paling penting: kamu bisa nulis aplikasi web pakai bahasa apapun (Rust, C++, Go, C#, python, ruby, dll), terus semuanya di-compile jadi Wasm.
- Figma rebuild app mereka pakai Wasm, loading jadi 3x lebih cepat.
- AutoCAD versi web? Pakai Wasm.
- Google Earth di browser? Wasm juga.
Plot Twist: Wasm Kabur dari Browser
Tapi ceritanya nggak berhenti di browser.
Ada engineer yang mikir: "Tunggu deh, kalau Wasm ini format biner yang portable, secure by design, dan fast, kenapa cuma dipake di browser?"
Muncullah WASI (WebAssembly System Interface) di 2019.
Ini game changer. WASI bikin Wasm bisa jalan di mana aja: server, edge computing, IoT devices, bahkan smartphone, semuanya tanpa perlu browser.
Kenapa Ini Revolusioner?
Bayangin:
1. Write Once, Run Anywhere
Compile sekali jadi Wasm, jalan di Linux, Windows, Mac, browser, bahkan Raspberry Pi. Nggak perlu VM berat macam Docker untuk portability.
2. Security by Default
Wasm jalan di sandbox. Nggak bisa akses file system atau network sembarangan kecuali dikasih izin. Perfect untuk plugin systems atau untrusted code.
3. Startup Time Super Cepat
Container Docker butuh 1-2 detik, Wasm cuma milliseconds. Ini kenapa Cloudflare Workers, Fastly Compute@Edge, sama Wasmer.io adopsi Wasm.
Contoh Real-World
Ini aku ada buat project menggunakan python dan di-compile ke Wasm sehingga python bisa berjalan di browser. Nggak percaya? Coba deh kamu akses di sini https://tonidy.github.io/gen-secp
Masa Depan Wasm
Docker container akan tetap ada, tapi Wasm jadi alternatif untuk lightweight workloads. Plugin systems bakal makin banyak pakai Wasm (lihat Envoy Proxy, Shopify Functions). Semakin banyak Wasm yang berjalan di semua tempat baik itu frontend maupun backend.
#100harinulis
#100harimenulis
Day-2/100