6 points par GN⁺ 2024-04-02 | 1 commentaires | Partager sur WhatsApp

Prise en charge de Windows

  • Bun peut être exécuté sur Windows 10 et versions ultérieures
  • 98 % de la suite de tests de Bun réussit sur macOS, Linux et Windows
  • Inclut un gestionnaire de paquets compatible npm intégré, avec une installation d’une app Vite React 18 fois plus rapide que yarn et 30 fois plus rapide que npm
  • Prise en charge d’une exécution de scripts plus rapide sur Windows via le format de fichier .bunx
  • Optimisation des API Node.js sur Windows en utilisant les appels système les plus rapides
    • Ex. : fs.readdir() est 58 % plus rapide que sur Node.js

Bun est un runtime JavaScript

  • Prise en charge de JavaScript, TypeScript et JSX
  • Les outils en ligne de commande comme tsc sont jusqu’à 2 fois plus rapides que dans Bun 1.0
  • Bun Shell est désormais un shell cross-platform également disponible sur Windows
    • Inclut des utilitaires de base comme ls, rm, cat, etc.
    • Il est possible d’exécuter le shell depuis JavaScript et TypeScript avec l’API Bun.$
  • Bun.Glob
    • Fournit une API Glob intégrée pour la correspondance de fichiers et de chaînes
    • Similaire à fast-glob et micromatch, mais avec une correspondance de chaînes 3 fois plus rapide
  • Bun.Semver
  • Nouvelle API Semver pour analyser et trier des chaînes semver
  • Similaire au paquet node-semver, mais 20 fois plus rapide
  • Bun.stringWidth()
    • Nouvelle API pour mesurer la largeur visuelle d’une chaîne dans le terminal
    • Prend en charge les codes d’échappement ANSI, les caractères pleine chasse, les graphèmes et les emojis
  • server.url : permet d’obtenir l’URL d’un serveur HTTP créé avec Bun.serve() via la propriété server.url
  • server.requestIP() : permet d’obtenir l’adresse IP d’une requête HTTP via la méthode server.requestIP()
  • subprocess.resourceUsage() : permet d’accéder à l’utilisation CPU et mémoire d’un sous-processus créé avec Bun.spawn() via la méthode resourceUsage()
  • Amélioration de la compatibilité Node.js
    • Diverses API ont été améliorées, notamment l’API client node:http2, la compatibilité avec Date.parse() et la prise en charge de fs.readdir() récursif
    • IPC possible entre Bun et Node.js
    • Prise en charge de certaines API Node.js non documentées
  • Web API : prise en charge d’API Web standard comme WebSocket, performance.mark(), fetch() avec compression Brotli et URL.canParse()

Bun est un gestionnaire de paquets compatible npm

  • bun install permet d’installer des paquets npm jusqu’à 29 fois plus vite
  • Améliorations de fonctionnalités comme les scripts de cycle de vie, trustedDependencies et bun pm trust

Bun est un bundler JavaScript

  • Prise en charge du bundling de code exécutable sur Node.js avec bun build --target=node
  • Les fichiers TypeScript et JavaScript peuvent être compilés en exécutable autonome avec le flag --compile

Bun est un test runner

  • Fournit un module de test intégré avec la même API que Jest
  • Ajout de nouveaux matchers expect() et prise en charge du module mocking

Prise en charge intégrée de SQLite

  • Prise en charge de SQLite avec une API inspirée de better-sqlite3
  • Améliorations de la prise en charge des requêtes multi-instructions, des messages d’erreur détaillés, de l’import de bases de données et du support intégré

Avis de GN⁺

  • Bun est une boîte à outils JavaScript qui améliore fortement les performances tout en conservant la compatibilité avec Node.js, et son support de Windows lui permet désormais de toucher une communauté de développeurs plus large.
  • Le test runner intégré et la prise en charge de SQLite permettent aux développeurs de travailler efficacement sans outils supplémentaires.
  • Les performances rapides de Bun et l’expérience développeur améliorée peuvent se distinguer en particulier dans les projets de grande taille ou les applications sensibles aux performances.
  • Malgré les nombreuses fonctionnalités et améliorations proposées par Bun, un développement continu et les retours de la communauté restent nécessaires pour atteindre une compatibilité complète avec le vaste écosystème de paquets Node.js.
  • Une analyse supplémentaire est nécessaire pour voir comment les nouvelles fonctionnalités de Bun peuvent concurrencer ou coopérer avec les outils existants basés sur Node.js.

