Skip to content
ai news

Bun 1.4: A atualização que elimina suas dependências

A controversa reescrita em Rust do Bun chegou, e não se trata apenas de velocidade. Uma nova biblioteca padrão integrada visa eliminar o inchaço de dependências e proteger sua cadeia de suprimentos, mas será que isso vai longe demais?

Jonah Park
Bun 1.4: A atualização que elimina suas dependências

A biblioteca padrão de JavaScript que nunca tivemos

O ecossistema JavaScript há muito tempo lida com a ausência de uma biblioteca padrão abrangente. Esse vazio forçou os desenvolvedores a integrar inúmeros micro-pacotes, contribuindo para um inchaço significativo de dependências nos projetos e aumentando a exposição a vulnerabilidades na cadeia de suprimentos. Essa dependência de soluções fragmentadas de terceiros tornou-se um desafio arquitetural persistente.

Bun 1.4, apresentado como The Rust Rewrite, confronta diretamente esse problema. O runtime agora agrupa utilitários essenciais de alto desempenho, projetados em Rust, para fornecer funcionalidades principais que anteriormente exigiam pacotes externos. Isso elimina a necessidade de mais de 15 dependências comuns em vários tipos de projetos.

Exemplos específicos de substituição de dependências incluem:

  • Bun.WebView substituindo Playwright e Puppeteer para controle de navegador headless.
  • Bun.Image lidando com manipulação de imagens, eliminando a necessidade de bibliotecas como Sharp.
  • Bun.Markdown integrando análise robusta de markdown.
  • Bun.Terminal oferecendo um pseudo-terminal integrado, removendo a dependência do node-pty.

Essa abordagem integrada sinaliza uma grande mudança filosófica para o ecossistema JavaScript. Ela se afasta de uma cultura de micro-pacotes fragmentados em direção a um runtime mais robusto e 'completo'. O Bun 1.4 visa consolidar capacidades fundamentais, promovendo maior estabilidade e reduzindo a sobrecarga dos projetos.

Elimine Puppeteer e Sharp com APIs nativas

O Bun 1.4 introduz o Bun.WebView, um navegador headless integrado para automação, projetado para substituir dependências como Playwright e Puppeteer. No Mac, o Bun.WebView utiliza o WebKit do sistema, o motor que alimenta o Safari, não exigindo instalações adicionais. Para usuários de Windows e Linux, ele aproveita uma instância existente do Chrome ou Chromium, capaz de executar um sub-processo headless ou conectar-se a um navegador já aberto.

Essa integração nativa despacha eventos de navegador nativos para interações, fazendo com que cliques, digitação e rolagem pareçam mais humanos para as páginas da web. Sua API cobre operações fundamentais como encontrar elementos, clicar, digitar e executar JavaScript específico da página via evaluate. Embora eficaz para automação de navegador leve e scraping, o Bun.WebView ainda não substitui totalmente ferramentas como o Playwright, carecendo de recursos como um executor de testes ou visualizador de rastreamento.

Reduzindo ainda mais o inchaço de dependências, o Bun.Image serve como um substituto poderoso para o Sharp. Esta biblioteca de imagem nativa oferece operações encadeáveis diretamente dentro do Bun. Os desenvolvedores podem redimensionar, girar, inverter, ajustar brilho e nitidez, e converter formatos de imagem de forma eficiente. O Bun.Image também lê metadados, incluindo largura, altura e formato, sem exigir a decodificação completa dos dados de pixel. Isso elimina a necessidade de compilações nativas complexas e resolve problemas de implantação frequentemente encontrados com bibliotecas externas de processamento de imagem.

Seu fluxo de trabalho de desenvolvimento, agora integrado

O Bun 1.4 introduz um executor de scripts integrado, eliminando dependências externas como concurrently ou npm-run-all. Os desenvolvedores agora podem executar vários scripts do package.json simultaneamente usando --parallel ou sequencialmente com --sequential. Esse recurso inclui saída prefixada pelo nome do script, correspondência de glob para nomes de scripts e filtragem de workspace. Uma opção também permite que outros scripts continuem mesmo se um deles apresentar erro.

