Novos Recursos do Bun 1.2 - Suporte Completo ao Windows e Melhoria na Compatibilidade com Node.js

2025.12.12

Lançamento do Bun 1.2

Bun, o runtime JavaScript que vem ganhando atenção por sua alta velocidade, lançou a versão 1.2. Com suporte completo ao Windows, grande melhoria na compatibilidade com Node.js e cliente S3 integrado, a praticidade aumentou ainda mais.

O que é Bun: Um runtime JavaScript/TypeScript de alta velocidade escrito em Zig. Oferece runtime, bundler, gerenciador de pacotes e executor de testes em uma única ferramenta.

Principais Novos Recursos

1. Suporte Completo ao Windows

O suporte ao Windows, que antes estava em versão beta, agora é totalmente suportado. As mesmas funcionalidades do macOS e Linux estão disponíveis.

# Windows (PowerShell)
powershell -c "irm bun.sh/install.ps1 | iex"

# Ou via npm
npm install -g bun

2. 92% de Compatibilidade com Node.js

A cobertura da API do Node.js melhorou significativamente. A maioria dos pacotes npm principais agora funciona.

MóduloStatus
node:fs / node:pathTotalmente compatível
node:http / node:httpsTotalmente compatível
node:cryptoQuase totalmente compatível
node:net / node:tlsTotalmente compatível
node:child_processTotalmente compatível
node:worker_threadsTotalmente compatível

3. Cliente S3 Integrado

O acesso ao AWS S3 agora é suportado nativamente. Operações S3 são possíveis sem bibliotecas externas.

// Ler arquivo do S3
const file = Bun.s3.file("s3://my-bucket/data.json");
const data = await file.json();

// Upload de arquivo para S3
await Bun.s3.write("s3://my-bucket/output.txt", "Hello S3!");

// Credenciais são obtidas automaticamente das variáveis de ambiente
// AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY

4. Postgres Integrado

O cliente PostgreSQL também está disponível nativamente.

import { sql } from "bun";

// Conexão gerenciada automaticamente
const users = await sql`
  SELECT * FROM users
  WHERE created_at > ${new Date('2025-12-01')}
`;

// Transação
await sql.begin(async (sql) => {
  await sql`INSERT INTO logs (message) VALUES (${'Started'})`;
  await sql`UPDATE users SET status = 'active'`;
});

5. Lock File em Texto

O bun.lock mudou de formato binário para formato de texto. Agora é mais fácil visualizar diffs.

Comparação de Performance

BenchmarkNode.js 22Deno 2.0Bun 1.2
Tempo de inicialização~35ms~25ms~7ms
Servidor HTTP (req/s)~80,000~100,000~150,000
npm install (limpo)~15sN/A~3s
Leitura de arquivos1.0x1.2x2.5x

Por que é tão rápido: Bun usa o motor JavaScriptCore (o mesmo do Safari) e é otimizado em Zig. Além disso, o gerenciador de pacotes utiliza cache global para minimizar I/O.

Melhorias nas Ferramentas de Desenvolvimento

Melhorias no bun test

// Arquivo de teste (app.test.ts)
import { describe, it, expect, mock } from "bun:test";

describe("Math operations", () => {
  it("should add numbers correctly", () => {
    expect(1 + 2).toBe(3);
  });

  it("should mock functions", () => {
    const fn = mock(() => 42);
    expect(fn()).toBe(42);
    expect(fn).toHaveBeenCalledTimes(1);
  });
});

// Execução
// bun test            # Todos os testes
// bun test --watch    # Modo watch
// bun test --coverage # Com cobertura

Status de Suporte a Frameworks

FrameworkStatusObservações
ElysiaTotalmente suportadoExclusivo para Bun, mais rápido
HonoTotalmente suportadoMulti-runtime
ExpressTotalmente suportadoFunciona por compatibilidade
FastifyTotalmente suportadoSuporte oficial a partir da v5
Next.jsExperimentalAlgumas funcionalidades limitadas
NuxtSuportadoPreset Nitro

Exemplo com Elysia

import { Elysia } from 'elysia';

const app = new Elysia()
  .get('/', () => 'Hello Bun!')
  .get('/user/:id', ({ params: { id } }) => {
    return { id, name: 'User ' + id };
  })
  .post('/json', ({ body }) => body)
  .listen(3000);

console.log(`Running at ${app.server?.hostname}:${app.server?.port}`);

Dicas de Migração

Migrando do Node.js

# 1. package.json pode ser usado como está
bun install

# 2. Execução de scripts
bun run dev          # scripts do package.json
bun run src/index.ts # Execução direta

# 3. Variáveis de ambiente
# Arquivos .env são carregados automaticamente

# 4. Verificação de tipos é necessária separadamente
bun x tsc --noEmit

Pontos de Atenção

  • Alguns módulos nativos (node-gyp) podem não funcionar
  • Next.js App Router não é totalmente compatível
  • Adoção em produção deve ser avaliada caso a caso

Resumo

Bun 1.2 é um lançamento que melhora significativamente a praticidade. Pontos principais:

  • Suporte completo ao Windows: Desenvolvimento cross-platform facilitado
  • 92% de compatibilidade com Node.js: A maioria dos pacotes npm funciona
  • Recursos integrados: Redução de dependências externas como S3, Postgres
  • Velocidade impressionante: Inicialização, execução e gerenciamento de pacotes são todos rápidos

Para novos projetos ou casos onde performance é importante, vale a pena considerar ativamente o Bun.

← Voltar para a lista