1 commentaires

 
GN⁺ 2024-04-02
Avis sur Hacker News
  • Liste impressionnante des changements de Bun

    • Bun semble être une alternative idéale à Node.js, et le temps consacré au support de Windows est un aspect souvent négligé dans le monde du développement web.
    • La phrase « Bun on Windows passes 98% of our own test suite for Bun on macOS and Linux. » soulève une question : cela signifie-t-il que la version Windows a été publiée malgré des tests en échec, ou s’agit-il d’un malentendu ?
  • La fonctionnalité de macros de Bun

    • Certains ont découvert que Bun dispose d’une fonctionnalité de macros basique qui exécute du code au moment du bundling. C’est une fonctionnalité très intéressante.
  • Questionnement sur les raisons d’utiliser Bun et Deno

    • Il est reconnu que la compatibilité avec Node.js est indispensable pour Bun et Deno, mais des doutes subsistent quant à la pérennité du produit tant qu’il repose sur un financement VC.
    • Même si Bun et Deno appartiennent à un écosystème semblable à celui de Node.js, avec ses imperfections, il n’est pas évident de voir une raison claire de les utiliser.
  • Un grand fan de Bun

    • Bun a été adopté au départ pour sa compatibilité avec TypeScript, puis conservé pour ses performances.
    • Deno a été essayé mais jugé difficile à utiliser, tandis que Bun s’est intégré facilement et a offert une expérience très agréable.
  • Évaluation de la nouvelle release de Bun

    • Après avoir regardé la vidéo de Bun, certains graphiques manquaient de clarté, au point qu’il était difficile de savoir si la comparaison se faisait avec une version précédente de Bun ou avec Node.js.
    • L’expérience d’utilisation de Bun sur des projets annexes a été positive, et les API intégrées fonctionnent bien. Il serait souhaitable que Deno et Node.js adoptent eux aussi certaines de ces API.
    • Bun collecte par défaut une certaine télémétrie. Le script d’installation ne le signale pas, et cela n’est mentionné que dans la documentation de Bunfile.
    • Il serait souhaitable que les utilisateurs reçoivent des instructions pour désactiver la télémétrie pendant l’installation, avec une possibilité de l’activer de manière optionnelle.
    • Bun propose une option qui bundle le point d’entrée .js d’un projet avec le runtime afin de produire un exécutable sans dépendances. C’est utile lorsqu’on veut distribuer un binaire unique à des utilisateurs, mais la taille du fichier reste actuellement assez importante (plus de 90 Mo pour un petit projet sous GNU/Linux).
    • Certains se demandent si Bun proposera une option permettant de désactiver certaines fonctionnalités afin d’obtenir des binaires plus petits.
    • Bun est aussi testé comme cible Haxe ; c’est une option à envisager si l’on préfère Haxe à TypeScript ou si l’on souhaite ajouter un serveur web à un projet Haxe existant.
  • Demandes adressées à l’équipe de Bun

    • Une demande revient pour obtenir une politique de support / un calendrier de cycle de vie clairement définis. Il est également important d’avoir de la clarté sur les garanties de stabilité entre versions et modules.
  • Participation d’un développeur de Bun

    • Un développeur de Bun indique être prêt à répondre aux questions. Il mentionne que Bun v1.1 est encore en cours de compilation et qu’il faudra environ 20 minutes de plus pour terminer.
  • Questions sur la stabilité de Bun

    • Après avoir essayé Bun à trois reprises sur plusieurs projets, certains disent avoir rencontré des erreurs de segmentation (segmentation fault) au runtime ou lors de l’installation de paquets.
  • Modèle économique de Bun et financement VC

    • Des questions sont posées sur le modèle économique de Bun et sur ce qu’il adviendra lorsque le financement VC sera épuisé.