"Bun, o compilador JavaScript mais rápido do mundo é lançado oficialmente"
Published: 2023-09-19 20:40:59

Hoje fiquei desacreditado, é 11 de Setembro de 2023 e recebi a notícia de que dia 08 de Setembro a versão 1.0 do Bun saiu, só não soube disso, porque aqui no Brasil foi pós-feriado e muita gente acabou emendando - inclusive eu. Mas vamos lá, o que é o Bun e porquê ele vai revolucionar tanto em questão de velocidade de compiladores.

Você é júnior e não sabe o que é um compilador ou até mesmo passou despercebido durante os estudos, vamos lá que vou te explicar tudo direitinho.

Você pode ver a notícia sobre o [lançamento do Bun lá no Onigiri Hardcore](https://onigirihardcore.com.br/bun-lana-verso-10-e-promete-revolucionar-o-desenvolvimento-web).

## O que são os compiladores?
Compiladores são programas de computador que convertem código-fonte escrito em uma linguagem de programação em código-objeto escrito em uma linguagem de máquina ou seja, um exemplo para quem está familiarizado com Javascript, o Node é um compilador Javascript. Então, ele irá pegar seu código escrito em Javascript e simplesmente ler tudo aquilo e compilar, claro que para cada linguagem temos um compilador diferente, mas a questão aqui é vermos sobre o Bun e sua incrível velocidade referente aos demais no mundo do Javascript. Além de tudo, os compiladores são usados para aumentar a velocidade e a eficiência de execução de programas. Eles também podem ajudar a detectar e corrigir erros de código.

## O que é o Nodejs?
Node.js é um runtime (compilador) JavaScript de código aberto que pode ser usado para executar código JavaScript fora do navegador. Ele é baseado no motor JavaScript V8 do Google Chrome. O Node.js é frequentemente usado para construir aplicações web, mas também pode ser usado para construir aplicações de desktop, aplicações móveis e aplicações de servidor.

## O que é o Deno?
Deno, concorrente direto do Node - aí que surge o trocadilho do nome - é um runtime JavaScript e TypeScript moderno que é seguro por design. Ele é baseado no motor JavaScript V8 do Google Chrome, mas usa um mecanismo de segurança baseado em sandbox para proteger os aplicativos executados nele. O Deno é frequentemente usado para construir aplicações web seguras, mas também pode ser usado para construir aplicações de desktop, aplicações móveis e aplicações de servidor.

## E afinal, o que é o Bun?
Bun é um runtime JavaScript e TypeScript moderno que é rápido e eficiente. Ele é baseado no motor JavaScript V8 do Google Chrome, mas usa um mecanismo de compilação para melhorar o desempenho. O Bun é frequentemente usado para construir aplicações web rápidas e eficientes, mas também pode ser usado para construir aplicações de desktop, aplicações móveis e aplicações de servidor.

## O resultado dos testes
Fiz um teste simples, usando o mesmo arquivo para os três compiladores e o resultado foi surreal. Nesse teste, usei uma matemática simples, usando dez casas decimais e segui essa fórmula para que ele pudesse trazer de resultado: ((a + b) * (c + d)) / (e + f) + g - h;

Claro que para as máquinas isso é mamão com açúcar, mas para nós, levaria mais do que um tempinho para solucionarmos isso, certo? Mas vamos lá.

Pedi para ele me falar quanto tempo ele levou para executar, qual é o tempo em que ele terminou aquilo - sem parar o relógio - e quanto tempo (abstração) ele levou para fazer isso nesse intervalo ou seja: TdE - TdF = TdR (Tempo de Execução menos o Tempo de Finalização receberemos o Tempo de Resultado).

O resultado do Node foi que ele começou em 17.3797 milisegundos, terminou o teste em 17.3852 milisegundos e o tempo que levou para resolver tudo isso foi de 0.0058 milisegundos. É um resultado bastante significativo.

Já o Deno (irmão do meio) começou em 22 milisegundos, terminou em 22 milisegundos e o valor foi menor do que 0.0 milisegundos para retornar o resultado, como ele foi bem chato para nos trazer o valor completo, só tivemos esse valor por cima.

E então que surge o irmão mais novo, o Flesha da família. O Bun, levou 10.888466 milisegundos para começar, 10.888736 milisegundos para finalizar e levou cerca de apenas 0.0002 milisegundos para resolver a matemática.

![Test Results](https://user-images.githubusercontent.com/23272064/267136008-9c99d1eb-122e-4207-a16b-df7ed0328038.png)

## Avaliação
Sim! Esse valor é muito, mas muito rápido do que os dois comparados. Em questão de velocidade, o Bun é o primeiro, seguido pelo Node e pelo Deno. O mais incrível de tudo isso é que o Bun está na versão 1.0.0, enquanto o Node está na versão 18.17.1 e o Deno na v.1.36.4.

Eu fiquei alucinado quando vi isso. Claro que, em termos de velocidade, os três runtimes são muito rápidos. Mesmo o mais demorado, o Deno, gastou apenas 22 milissegundos para responder. Mas ver que o Bun é capaz de fazer isso em 10 milissegundos é simplesmente incrível.

Claro que fizemos um teste simples, mas ele é suficiente para mostrar que o Bun é muito mais rápido que qualquer outro compilador. Em grande escala, como nos vários projetos que carregamos no Node, a diferença é ainda mais significativa. Um projeto que leva cerca de 10, 15 segundos para ser executado no Node pode ser executado em apenas 1 segundo no Bun.

Em termos técnicos, avaliando os resultados dos testes e os recursos de cada runtime, pode-se concluir que o Bun é a melhor opção para aplicações web que exigem alta performance e eficiência, o Node.js é uma boa opção para aplicações web que não exigem alta performance e o Deno é uma boa opção para aplicações web seguras.

Agora por trás das cortinas, eu não digo nada se eu mudar meus projetos para o Bun. A versão estável dele foi lançada ao público e é garantida como segura para uso em produção.

E você? Vai mudar de compilador também ou vai esperar um pouco? Comenta comigo lá no Twitter!

Você pode ver esse artigo escrito [originalmente no meu blog](https://yagasaki.dev/blog).