Il s'agit de la plus grande version de Bun à ce jour.
Bun dispose désormais d'un bundler et d'un minifier JavaScript et TypeScript intégrés. Utilisez-le pour regrouper des applications frontales ou pour regrouper votre code dans un exécutable autonome.
Nous avons également amélioré les performances et corrigé des bugs comme d'habitude : writeFile() est jusqu'à 20% plus rapide sous Linux, de nombreuses corrections de bugs pour la compatibilité avec Node.js et l'API Web, le support de la syntaxe TypeScript 5.0, et divers correctifs pour bun install.
Le nouveau bundler et minifier JavaScript de Bun
Cette version se concentre sur le nouveau bundler JavaScript de Bun, mais le bundler n'est que le début d'un projet plus vaste. Dans les prochains mois, nous annoncerons Bun.App - une "super-API" qui rassemble le bundler à vitesse native, le serveur HTTP et le routeur de système de fichiers de Bun en un tout cohérent.
Elle peut être utilisée en utilisant la commande CLI bun build ou la nouvelle API JavaScript Bun.build().
Exécutables autonomes
Vous pouvez maintenant créer des exécutables autonomes avec bun build.
Cela vous permet de distribuer votre application sous la forme d'un fichier exécutable unique, sans que les utilisateurs n'aient à installer Bun.
Vous pouvez également le minifier afin d'améliorer les performances de démarrage des applications volumineuses :
Ceci est possible grâce au nouveau bundler et minifier JavaScript de Bun.
[tweet]<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Standalone executables are coming in Bun v0.6.0 <a href="https://t.co/eaUeFtKisL">pic.twitter.com/eaUeFtKisL</a></p>— Jarred Sumner (@jarredsumner) <a href="https://twitter.com/jarredsumner/status/1657750890349215744?ref_src=twsrc%5Etfw">May 14, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>[/tweet]
import.meta.main
Vous pouvez maintenant utiliser import.meta.main pour vérifier si le fichier actuel est le point d'entrée qui a démarré Bun. Ceci est utile pour les CLIs afin de déterminer si le fichier courant est celui qui a démarré l'application.
Par exemple, si vous avez un fichier appelé index.ts :
et que vous l'exécutez :
Mais si vous l'importez :
et que vous l'exécutez :
Améliorations apportées à bun test
[tweet]<blockquote class="twitter-tweet"><p lang="en" dir="ltr">in the next version of bun<br><br>bun:test prints out how long each test took<br><br>slow tests are highlighted yellow <a href="https://t.co/yXDSJrkYBu">pic.twitter.com/yXDSJrkYBu</a></p>— Jarred Sumner (@jarredsumner) <a href="https://twitter.com/jarredsumner/status/1656569942354042880?ref_src=twsrc%5Etfw">May 11, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>[/tweet]
fs.writeFile plus rapide sous Linux
[tweet]<blockquote class="twitter-tweet"><p lang="en" dir="ltr">In the next version of Bun<br><br>fs.writeFile gets 20% faster for large files on Linux <a href="https://t.co/QgWhBoiz2c">pic.twitter.com/QgWhBoiz2c</a></p>— Jarred Sumner (@jarredsumner) <a href="https://twitter.com/jarredsumner/status/1651533306868137984?ref_src=twsrc%5Etfw">April 27, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>[/tweet]
Améliorations du transpileur
Cette version apporte également de nombreuses améliorations au transpileur. En voici quelques-unes :
Compatibilité Node.js
Compatibilité avec l'API Web
Bun dispose désormais d'un bundler et d'un minifier JavaScript et TypeScript intégrés. Utilisez-le pour regrouper des applications frontales ou pour regrouper votre code dans un exécutable autonome.
Nous avons également amélioré les performances et corrigé des bugs comme d'habitude : writeFile() est jusqu'à 20% plus rapide sous Linux, de nombreuses corrections de bugs pour la compatibilité avec Node.js et l'API Web, le support de la syntaxe TypeScript 5.0, et divers correctifs pour bun install.
Le nouveau bundler et minifier JavaScript de Bun
Cette version se concentre sur le nouveau bundler JavaScript de Bun, mais le bundler n'est que le début d'un projet plus vaste. Dans les prochains mois, nous annoncerons Bun.App - une "super-API" qui rassemble le bundler à vitesse native, le serveur HTTP et le routeur de système de fichiers de Bun en un tout cohérent.
Elle peut être utilisée en utilisant la commande CLI bun build ou la nouvelle API JavaScript Bun.build().
Code : | Sélectionner tout |
1 2 3 4 5 6 | Bun.build({ entrypoints: ["./src/index.tsx"], outdir: "./build", minify: true, // ... }); |
Exécutables autonomes
Vous pouvez maintenant créer des exécutables autonomes avec bun build.
Code : | Sélectionner tout |
bun build --compile ./foo.ts
Cela vous permet de distribuer votre application sous la forme d'un fichier exécutable unique, sans que les utilisateurs n'aient à installer Bun.
Code : | Sélectionner tout |
./foo
Vous pouvez également le minifier afin d'améliorer les performances de démarrage des applications volumineuses :
Code : | Sélectionner tout |
1 2 3 4 | bun build --minify --compile ./three.ts [32ms] minify -123 KB (estimate) [50ms] bundle 456 modules [107ms] compile three |
Ceci est possible grâce au nouveau bundler et minifier JavaScript de Bun.
[tweet]<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Standalone executables are coming in Bun v0.6.0 <a href="https://t.co/eaUeFtKisL">pic.twitter.com/eaUeFtKisL</a></p>— Jarred Sumner (@jarredsumner) <a href="https://twitter.com/jarredsumner/status/1657750890349215744?ref_src=twsrc%5Etfw">May 14, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>[/tweet]
import.meta.main
Vous pouvez maintenant utiliser import.meta.main pour vérifier si le fichier actuel est le point d'entrée qui a démarré Bun. Ceci est utile pour les CLIs afin de déterminer si le fichier courant est celui qui a démarré l'application.
Par exemple, si vous avez un fichier appelé index.ts :
Code : | Sélectionner tout |
console.log(import.meta.main);
et que vous l'exécutez :
Code : | Sélectionner tout |
1 2 | $ bun ./index.ts true |
Mais si vous l'importez :
Code : | Sélectionner tout |
import "./index.ts";
et que vous l'exécutez :
Code : | Sélectionner tout |
1 2 | $ bun ./other.ts false |
Améliorations apportées à bun test
- bun test indique désormais le temps nécessaire à l'exécution des tests
[tweet]<blockquote class="twitter-tweet"><p lang="en" dir="ltr">in the next version of bun<br><br>bun:test prints out how long each test took<br><br>slow tests are highlighted yellow <a href="https://t.co/yXDSJrkYBu">pic.twitter.com/yXDSJrkYBu</a></p>— Jarred Sumner (@jarredsumner) <a href="https://twitter.com/jarredsumner/status/1656569942354042880?ref_src=twsrc%5Etfw">May 11, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>[/tweet]
- describe.skip a été implémenté
- expect().toBeEven() et expect().toBeOdd() ont été implémentés
fs.writeFile plus rapide sous Linux
[tweet]<blockquote class="twitter-tweet"><p lang="en" dir="ltr">In the next version of Bun<br><br>fs.writeFile gets 20% faster for large files on Linux <a href="https://t.co/QgWhBoiz2c">pic.twitter.com/QgWhBoiz2c</a></p>— Jarred Sumner (@jarredsumner) <a href="https://twitter.com/jarredsumner/status/1651533306868137984?ref_src=twsrc%5Etfw">April 27, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>[/tweet]
Améliorations du transpileur
Cette version apporte également de nombreuses améliorations au transpileur. En voici quelques-unes :
- Prise en charge de l'analyseur pour TypeScript 5.0.
- Prise en charge de l'analyseur pour les attributs d'importation.
- Certains paquets npm généraient des "ReferenceError : Cannot access uninitialized variable" lors de l'importation à cause d'un bug avec les importations cycliques dans le transpileur de Bun. Ceci a été corrigé.
- Support des commentaires // @jsx, // @jsxImportSource, et // @jsxFragment.
- Élimination du code mort pour les appels de fonctions de constructeurs globaux inutilisés comme new Set().
- Concaténation littérale de modèles de chaînes comme foo${1}${"2"}${'3'} -> foo123.
- Correction des bogues de l'analyseur pour l'instruction ES5 with, qui est obsolète.
Compatibilité Node.js
- tls.Server a un support basique (précédemment, non implémenté)
- fs.promises.constants est maintenant exporté correctement (auparavant, il était manquant)
- Le module serveur de node:http accepte maintenant (correctement) un argument callback
- Timer.refresh() fonctionne maintenant comme prévu
- Correction des erreurs mkdtemp et mkdtempSync
Compatibilité avec l'API Web
- new Request("http://example.com", otherRequest).url renvoyait auparavant l'url de otherRequest au lieu de "http://example.com". Ceci a été corrigé.
- Bun.file(path).lastModified a été ajouté, ce qui est similaire à la propriété lastModified de l'API File.
- Prise en charge de la redirect: "error" dans fetch()
- Correction de fetch.bind, fetch.call et fetch.apply qui ne fonctionnaient pas.
Et vous ?
Qu'en pensez-vous ?
Quelles sont les fonctionnalités ou améliorations que vous trouvez intéressantes ?
Voir aussi
Bun, un nouveau moteur d'exécution JavaScript, livré avec un client SQLite3 rapide, il apporte un peu de concurrence pour Node et Deno
Bun, le nouveau moteur d'exécution JavaScript, prendra-t-il la couronne de Node ? Bun est présenté comme un tueur de Node en raison de sa simplicité et de sa rapidité
La version 5 de Bun, le moteur d'exécution JavaScript qui transpile, installe et exécute des projets JavaScript et TypeScript, apporte plusieurs améliorations