Beberapa perangkat lunak paling berat yang Anda pakai setiap hari kini berjalan di dalam tab browser: alat desain lengkap, editor foto, globe 3D, editor video. Semua itu dulu tidak praktis ketika JavaScript adalah satu-satunya bahasa yang bisa dijalankan browser dengan cepat. WebAssembly, yang biasa disingkat Wasm, adalah teknologi yang mengubah keadaan itu. Teknologi ini memberi browser cara kedua yang jauh lebih cepat untuk menjalankan kode, tanpa menggantikan JavaScript.
Poin Penting
WebAssembly adalah format biner portabel, bukan bahasa pemrograman yang Anda tulis langsung. Anda mengompilasi kode yang ditulis dalam bahasa seperti C, C++, Rust, atau Go menjadi Wasm, lalu browser menjalankannya.
Wasm berjalan berdampingan dengan JavaScript, bukan menggantikannya. JavaScript tetap menangani halaman, DOM, dan web API, sementara Wasm menangani komputasi berat.
Teknologi ini menjadi Rekomendasi W3C pada Desember 2019, dan semua browser utama sudah mendukungnya sejak 2017.
Teknologi yang sama kini berjalan di luar browser juga, di server dan platform edge, melalui WebAssembly System Interface (WASI).
Gunakan Wasm saat tugasnya berat secara komputasi, seperti pemrosesan gambar, game, atau encoding video. Untuk logika halaman biasa, JavaScript polos tetap menjadi pilihan yang lebih sederhana.
Apa Itu WebAssembly?
WebAssembly adalah format biner tingkat rendah yang mirip assembly dan bisa dieksekusi browser dengan kecepatan hampir natif. Kata kuncinya adalah "target": pengembang jarang menulis Wasm secara langsung. Sebagai gantinya, mereka menulis kode dalam bahasa seperti C, C++, Rust, atau Go, lalu compiler mengubah kode itu menjadi modul `.wasm` yang ringkas. Browser mengunduh modul tersebut, memvalidasinya, dan menjalankannya di lingkungan sandbox.
MDN menjelaskan WebAssembly sebagai format bytecode tingkat rendah yang awalnya dirancang untuk web, dibangun sebagai target kompilasi yang efektif untuk bahasa seperti C, C++, dan Rust, dan mencatat bahwa teknologi ini menyediakan cara menjalankan kode yang ditulis dalam banyak bahasa di web dengan kecepatan hampir natif.
Sandbox itu penting. Kode Wasm tidak bisa menyentuh jaringan, sistem file, atau halaman secara langsung. Kode itu hanya bisa melakukan hal-hal tersebut melalui JavaScript dan web API yang sudah bisa diakses JavaScript, dan mengikuti aturan keamanan yang sama, termasuk kebijakan same-origin. Hasilnya adalah kode yang cepat, tetapi tetap dibatasi seperti kode web lainnya.
Sejarah Singkat: Dari Pengumuman 2015 Menjadi Standar Web
WebAssembly pertama kali diumumkan pada 2015, dan produk minimum yang layak (minimum viable product) dinyatakan selesai pada Maret 2017, dengan keempat mesin browser utama merilis dukungan pada tahun yang sama. Pendahulunya adalah asm.js dari Mozilla dan Native Client dari Google, dan desain awalnya didasarkan pada fitur asm.js.
Pada 5 Desember 2019, WebAssembly menjadi Rekomendasi W3C, menempatkannya sejajar dengan HTML, CSS, dan JavaScript sebagai teknologi inti web. Wikipedia mencatat pengumuman pada 2015, rilis pertama pada Maret 2017, dan Rekomendasi W3C pada 5 Desember 2019.
Pengembangan tidak berhenti di situ. WebAssembly 2.0, yang selesai dalam bentuk draf pada 2022, menambahkan instruksi vektor (SIMD), operasi memori massal, banyak nilai kembalian, dan tipe referensi sederhana. Lalu, pada 17 September 2025, webassembly.org mengumumkan Wasm 3.0 sebagai standar live yang baru, membawa garbage collection, penanganan exception, tail call, dan memori 64-bit. Ruang alamat 64-bit terutama penting di luar browser: di web, batasnya adalah 16 gigabita, tetapi runtime di luar web kini bisa mendukung kumpulan data yang jauh lebih besar.
Cara WebAssembly Bekerja Bersama JavaScript
Bayangkan browser memiliki dua mesin yang bekerja sama. JavaScript menangani interaktivitas, DOM, dan web API. Wasm menangani pekerjaan berat. Alur yang umum terlihat seperti ini:
JavaScript mengambil modul `.wasm`, sering dengan kompilasi streaming sehingga eksekusi bisa dimulai selagi sisa file masih diunduh.
Browser memvalidasi modul, memeriksa bahwa tipe dan penggunaan memorinya aman, sebelum menjalankan satu instruksi pun.
JavaScript memanggil fungsi Wasm yang diekspor, mengirim angka atau memori bersama bolak-balik.
Wasm mengembalikan hasil, dan JavaScript memperbarui halaman dengan hasil itu.
Pembagian tugas inilah intinya. Anda tidak menulis ulang aplikasi dalam Wasm. Anda mempertahankan JavaScript yang sudah ada, dan hanya memindahkan jalur panasnya, yaitu loop yang berjalan jutaan kali, ke bahasa yang dikompilasi.
WebAssembly vs JavaScript: Kapan Masing-Masing Menang
Aspek | JavaScript | WebAssembly |
|---|---|---|
Kegunaan | Logika halaman, UI, web API | Komputasi berat |
Ditulis dalam | JavaScript atau TypeScript | C, C++, Rust, Go, C#, dan lainnya |
Kecepatan untuk pekerjaan berat | Bagus, dan membaik setiap tahun | Hampir natif, sering jauh lebih cepat |
Akses ke DOM | Langsung | Hanya melalui JavaScript |
Biaya startup | Parse dan kompilasi | Unduh, validasi, kompilasi |
Paling cocok untuk | Sebagian besar aplikasi web | Game, editor, codec, simulasi |
Tabel ini juga menjelaskan kapan sebaiknya tidak memakai Wasm. Jika aplikasi Anda sebagian besar tombol, formulir, dan panggilan API, Wasm menambah kompleksitas build tanpa keuntungan yang terlihat. Keuntungannya muncul saat perhitungan yang sama berjalan berulang-ulang: menerapkan filter ke setiap piksel foto, mensimulasikan fisika, meng-encode video, atau menjalankan game loop.
Di Mana Anda Sudah Memakai WebAssembly
Anda mungkin sudah memakai Wasm tanpa menyadarinya. Bab WebAssembly dalam Web Almanac 2022 menyebut Google Earth, di mana aplikasi desktop C++ menjadi tersedia di browser, Figma, yang mengalami peningkatan performa signifikan berkat teknologi ini, dan Photoshop versi web, yang memakainya dengan alasan serupa. Mesin game seperti Unity dan Unreal juga mengekspor ke WebAssembly, sehingga game 3D lengkap bisa berjalan di tab tanpa plugin dan tanpa instalasi.
Contoh sehari-hari lainnya termasuk alat video di browser yang dibangun dari FFmpeg yang dikompilasi ke Wasm, yang melakukan transcode video sepenuhnya di perangkat Anda, dan inferensi machine learning yang berjalan lokal di browser alih-alih di server. Jika sebuah aplikasi web terasa sangat bertenaga untuk sesuatu yang berjalan di tab, Wasm adalah tersangka yang mungkin.
Melampaui Browser: WASI dan Component Model
WebAssembly dirancang untuk web, tetapi tidak membuat asumsi khusus web, sehingga teknologi ini cepat keluar dari browser. Bagian yang hilang adalah cara bagi modul Wasm untuk berbicara dengan dunia luar, karena modul browser tidak memiliki sistem file atau jaringannya sendiri. Bagian itu adalah WASI, WebAssembly System Interface: antarmuka standar berbasis kapabilitas yang memberi modul akses terkendali ke file, jam, angka acak, dan, pada versi yang lebih baru, jaringan serta antarmuka yang lebih kaya antar komponen.
Dengan WASI, modul yang sama, yang tersandbox dan portabel, bisa berjalan di server, di edge, atau di perangkat kecil, memakai runtime seperti Wasmtime atau Wasmer. Cloudflare Workers dan Fastly Compute menjalankan Wasm di edge, di mana ukurannya yang kecil dan startup yang cepat sangat cocok. Component Model melangkah lebih jauh, memungkinkan modul yang ditulis dalam bahasa berbeda tersusun menjadi satu aplikasi dengan antarmuka bertipe, seperti plugin yang bisa dicampur dan dipadankan dengan aman.
Ini adalah gagasan portabilitas yang sama di balik container, tetapi pada satuan yang lebih kecil: Docker Dijelaskan: Apa Itu Container dan Mengapa Developer Menyukainya membahas sisi container dari cerita itu, sementara Wasm menawarkan unit deployment yang lebih ringan dan netral terhadap bahasa.
Cara Mencoba WebAssembly Sendiri
Anda tidak perlu mempelajari bahasa baru untuk bereksperimen. Jalur tercepat:
Pilih bahasa dengan tooling Wasm yang bagus. Rust, dengan `wasm-pack` dan `wasm-bindgen`, adalah rute paling ramah pemula saat ini. Developer C dan C++ biasanya memakai Emscripten.
Tulis fungsi kecil yang berat secara komputasi, misalnya filter gambar atau rutinitas pengurutan.
Kompilasi menjadi modul `.wasm` dan muat dari halaman JavaScript kecil dengan `WebAssembly.instantiateStreaming`.
Ukur sebelum dan sesudahnya. Jika versi Wasm tidak jelas lebih cepat, tugas itu mungkin memang tidak membutuhkannya, dan itu juga hasil yang berguna.
Untuk debugging, browser kini menyertakan developer tool yang memahami Wasm, dan format teks yang bisa dibaca manusia, yang disebut WAT, memungkinkan Anda memeriksa modul saat ada yang tampak salah. Ekosistemnya sudah cukup matang sehingga bagian sulitnya bukan lagi tooling, melainkan memilih beban kerja yang tepat.
Pertanyaan yang Sering Diajukan
Apakah WebAssembly akan menggantikan JavaScript?
Tidak. WebAssembly tidak bisa mengakses DOM atau web API secara langsung, dan dirancang untuk melengkapi JavaScript, bukan menggantikannya. JavaScript tetap menjadi bahasa halaman web, sementara Wasm menangani komputasi yang lambat bagi JavaScript.
Apakah saya perlu mempelajari WebAssembly itu sendiri?
Hampir pasti tidak. Sebagian besar developer menulis dalam Rust, C++, Go, atau bahasa lain lalu mengompilasinya ke Wasm. Mengetahui cara modul dimuat dan cara memori dibagikan dengan JavaScript sudah cukup untuk sebagian besar proyek.
Apakah WebAssembly didukung semua browser?
Ya, dalam praktiknya. Semua browser utama sudah merilis dukungan WebAssembly sejak 2017, dan fitur intinya stabil di Chrome, Firefox, Safari, dan Edge. Fitur yang lebih baru seperti thread atau garbage collection diluncurkan bertahap, jadi periksa dukungan untuk fitur spesifik yang Anda butuhkan.
Apakah WebAssembly hanya untuk browser?
Tidak. Melalui WASI dan runtime mandiri, modul Wasm berjalan di server, di edge, dan di perangkat embedded. Browser adalah tempatnya bermula, bukan tempatnya berakhir.
Kesimpulan
WebAssembly diam-diam menjadi salah satu teknologi inti web: diumumkan pada 2015, dirilis di semua browser utama pada 2017, distandardisasi oleh W3C pada 2019, dan diperluas menjadi standar 3.0 penuh pada 2025. Teknologi ini tidak mengubah tujuan web, tetapi mengubah apa yang bisa ditangani web. Editor kelas desktop, game, dan alat media kini berjalan di tab karena browser memiliki cara yang cepat, aman, dan portabel untuk menjalankan kode yang dikompilasi, tepat di samping JavaScript.
Jika Anda membangun sesuatu yang berat secara komputasi untuk web, Wasm layak dipertimbangkan serius. Jika Anda membangun aplikasi web biasa, Anda tetap diuntungkan setiap kali membuka Figma, mengedit foto, atau bermain game di browser, tanpa pernah menulis satu baris pun darinya.
Baca artikel ini dalam bahasa Inggris: WebAssembly Explained: How Near-Native Speed Runs in Your Browser
