6 pontos por GN⁺ 2024-04-02 | 1 comentários | Compartilhar no WhatsApp

Suporte ao Windows

  • O Bun agora pode ser executado no Windows 10 ou superior
  • Passa em 98% da suíte de testes do Bun no macOS e Linux
  • Inclui um gerenciador de pacotes compatível com npm embutido e, ao instalar um app Vite React, é 18 vezes mais rápido que yarn e 30 vezes mais rápido que npm
  • Suporte a execução de scripts mais rápida no Windows com o formato de arquivo .bunx
  • API do Node.js otimizada no Windows usando as chamadas de sistema mais rápidas disponíveis
    • Ex.: fs.readdir() é 58% mais rápido que no Node.js

Bun é um runtime JavaScript

  • Suporte a JavaScript, TypeScript e JSX
  • Ferramentas de linha de comando como tsc são até 2 vezes mais rápidas que no Bun 1.0
  • O Bun Shell agora se tornou um shell multiplataforma disponível também no Windows
    • Inclui utilitários principais como ls, rm e cat
    • É possível executar o shell em JavaScript e TypeScript usando a API Bun.$
  • Bun.Glob
    • Fornece uma API Glob embutida para correspondência de arquivos e strings
    • Semelhante a fast-glob e micromatch, mas com correspondência de strings 3 vezes mais rápida
  • Bun.Semver
  • Nova API Semver para parsing e ordenação de strings semver
  • Semelhante ao pacote node-semver, mas 20 vezes mais rápida
  • Bun.stringWidth()
    • Nova API para medir a largura visível de strings no terminal
    • Suporte a códigos de escape ANSI, caracteres de largura total, grafemas e emoji
  • server.url: com Bun.serve(), é possível obter a URL do servidor HTTP criado pela propriedade server.url
  • server.requestIP(): é possível obter o endereço IP de uma requisição HTTP com o método server.requestIP()
  • subprocess.resourceUsage(): é possível acessar o uso de CPU e memória de um subprocesso criado com Bun.spawn() pelo método resourceUsage()
  • Compatibilidade com Node.js aprimorada
    • Várias APIs foram melhoradas, incluindo a API cliente de node:http2, compatibilidade com Date.parse() e suporte a fs.readdir() recursivo
    • IPC entre Bun e Node.js é possível
    • Também há suporte a algumas APIs não documentadas do Node.js
  • Web API: suporte a APIs padrão da Web como WebSocket, performance.mark(), fetch() com compressão Brotli e URL.canParse()

Bun é um gerenciador de pacotes compatível com npm

  • Com bun install, é possível instalar pacotes npm até 29 vezes mais rápido
  • Melhorias em recursos como scripts de ciclo de vida, trustedDependencies e bun pm trust

Bun é um bundler JavaScript

  • Suporte a empacotar código executável no Node.js com bun build --target=node
  • É possível compilar arquivos TypeScript e JavaScript em um executável de arquivo único usando a flag --compile

Bun é um test runner

  • Fornece um módulo de testes embutido com a mesma API do Jest
  • Adição de novos matchers para expect() e suporte a mocking de módulos

Suporte embutido ao SQLite

  • Suporte a SQLite com uma API inspirada no better-sqlite3
  • Melhorias em consultas com múltiplas instruções, mensagens de erro detalhadas, importação de banco de dados e suporte embutido

Opinião do GN⁺

  • O Bun é um kit de ferramentas JavaScript que melhora bastante o desempenho mantendo compatibilidade com Node.js, e com o suporte ao Windows passa a alcançar uma comunidade maior de desenvolvedores.
  • O test runner embutido e o suporte a SQLite ajudam os desenvolvedores a trabalhar com eficiência sem ferramentas adicionais.
  • O desempenho rápido do Bun e a experiência de desenvolvimento aprimorada podem se destacar especialmente em projetos grandes ou aplicações sensíveis a desempenho.
  • Apesar das várias funcionalidades e melhorias oferecidas pelo Bun, ainda são necessários desenvolvimento contínuo e feedback da comunidade para atingir compatibilidade total com o amplo ecossistema de pacotes do Node.js.
  • É necessária uma análise adicional sobre como os novos recursos do Bun podem competir ou cooperar com as ferramentas existentes baseadas em Node.js.

