DEV Community

Cover image for Discover Bun - A Faster, Modern JavaScript Runtime
Vinit Gupta
Vinit Gupta

Posted on

Discover Bun - A Faster, Modern JavaScript Runtime

Bun is the new Javascript Runtime built from scratch to serve the modern Javascript ecosystem.

But do we really need more Javascript tools?

Well, the Javascript Space is completely different from 15 years ago when NodeJS was first released.

  • Yearly new releases of ECMAScript.
  • Typescript becoming the norm because of the enhanced Developer experience.
  • Use of JSX in almost every development framework.

These have forced the Javascript runtimes to become lighter and faster.

Deno - Modern runtime that becamse Jurasic

A little bit ago, we got Deno. While it is just No-De reversed as De-No, it does more than that.

It's features are listed on their website :

Deno Features

But, Deno essentially failed, because :

Deno only really sported "minor features" from a users perspective. It had a cleaner codebase, used up-to-date best-practices, and had better security, but those things are really only "features" to a user, not a product in themselves.

The Technology Behind Bun

Bun is a Javascript Runtime. But what does it mean actually?
It starts with an Engine - The Component of a runtime that runs the Javascript code.

We all know V8, the JS Engine behind Chrome and NodeJS.
But Bun uses something different - JavascriptCore.

Javascript Core is a PerformancešŸš€ focused solution built by Apple šŸŽ for the Safari Browser

The JS engine cannot work on it's own. So it combines with external APIs and message Queues and the infamous Event loop to create a Javascript Runtime.

Javscript Runtime Internal working

In Bun, this is implemented from scratch using Zig which is a low-level general purpose language like C or Rust for building fast applications.

The above implementation provides better performance and memory management during Start and Runtimes, combined with the promise of mind-blowing speed, you have a real competitor of NodeJS.

Bun Meme

Features of Bun

Bun has a lot of great features that makes it worthy.

1. Support for NodeJS packages šŸŽÆ

Bun is like a Drop-In replacement for NodeJS thanks to the native implementation of 100s of Node modules

Bun also uses the package.json file for dependencies, so less learning curve from NodeJS and bun install is really fast šŸ‘‡

Bun speed

2. Built in Typescript Support and it's fast āš”

Before the dawn of Bun, running typescript was tedious and slow. Bun comes with built in support for running Typescript in your projects and makes it faster.

Typescript Bun

3. Support for both CommonJS and ESModules(MyFavorite) šŸŽ‰

Remember those days where you had to convert your project from the old require syntax to import syntax? Some libraries still not support the import syntax perfectly with Typescript.

This all goes away with Bun. You can write either or both.

Bun Features

4. Built-In Testing Support šŸ’”

You love the Test driven development? Or are you just starting with it? It doesn't matter. Because you do not have to go and learn a new testing framework to do the job.

Bun comes with built-in testing support, and so it is much faster from the other ones out there.

Bun testing Benchmarks

Enough talk, let's see some examples of using Bun šŸ“Œ

Installing Bun

Installing Bun is as simple as below :

curl -fsSL https://bun.sh/install | bash
Enter fullscreen mode Exit fullscreen mode

Setting up a Server

Ready to develop your own service? Create a new file : server.ts and add the following code :

Bun HTTP Server

Start the server

Now to start listening to requests, run the following command(no intermediate step of converting to .js separately) :

bun index.tsx
Enter fullscreen mode Exit fullscreen mode

React Components with Bun

Bun supports .jsx and .tsx files out of the box. Bun's internal transpiler converts JSX syntax into vanilla JavaScript before execution.

JSX With Bun
It also works with the above React component.

With the above features and many more, Bun is ready to become the new norm in the Javascript runtime market.

Do you want to use Bun in your projects? Checkout their official website for Getting Started and installation guides here : Bun.js

Top comments (3)

Collapse
 
devdufutur profile image
Rudy NappƩe

Just try the 1.0 and for me it's promising but lack several features :

  • Not (yet) compatible with windows
  • Cannot bundle scss nor svg as React (or vite) component
  • Dependency resolver miss few transitive dependencies
  • Test runner doesn't support extending expect (necessary for using testing library with jest-dom assertions) and doesn't support (yet) msw.

I'm sure in few months/years it will be a killer app but it's still too early.

Collapse
 
folken718 profile image
OldMan Montoya

Linter and code style would be a good plus

Collapse
 
rizmyabdulla profile image
Rizmy Abdulla

Amazing šŸ‘Œ