Skip to content
ai news

Bun 1.4 : La mise à jour qui élimine vos dépendances

La réécriture controversée de Bun en Rust est arrivée, et il ne s'agit pas seulement de vitesse. Une nouvelle bibliothèque standard intégrée vise à éliminer l'encombrement des dépendances et à sécuriser votre chaîne d'approvisionnement, mais est-ce aller trop loin ?

Jonah Park
Bun 1.4 : La mise à jour qui élimine vos dépendances

La bibliothèque standard JavaScript que nous n'avons jamais eue

L'écosystème JavaScript a longtemps été confronté à l'absence d'une bibliothèque standard complète. Ce vide a contraint les développeurs à intégrer de nombreux micro-paquets, contribuant à un encombrement important des dépendances des projets et augmentant l'exposition aux vulnérabilités de la chaîne d'approvisionnement. Cette dépendance à des solutions tierces fragmentées est devenue un défi architectural persistant.

Bun 1.4, présenté comme The Rust Rewrite, s'attaque directement à ce problème. Le runtime regroupe désormais des utilitaires essentiels et performants, conçus en Rust, pour fournir des fonctionnalités de base qui nécessitaient auparavant des paquets externes. Cela élimine le besoin de plus de 15 dépendances courantes dans divers types de projets.

Des exemples spécifiques de remplacement de dépendances incluent :

  • Bun.WebView remplaçant Playwright et Puppeteer pour le contrôle de navigateur headless.
  • Bun.Image gérant la manipulation d'images, rendant inutile des bibliothèques telles que Sharp.
  • Bun.Markdown intégrant une analyse robuste du markdown.
  • Bun.Terminal offrant un pseudo-terminal intégré, supprimant la dépendance à node-pty.

Cette approche intégrée marque un changement philosophique majeur pour l'écosystème JavaScript. Il s'éloigne d'une culture de micro-paquets fragmentés vers un runtime plus robuste, « batteries incluses ». Bun 1.4 vise à consolider les capacités fondamentales, favorisant une plus grande stabilité et réduisant la surcharge des projets.

Éliminez Puppeteer et Sharp avec des API natives

Bun 1.4 introduit Bun.WebView, un navigateur headless intégré pour l'automatisation, conçu pour remplacer des dépendances telles que Playwright et Puppeteer. Sur Mac, Bun.WebView utilise le WebKit du système, le moteur qui alimente Safari, ne nécessitant aucune installation supplémentaire. Pour les utilisateurs de Windows et Linux, il exploite une instance existante de Chrome ou Chromium, capable d'exécuter un sous-processus headless ou de se connecter à un navigateur déjà ouvert.

Cette intégration native envoie des événements de navigateur natifs pour les interactions, rendant les clics, la saisie et le défilement plus humains pour les pages web. Son API couvre les opérations fondamentales telles que la recherche d'éléments, le clic, la saisie et l'exécution de JavaScript spécifique à la page via evaluate. Bien qu'efficace pour l'automatisation légère de navigateur et le scraping, Bun.WebView ne remplace pas encore totalement des outils comme Playwright, manquant de fonctionnalités telles qu'un exécuteur de tests ou un visualiseur de traces.

Réduisant davantage l'encombrement des dépendances, Bun.Image sert de remplacement puissant à Sharp. Cette bibliothèque d'images native offre des opérations chaînables directement dans Bun. Les développeurs peuvent redimensionner, faire pivoter, retourner, ajuster la luminosité et la netteté, et convertir les formats d'image efficacement. Bun.Image lit également les métadonnées, y compris la largeur, la hauteur et le format, sans nécessiter le décodage complet des données de pixels. Cela élimine le besoin de builds natifs complexes et résout les problèmes de déploiement souvent rencontrés avec les bibliothèques de traitement d'image externes.

Votre flux de travail de développement, désormais intégré

Bun 1.4 introduit un exécuteur de scripts intégré, éliminant les dépendances externes comme concurrently ou npm-run-all. Les développeurs peuvent désormais exécuter plusieurs scripts package.json simultanément en utilisant --parallel ou séquentiellement avec --sequential. Cette fonctionnalité inclut une sortie préfixée par le nom du script, la correspondance par glob pour les noms de scripts et le filtrage des espaces de travail. Une option permet également aux autres scripts de continuer même si l'un d'eux génère une erreur.

