- Authors
- Name
- Iqbal Nurkholis
- Github
- @iqbl-nrkhls
Apr 1, 2023
Mengenal runtime "Bun", akankah menyingkirkan Node.js dan Deno?
Banyak orang yang sudah mengenal runtime javascript terpopuler yaitu Node.js yang memiliki sekitar 94 ribu bintang pada repositori GitHub Node.js saat tulisan ini dibuat. Node.js hadir sejak tahun 2009 dan dibangun menggunakan engine javascript v8. Setelah 15 tahun, Node.js menjadi pelopor runtime javascript yang berjalan diluar browser, hadirlah runtime baru bernama Bun. Saat kemunculannya nama Bun cukup ramai dibicarakan karena, Bun sendiri mengklaim bahwa runtime miliknya ini mampu menyaingi runtime yang sudah 15 tahun berjalan ini, bahkan bisa lebih cepat hingga lebih dari dua kali lipat yang Node.js mampu lakukan. Bun tidak menggunakan engine v8 melainkan menggunakan engine JavascriptCore
, jadi Bun ini dibangun dengan inti dari Javascript yang membuat Bun ini lebih cepat dibandingkan Node.js yang menggunakan engine v8.
Singkat Cerita Bun
Bun ini ditemukan oleh seseorang bernama Jarred Sumner, seseorang Frontend Engineer di salah satu platform pembayaran global Stripe. Pada awalnya, Sumner sedang mengembangkan sebuah game dengan teknologi Next.js, akan tetapi dia frustasi karena kecepatan dari siklus iterasi yang dihasilkan tidak sesuai harapan. Kemudian dia menemukan solusi pertama dengan menggunakan esbuild
builder yang diracik dengan si Next.js ini, tetapi hal tersebut tidak memberikan hasil yang memuaskan. Kemudian si Sumner berfikir kembali bagaimana bisa meningkatkan siklus iterasi, dan akhirnya menemukan ide untuk membuat bundler dan sebuah transpiler. Dalam pikirnya si Sumner, kenapa ga sekalian aja membuat runtime yang sudah termasuk bundler dan transpiler di dalamnya.
Kamudian Sumner mencari referensi bahasa pemrograman yang bisa digunakan untuk membuat Bun. Setelah melihat dan menimbang bahasa pemrograman yang digunakan, akhirnya Sumner memutuskan untuk memilih Zig
, padahal bahasa ini tidak begitu populer. Beberapa konsep yang digunakan pada Zig
sejalan dengan pemikiran Sumner yang ingin mengejar kecepatan dalam siklus iterasi dalam pengeksekusian proses data. Zig menggunakan pendekatan "comptime" metaprograming untuk mencapai harapannya. Dalam konsepnya Sumner melakukan optimasi dalam waktu startup, dan juga penggunaan memori.
Memulai dengan Bun
Saat tulisan ini dibuat memang bun masih dalam versi 0.4.0 (beta) yang artinya Bun masih dalam tahap pengembangan.
Namun bagi kalian yang ingin mencoba kecepatan dari bun, maka tidak ada salahnya untuk menginstall Bun. Untuk menginstallnya, berdasarkan website resminya Bun hanya dapat diinstal menggunakan bash script, dan script ini akan mendownload Bun dari github. Jalankan kode berikut pada terminal:
curl -fsSL https://bun.sh/install | bash
Catatan: Untuk menginstal Bun di Windows kalian memerlukan WSL untuk menjalankan perintah CURL
Setelah Bun terinstall, kita dapat membuat sebuah server HTTP standar dengan Request
dan Response
.
// http.js
export default {
port: 3000,
fetch(request) {
return new Response("Welcome to Bun!");
},
};
Kemudian jalankan dengan Bun di terminal.
bun run http.js
Taraaa! Server kalian sudah siap, untuk melihatnya buka http://localhost:3000 di browser kalian.
Perintah Bun
Berikut beberapa perintah yang terdapat pada Bun
bun run
Layaknya npm run
perintah ini akan menjalankan kode JavaScript ataupun TypeScript dengan runtime JavaScript Bun yang terdapat pada package.json "scripts"
. Bun menklaim bahwa menjalankan kode JavaScript dengan bun run
lebih cepat 30 kali daripada menggunakan npm run
Replace
npm run
withbun run
and save 160ms on every run
bun install
Seperti npm install
perintah akan menginstall package-package yang dibutuhkan. Perintah ini juga sudah mendukung semua package yang ada di npm.
Replace
yarn
withbun install
and get 20x faster package installs
bunx <command>
Otomatis akan menginstall dan menjalankan program/perintah baik dari lokal ataupun package dari npm.
Replace
npx
withbunx
and get 100x faster startup times for local packages.
bun test
Perintah ini akan melakukan testing kepada kode JavaScript atau TypeScript kita. Runner seperti Jest sudah termasuk dalam program Bun.
Sekian informasi yang bisa saya sampaikan, semoga bermanfaat.
Terimakasih ^^