stamatios
← Voltar ao feed
Motor Bun passa por testes enquanto reduz medidores de CPU e memória na versão 1.4
Dev & Engenharia · Open Source

Bun 1.4 reduz consumo de CPU e memória e amplia compatibilidade

resumo de ~3 min

Desempenho e compatibilidade

A versão 1.4 do Bun adiciona 1.517 testes da suíte do Node.js, corrige mais de 2.900 problemas e amplia a compatibilidade com APIs e ferramentas do ecossistema JavaScript. Segundo os testes apresentados, os módulos node:http, node:fs, node:cluster, node:timers, node:zlib, node:vm e node:stream passaram em 97% dos testes próprios do Node.js; node:quic passou em 99%, enquanto node:events, node:trace_events e node:sqlite chegaram a 100%. O projeto ressalta, porém, que ainda não é 100% compatível com Node.js.

A atualização permite executar Playwright, incluindo playwright test, --ui, connectOverCDP() e Chromium no Windows. Também suporta Next.js 16.3 com Turbopack e React Compiler, Vitest com cobertura e pools de threads e processos, além de instrumentação de HTTP e sistema de arquivos do OpenTelemetry e rastreamento e criação de perfis contínuos pelo dd-trace. Entre outras melhorias, Nuxt, testcontainers, Dockerode, clientes de proxy, Crawlee, bibliotecas gRPC, RabbitMQ, AWS SDK para S3, TypeORM, Nock, Fastify, Piscina e outros pacotes passam a funcionar ou recebem correções específicas.

CPU, memória e inicialização

O Bun 1.4 troca a implementação do runtime de Zig para Rust e modifica o gerenciamento de memória: o JavaScriptCore passa a usar mimalloc, complementado por limpeza parcial de páginas, uma thread que libera memória durante períodos de inatividade e melhorias na zeragem preguiçosa. A equipe afirma que o consumo de CPU ocioso de um aplicativo simples caiu cinco vezes. No Claude Code, um aplicativo grande e de longa duração construído com Bun, o uso de CPU em produção caiu de 24% para 10% no p99 e de 5,8% para 2,5% no p50.

Nos testes com servidores HTTP, a redução de memória em relação ao Bun 1.3 variou de 13% a 48%, dependendo da aplicação: 48% no Fastify, 46% no Express, 40% em node:http e Elysia, 28% no Next.js, 20% no Bun.serve e 13% no servidor de desenvolvimento do Vite. Em um padrão de renderização no servidor do Next.js que crescia sem limite na versão 1.3, o Bun 1.4 estabilizou em 238 MB para 4.000 páginas, contra 410 MB no Node.js.

A inicialização ficou 2,5 vezes mais rápida no Windows e duas vezes mais rápida no Linux. O binário diminuiu até 17% no Linux e no Windows, embora tenha ficado cerca de 1 MB maior no macOS.

Fluxos, observabilidade e operação

Streams de leitura, escrita e transformação agora são nativos e passam em 100% dos testes da plataforma web. Em testes com blocos de 64 MB, o Bun 1.4 superou Node.js e Deno em várias operações de fluxo, incluindo download descompactado, upload comprimido, transcodificação e passagem por subprocessos. CompressionStream e DecompressionStream foram implementados nativamente; em um teste de descompressão de texto JSON, o Bun alcançou 2.291 MB/s, contra 491 MB/s no Node.js e 679 MB/s no Deno.

A versão também reduz cópias em Response.clone(), diminuindo o pico de memória em testes de 64 MB, e usa cerca de metade da memória anterior em TextEncoderStream e TextDecoderStream. Novos recursos incluem perfis de CPU e heap em Markdown, o evento memoryPressure, bun run --parallel, bun test --parallel, comandos de auditoria e limpeza de dependências, além de melhorias de controle de fluxo para evitar que clientes lentos acumulem buffers no servidor.