Pour la planification de tâches, Bun.cron remplace des paquets tels que node-cron. Il prend en charge deux modes : une fonction s'exécutant sur la boucle d'événements pour les tâches simples, tandis qu'un script enregistre une tâche cron native au niveau du système d'exploitation. Ces tâches au niveau du système exploitent crontab sur Linux, launchd sur Mac, et le Planificateur de tâches sur Windows pour une exécution robuste et persistante. La syntaxe cron standard, incluant les jours nommés et des assistants comme daily, est prise en charge.

Une API de pseudo-terminal, Bun.Terminal, s'intègre directement dans le runtime, éliminant le besoin de node-pty. Cela permet à JavaScript de piloter des applications en ligne de commande interactives comme Bash, Vim ou Htop. Bun.spawn gagne une option terminal, garantissant que les sous-processus reçoivent un environnement de terminal authentique pour la sortie colorée, le déplacement du curseur et les invites interactives. Pour plus de détails sur ces fonctionnalités et d'autres, consultez les notes de version de Bun 1.4.

Cet article vous plaît ? Recevez-en un comme celui-ci chaque matin.

un e-mail par jour · désinscription en deux clics · aucun traqueur tiers

Le véritable dividende de la réécriture en Rust

La réécriture en Rust fondamentale de Bun 1.4 offre des gains de performance substantiels, le véritable dividende de cette réarchitecture. Cette réingénierie permet des temps de démarrage plus rapides et une utilisation du CPU mesurablement plus faible pour toutes les opérations. Notamment, le binaire Bun est 17 % plus petit, même avec l'ajout de nouvelles fonctionnalités étendues comme Bun.WebView et Bun.Image.

Des utilitaires supplémentaires rationalisent davantage les flux de travail de développement. Bun.Archive fournit une implémentation native rapide pour inspecter les tarballs, permettant aux développeurs de lire des fichiers spécifiques, tels qu'un package.json à partir d'une archive .tgz, sans extraction complète. Bun introduit également une prise en charge native pour l'analyse et la sérialisation de JSON5 et XML, éliminant le besoin de bibliothèques tierces pour ces formats de données courants.

Une amélioration significative de la qualité de vie pour la gestion des paquets est le nouveau magasin virtuel global, isolatedLinker. Cette fonctionnalité permet d'économiser un espace disque considérable en créant des liens symboliques des paquets installés dans les dossiers node_modules des projets individuels, plutôt que de les dupliquer. L' isolatedLinker accélère également les commandes bun install ultérieures sur plusieurs projets, augmentant ainsi l'efficacité globale des développeurs.

Foire aux questions

Quel est le changement le plus important dans Bun 1.4 ?

La « réécriture en Rust » introduit une puissante bibliothèque standard intégrée, visant à remplacer plus de 15 dépendances NPM courantes pour des tâches telles que l'automatisation de navigateur, le traitement d'image et les tâches cron, directement au sein du runtime.

Bun 1.4 remplace-t-il entièrement Playwright ou Puppeteer ?

Pas complètement. Bun.WebView est excellent pour l'automatisation légère de navigateur, le scraping et le scripting d'interface utilisateur. Cependant, il manque actuellement de fonctionnalités avancées présentes dans Playwright, telles qu'un exécuteur de tests dédié et un visualiseur de traces.

Quelles sont les principales dépendances que Bun 1.4 peut remplacer ?

Bun 1.4 peut remplacer des paquets comme Playwright/Puppeteer (Bun.WebView), Sharp (Bun.Image), Marked (Bun.Markdown), node-cron (Bun.cron), concurrently (scripts parallèles), et diverses bibliothèques de tar et de chaînes ANSI.

Comment fonctionne le magasin virtuel global de Bun 1.4 ?

Lorsque l' isolatedLinker est activé, bun install extrait les paquets vers un magasin global unique sur votre machine. Il utilise ensuite des liens symboliques pour les connecter aux node_modules de votre projet, économisant ainsi un espace disque important et accélérant les installations sur plusieurs projets.

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