1 comentários

 
GN⁺ 2024-04-02
Comentários do Hacker News
  • Lista impressionante de mudanças no Bun

    • O Bun parece ser uma alternativa ideal ao Node.js, e dedicar tempo ao suporte ao Windows é algo que muitas vezes passa despercebido no mundo do desenvolvimento web.
    • A frase "Bun on Windows passes 98% of our own test suite for Bun on macOS and Linux." levanta a dúvida se isso significa que a versão para Windows foi lançada incluindo testes que falharam, ou se é apenas um mal-entendido.
  • Recurso de macros do Bun

    • Foi descoberto que o Bun tem um recurso básico de macros que executa código no momento do bundle. É uma funcionalidade muito interessante.
  • Dúvida sobre por que usar Bun e Deno

    • Ficou claro que compatibilidade com Node.js é essencial para Bun e Deno, mas há dúvidas sobre a sustentabilidade do produto quando existe financiamento de VC.
    • Mesmo que Bun e Deno façam parte de um ecossistema parecido com o do Node.js, ainda que um pouco imperfeito, não está claro qual seria o motivo definitivo para usá-los.
  • Grande fã do Bun

    • Começou a usar Bun inicialmente por causa da compatibilidade com TypeScript e continua usando por causa do desempenho.
    • Tentou usar Deno, mas achou difícil de usar; em contraste, o Bun foi fácil de integrar e proporcionou uma experiência muito agradável.
  • Avaliação do novo lançamento do Bun

    • Assistiu ao vídeo do Bun, mas os gráficos não estavam claros, então não foi possível entender se a comparação era com versões anteriores do Bun ou com Node.js.
    • A experiência de usar Bun em projetos paralelos foi boa, e as APIs embutidas funcionam bem. Há o desejo de que Deno e Node.js também adotem parte dessas APIs.
    • O Bun coleta alguma telemetria por padrão. O script de instalação não informa isso, e o assunto é mencionado apenas na documentação do Bunfile.
    • Há o desejo de que o usuário receba instruções sobre como desativar a telemetria durante a instalação, e que isso possa ser opcional.
    • O Bun oferece uma opção para empacotar o ponto de entrada .js do projeto e o runtime em um executável sem dependências. Isso é útil quando se quer distribuir um único binário para o usuário, mas no momento o tamanho do arquivo ainda é considerável (mais de 90 MB para um projeto pequeno em GNU/Linux).
    • Fica a dúvida se o Bun oferecerá opções para desativar certos recursos e assim obter binários menores.
    • Está sendo testado o uso do Bun como target do Haxe, sendo uma opção a considerar quando se prefere Haxe a TypeScript ou se quer adicionar um servidor web a um projeto Haxe existente.
  • Pedido à equipe do Bun

    • Há um pedido para que forneçam uma política de suporte/timeline de ciclo de vida clara. Também é importante haver clareza sobre garantias de estabilidade entre versões e módulos.
  • Participação de um desenvolvedor do Bun

    • Um desenvolvedor do Bun informou que está pronto para responder perguntas. Também mencionou que o Bun v1.1 ainda está compilando e que deve levar cerca de mais 20 minutos para terminar.
  • Pergunta sobre a estabilidade do Bun

    • Houve três tentativas de usar Bun em vários projetos, mas foi relatada a ocorrência de segfaults tanto no runtime quanto durante a instalação de pacotes.
  • Modelo de receita do Bun e financiamento por VC

    • Há uma pergunta sobre qual é o modelo de receita do Bun e o que acontecerá quando o financiamento de VC acabar.