Para agendamento de tarefas, o Bun.cron substitui pacotes como o node-cron. Ele suporta dois modos: uma função executada no event loop para tarefas simples, enquanto um script registra um cron job nativo em nível de sistema operacional. Esses jobs de nível de sistema utilizam o crontab no Linux, launchd no Mac e o Agendador de Tarefas no Windows para uma execução robusta e persistente. A sintaxe cron padrão, incluindo dias nomeados e auxiliares como daily, é suportada.

Uma API de pseudo-terminal, Bun.Terminal, integra-se diretamente ao runtime, eliminando a necessidade do node-pty. Isso permite que o JavaScript controle aplicações de linha de comando interativas como Bash, Vim ou Htop. O Bun.spawn ganha uma opção terminal, garantindo que sub-processos recebam um ambiente de terminal genuíno para saída colorida, movimentação de cursor e prompts interativos. Para mais detalhes sobre esses e outros recursos, consulte as notas de lançamento do Bun 1.4.

Gostando do artigo? Receba um assim na sua caixa de entrada toda manhã.

um e-mail por dia · cancele em dois cliques · sem rastreadores de terceiros

O Verdadeiro Dividendo da Reescrita em Rust

A Reescrita em Rust fundamental do Bun 1.4 entrega ganhos substanciais de desempenho, o verdadeiro dividendo da rearquitetura. Essa reengenharia resulta em tempos de inicialização mais rápidos e uso de CPU mensuravelmente menor para todas as operações. Notavelmente, o binário do Bun é 17% menor, mesmo com a adição de novas funcionalidades extensas como Bun.WebView e Bun.Image.

Utilitários adicionais simplificam ainda mais os fluxos de trabalho de desenvolvimento. O Bun.Archive fornece uma implementação nativa e rápida para inspecionar tarballs, permitindo que desenvolvedores leiam arquivos específicos, como um package.json de um arquivo .tgz, sem a extração completa. O Bun também introduz suporte nativo para analisar e converter (stringify) JSON5 e XML, eliminando a necessidade de bibliotecas de terceiros para esses formatos de dados comuns.

Uma melhoria significativa na qualidade de vida para o gerenciamento de pacotes é o novo armazenamento virtual global, isolatedLinker. Este recurso economiza um espaço considerável em disco ao criar links simbólicos (symlinks) de pacotes instalados nas pastas node_modules de projetos individuais, em vez de duplicá-los. O isolatedLinker também acelera comandos bun install subsequentes em vários projetos, aumentando a eficiência geral do desenvolvedor.

Perguntas Frequentes

Qual é a maior mudança no Bun 1.4?

A 'Reescrita em Rust' introduz uma poderosa biblioteca padrão integrada, visando substituir mais de 15 dependências comuns do NPM para tarefas como automação de navegador, processamento de imagem e cron jobs, diretamente dentro do runtime.

O Bun 1.4 substitui totalmente o Playwright ou Puppeteer?

Não completamente. O Bun.WebView é excelente para automação de navegador leve, scraping e scripts de interface. No entanto, atualmente carece de recursos avançados encontrados no Playwright, como um executor de testes dedicado e visualizador de rastreamento (trace viewer).

Quais são algumas dependências importantes que o Bun 1.4 pode substituir?

O Bun 1.4 pode substituir pacotes como Playwright/Puppeteer (Bun.WebView), Sharp (Bun.Image), Marked (Bun.Markdown), node-cron (Bun.cron), concurrently (scripts paralelos) e várias bibliotecas de tar e strings ANSI.

Como funciona o armazenamento virtual global do Bun 1.4?

Quando o 'isolatedLinker' está ativado, o bun install extrai pacotes para um único armazenamento global na sua máquina. Em seguida, ele usa links simbólicos para conectá-los ao node_modules do seu projeto, economizando espaço em disco significativo e acelerando instalações em vários projetos.

Found this useful? Share it.

For builders

Want Stork to write one of these about your product?

Send us a URL. We use the product, form a view, and publish what we actually think — in 8 languages, labeled Sponsored, with no copy approval on your side. That last part is what makes it worth quoting.

See how it works$500 · AI tools & software only