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ódulo | Status |
|---|---|
| node:fs / node:path | Totalmente compatível |
| node:http / node:https | Totalmente compatível |
| node:crypto | Quase totalmente compatível |
| node:net / node:tls | Totalmente compatível |
| node:child_process | Totalmente compatível |
| node:worker_threads | Totalmente 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
| Benchmark | Node.js 22 | Deno 2.0 | Bun 1.2 |
|---|---|---|---|
| Tempo de inicialização | ~35ms | ~25ms | ~7ms |
| Servidor HTTP (req/s) | ~80,000 | ~100,000 | ~150,000 |
| npm install (limpo) | ~15s | N/A | ~3s |
| Leitura de arquivos | 1.0x | 1.2x | 2.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
| Framework | Status | Observações |
|---|---|---|
| Elysia | Totalmente suportado | Exclusivo para Bun, mais rápido |
| Hono | Totalmente suportado | Multi-runtime |
| Express | Totalmente suportado | Funciona por compatibilidade |
| Fastify | Totalmente suportado | Suporte oficial a partir da v5 |
| Next.js | Experimental | Algumas funcionalidades limitadas |
| Nuxt | Suportado | Preset 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