- O REPL foi completamente reescrito em Zig, oferecendo execução instantânea e uma interface de terminal rica, com suporte a cópia para a área de transferência, autocompletar com Tab, salvamento de histórico e vários outros recursos
- Com o comando de compilação para alvo de navegador, é possível gerar um único arquivo HTML com tudo inline, executável mesmo sem servidor
- Há suporte completo aos decorators ES padrão do TC39, permitindo usar sintaxes modernas como
accessor, Symbol.metadata e addInitializer
- Inclui várias melhorias de plataforma e desempenho, como suporte ao Windows ARM64, otimização de barrel imports, opção de repetição de testes e melhorias de desempenho no engine JavaScriptCore
- No geral, é uma versão que melhora bastante a experiência do desenvolvedor, o desempenho e a compatibilidade do Bun
Novo REPL
- O REPL foi substituído por uma implementação nativa baseada em Zig, podendo ser executado instantaneamente sem dependência de pacotes npm externos
- Suporte a realce de sintaxe, atalhos do Emacs, autocompletar com Tab, salvamento de histórico e entrada multilinha
- Inclui comandos embutidos como
.copy, .help, .exit e .editor
- Mantém declarações
const/let e suporta tanto top-level await quanto import/require
--compile --target=browser
bun build --compile --target=browser gera HTML com JavaScript, CSS e assets inline
- As tags
<script src="..."> e <link rel="stylesheet"> são convertidas em código inline
- Pode ser executado até em ambiente
file://, sem restrições de CORS
- Suporta TypeScript, JSX, React, CSS, ESM e CJS
Decorators ES padrão do TC39
- Suporte completo aos decorators padrão Stage 3
- Implementa as especificações mais recentes, incluindo a palavra-chave
accessor, Symbol.metadata e ClassMethodDecoratorContext
- Suporte a decorators de campos, métodos e classes e a inicializadores (
addInitializer)
- Os decorators experimentais do TypeScript (
experimentalDecorators) continuam funcionando
Suporte ao Windows ARM64
- O Bun pode ser executado e compilado em Windows baseado em ARM64, como dispositivos com Snapdragon
- Suporte a cross-compilation com o alvo
bun-windows-arm64
- Pode ser usado da mesma forma tanto na CLI quanto na API
Otimização de barrel imports
- Detecta automaticamente estruturas de reexportação em barrel files, como
import { Button } from 'antd'
- Otimização automática quando
"sideEffects": false está definido
- Também pode ser ativada explicitamente com a opção
optimizeImports
- Apenas os submódulos necessários são analisados, o que pode dobrar a velocidade de build
Otimização da saída de bundle
- Reduz o número de closures e o uso de memória heap em bundles ESM/CJS
- 11% menos objetos, 4 MB a menos de heap e grande redução no número de funções e objetos de ambiente
- Aplicado automaticamente, sem necessidade de alterar código
bun test --retry
- Permite definir um número padrão de tentativas para todos os testes (
--retry N)
- A opção
{ retry: N } em testes individuais tem prioridade
- No reporter JUnit XML, cada tentativa é registrada como um
<testcase> separado
Melhorias em Bun.generateHeapSnapshot("v8")
- A opção
"arraybuffer" permite retornar o heap snapshot como ArrayBuffer
- Remove o overhead de conversão para string ao lidar com snapshots grandes
Atualizações de TLS e certificados
- Melhor desempenho com suporte a keepalive para conexões mTLS e CA customizada
- Configurações TLS idênticas passam por deduplicação em um registro global
- Os certificados raiz foram atualizados para NSS 3.119 (Firefox 147.0.3)
- Quatro certificados raiz da CommScope foram removidos
Upgrade do engine JavaScriptCore
- Várias melhorias de desempenho, incluindo slice de strings 168x,
endsWith 10,5x, acesso a flags de RegExp 1,6x e path.parse() até 7x
structuredClone é até 25x mais rápido em arrays e arrays de objetos
Buffer.slice() e subarray() tiveram melhora de cerca de 1,8x
- Otimizações internas em
BigInt, iteradores de string e operações com inteiros
Principais correções de bugs
- Correção de problemas de compatibilidade de pipe com servidores MCP Python asyncio (
Bun.spawn)
- Compatibilidade com Node.js: várias correções em
AsyncLocalStorage, fs.watch, processamento de headers http e falhas relacionadas ao GC
- API do Bun: correção de crashes e vazamentos de memória relacionados a
spawn, plugin, sql e build
- Melhorias gerais de estabilidade em WebSocket, bun install, parser de CSS, bun shell e ambiente Windows
- Vulnerabilidades de segurança corrigidas: injeção de headers HTTP, path traversal em tarballs e vazamento de stream do S3
1 comentários
Depois de acompanhar o desenvolvimento por bastante tempo do meu jeito e usá-lo de vez em quando desde o início, a impressão que tive é que os desenvolvedores do Bun realmente querem, de verdade, fazer o mundo de JS/TS girar mais rápido. É impressionante. Sério...