What’s your present JavaScript runtime, and why is it Node.js? However have you ever heard there’s a brand new answer on the town? Bun is a local code bundler, transpiler, and activity runner with a built-in npm shopper. The creators promised to satisfy our want for velocity and prioritized Bun’s efficiency over all different options. On this article, I’ll present you how one can begin an current Node.js venture on this new JavaScript runtime and examine if Bun is actually the quickest on the market.
First issues first, what’s JavaScript runtime?
A runtime atmosphere is the place your program shall be executed. You are able to do it:
- by JavaScript engine built-in browser (V8 developed by the Chromium Challenge for Google Chrome)
- on server environments (resembling Node.js or Bun) that are de-facto implementations of a “browser” operating on the server.
There are few Javascript runtimes available on the market. As of writing this text, the highest three seem like this.
Node.js
Node.js – the most well-liked (by GitHub stars), the oldest, however above all “the primary one”. Earlier than Node, JS existed solely within the browser, so now we have rather a lot to be glad about.
At The Software program Home, we run our JS functions on Node.js, because it’s a longtime JS execution atmosphere. In reality, it’s the one one supported by AWS Lambda and GCP Capabilities.
Should you’re right here, you positively know Node inside and outside, so let’s transfer on.
Deno
In second place there may be Deno. We’ve already made some makes an attempt to check out Deno and we actually gave it an opportunity. Sadly, we didn’t discover it convincing sufficient to maneuver to this nonetheless barely immature JS runtime.
Learn extra about our Deno experiences:
- Deno tutorial – sensible overview of Node.js’ rival
- Let’s make a REST API with Deno! A better take a look at Node’s various
However the truth was a truth – a contest appeared. We have now been curious ever since if one thing else than Node.js and Deno would fulfill JS builders’ hopes for tremendous quick JS functions.
After which Bun was baked in Oven!
What’s Bun?
As of writing, the third place is occupied by contemporary and crisp Bun – the latest and fastest-growing JS runtime. Bun attracted loads of consideration when it gained $7 million in funding in August 2022.
All the Bun venture focuses on efficiency and being an all-in-one device (runtime, bundler, package deal supervisor, transpiler).
Within the “conventional” Node.js, you want the mixed energy of a few instruments to realize the identical targets: npm, Webpack, and many others.
How is Bun imagined to be sooner than Node?
Aiming to spice up its efficiency, the Bun workforce wrote it from scratch in Zig, a low-level C various. The browser engine operating JS code in Bun relies on JavaScript Core – the JS engine inside Safari that’s thought-about sooner than Node’s V8, the engine inside Chromium.
Bun ships and the event workforce declare it’s sooner due to an infinite period of time spent profiling, benchmarking, and optimizing issues. The final theme: Zig’s low-level management over reminiscence and lack of hidden management move makes it a lot simpler to write down quick software program.

In abstract, Bun creators declare that it serves 4 occasions extra requests per second and packages are put in 30 occasions sooner than by npm.

My time with Bun
After studying Bun creator’s assurances and neighborhood dialogue, I believed “that’s some massive claims”. I used to be curious if what they are saying is true. Is Bun actually that quick? Truly sooner than Node.js?
I’ve already seen a couple of benchmarks (and different tech options for that matter) that promised the world however hardly delivered, so I used to be not going to exchange Node with none exhausting knowledge. So I’ve executed what’s wanted to be executed: set up Bun and get the quantity with some efficiency testing.
Let’s transfer on to implementation.
Learn how to run your Categorical app with Bun?
With a purpose to check Bun, I used The Software program Home’s selfmade (or ought to I fairly say “officemade”) Categorical Boilerplate. This boilerplate is very scalable and focuses on efficiency and greatest practices boilerplate code for Node.js and TypeScript apps.
If you wish to begin your Node.js initiatives even sooner, right here’s an in depth overview of the TSH-original boilerplate:
- Construct scalable Node.js apps sooner with this boilerplate
So, to run Bun you must comply with these steps:
$ curl https://bun.sh/set up | bash
$ export BUN_INSTALL="$HOME/.bun"
$ export PATH="$BUN_INSTALL/bin:$PATH"
$ cd repo
$ cp docker-compose.override.yml.dist docker-compose.override.yml
$ cp .env.dist .env
$ bun i
$ bun run docker-build
$ bun run watch
$ bun run begin
As you possibly can see, runs with no modifications.
Let’s examine Bun and Node!
1. Bundle set up time
The primary check we’re operating is package deal set up time. We did a easy check, to simulate real-life workflow.
- Npm run put in 1273 packages in 23 seconds,
- Bun run put in 1003 in 15,6 seconds.
?WINNER: BUN*
*Disclaimer: Bun certainly is 32% sooner, however the execution time it’s not as quick as Bun’s creator promised
2. Docker picture
The second factor to check is constructing the primary docker picture.
?WINNER: NPM
Utilizing Bun doesn’t appear to have an effect on Docker image-building time.
3. App-builder
Take a look at quantity three will test how Bun and npm take care of beginning app-builder.
?WINNER: BUN
The distinction is so minimal that there’s no cause to modify to Bun on objective.
4. Software begin time
The fourth factor we examine is the applying begin time.
?WINNER: BUN
…however once more, the distinction is negligible.
Now, an important. Is Bun sooner than Node?
Beneath, we’re testing easy get endpoint /well being
The device we use on this check is WRK – a contemporary HTTP benchmarking device able to producing important load when run on a single multi-core CPU.
In these checks, we’re utilizing Node 16.15.0 and Bun 0.2.1.
Take a look at 1. 10000 connections in 60 seconds with a variable variety of threads
?WINNER: NODE
Okay, truthful sufficient. How about we tweak it up a bit with completely different parameters?
10 threads in 60 seconds, with a variable variety of connections
As you possibly can see, relying on the variety of connections and the variety of threads the outcomes are related. However normally, Node.js is quicker. So…
?WINNER: NODE
Must you transfer from Node to Bun? In all probability not
I’ve acquired some excellent news and unhealthy information.
The unhealthy information: Bun is just not going to be a drop-in alternative for Node anytime quickly
For this text, I’ve used an current Node.js utility. I can inform you that it’s not price operating your steady Node app on Bun. Regardless that there’s huge potential and room for growth – for now, it’s simply too immature. Bun’s nonetheless new has no full documentation, and numerous errors could happen throughout implementation. Additionally, I’m fairly positive that within the foreseeable future it received’t be helpful in serverless options utilizing AWS Lambda, or Google Cloud Capabilities (as of writing, Node.js is the one supported atmosphere). It is going to take a while for Bun.js to develop and develop into a expertise that we are able to use in business initiatives. At current, Bun’s tiny wins in velocity checks received’t compensate for the time misplaced in the event you run into sudden errors.
Should you began a brand new self-hosted early-stage venture you need to use Bun.js from the start and optimize it for working with Bun. Then, positive – go for it!
A small comfort for the Bun workforce whereas they’re in all probability bettering their answer – you have already got the sweetest brand within the sport. Simply look once more at how cute it’s!
The excellent news: Node.js shall be pressured to innovate
Now, Node.js has not just one however two potential rivals available on the market. I guess the Node workforce shall be extra “motivated” to extend their product’s efficiency as a lot as they will.
I imagine that these applied sciences will probably coexist within the ecosystem fairly than one displacing the opposite, very similar to a number of JDK distributions have spawned within the Java world, one being chosen above one other principally for licensing causes. However figuring out the fast-changing world of JavaScript, quickly a brand new expertise will seem with the intention to take over the market.