Deno 2.8
(deno.com)deno addetdeno installtraitent désormais par défaut les noms de paquets sans préfixe comme des paquetsnpm:, ce qui les rend plus faciles à utiliser à la place denpm install,yarnoupnpm installdans les projets Node existantsdeno audit fixmet automatiquement à niveau les paquets npm vulnérables vers la version patch la plus proche qui respecte les contraintes de version, et affiche séparément les éléments nécessitant un changement de version majeure- De nouvelles sous-commandes,
deno ci,deno pack,deno transpile,deno why,deno bump-version, ont été ajoutées pour prendre en charge les installations reproductibles, la création de tarballs pour la publication npm, la conversion TS→JS, le suivi des chemins de dépendance et la mise à jour des versions de workspace - La compatibilité avec l’API Node.js est passée d’environ 42 % dans Deno 2.7 à 76,4 % (3 405/4 457) dans Deno 2.8 selon la propre suite de tests de Node, et de nombreux modules
node:sont désormais chargés de façon différée, ce qui accélère le démarrage des programmes qui ne les utilisent pas - Côté performances, par rapport à Deno 2.7.1, une installation npm à froid est passée de 3 319 ms à 906 ms, soit 3,66 fois plus rapide, tandis que
node:bufferbase64 s’améliore de 3,07 fois, le débit denode:httpde 2,21 fois etnode:cryptoscrypt de 2,12 fois - Parmi les changements de compatibilité, les fonctions globales
setTimeoutetsetIntervalrenvoient désormais l’objetTimeoutde Node au lieu d’un nombre ; le code qui stockait la valeur de retour commenumberou l’utilisait dans des vérifications de type ou des opérations arithmétiques doit être adapté, par exemple avecNodeJS.Timeout - TypeScript 6.0.3 est intégré, et
deno checkainsi que le LSP incluent désormaislib.nodepar défaut, ce qui permet de résoudre des types Node commeNodeJS.*,Bufferetprocesssans configuration supplémentaire - Côté débogage, l’onglet Network de Chrome DevTools affiche le trafic
fetch()de Deno,node:http/node:httpsetWebSocket, tandis que--cpu-prof,--cpu-prof-flamegraphet--cpu-prof-mdpermettent de générer un profil V8, un flamegraph SVG et un rapport Markdown - Pour la gestion des paquets et des workspaces, le protocole
catalog:,deno install --os --arch,--prod,nodeModulesLinker: "hoisted",min-release-agedans.npmrcet--package-jsonont été ajoutés pour faciliter l’unification des versions en monorepo, les installations cross-platform, les installations de production et la migration depuis des projets Node existants deno compiledétecte les projets Next.js, Astro, Fresh, Remix, SvelteKit, Nuxt, SolidStart, TanStack Start et Vite SSR, exécutedeno task buildet génère le point d’entrée approprié, tout en affichant aussi la progression lors du traitement de grands arbres de dépendances npm- Pour les tests et les Web API, les valeurs par défaut de
sanitizeOpsetsanitizeResourcesdansDeno.test()passent àfalse, untimeoutpar test et une couverture au niveau des fonctions sont ajoutés, et la prise en charge deOffscreenCanvas, desHeaders,Request,Responseet Streams transférables, du digest SHA3 et de Web Crypto P-521 est introduite - Côté mise à niveau et fondation du runtime,
deno upgraderéduit les téléchargements d’environ 48 Mo à 3–6 Mo grâce aux mises à jour delta lorsque c’est possible, permet d’installer des builds de PR avecdeno upgrade pr <number>, et V8 passe de 14.6 à 14.9
1 commentaires
Avis sur Hacker News
Deno est utile grâce à son modèle d’autorisations par défaut, il est écrit en Rust et prend en charge TypeScript nativement
Je ne suis pas très plongé dans l’écosystème web dev/Node/Bun, mais j’utilise Deno avec satisfaction sur de petits services depuis quelques années. Je me demande pourquoi Bun semble croître si vite. Je ne sais pas s’il est surtout utilisé comme bundler et moins comme runtime JavaScript
Rien que le système d’autorisations rend Deno attractif, et j’ai du mal à comprendre pourquoi, en quittant Node pour Bun, on ne va pas plutôt vers Deno
Pendant longtemps, beaucoup de dépendances et de frameworks ne fonctionnaient pas correctement sur Deno, et au début il n’y avait même pas de moyen d’installer des dépendances depuis npm. Quand on repense aux attaques sur la supply chain npm, Ryan avait peut-être raison
Bun ressemblait donc à un meilleur Node, avec beaucoup de fonctions pratiques, bien moins de configuration et quelque chose qui fonctionne immédiatement. L’équipe Deno semble avoir compris qu’il fallait la compatibilité Node pour réussir et s’y est concentrée ces dernières années. À ce stade, je considère Deno comme plus compatible avec Node que Bun
À titre indicatif, seuls certains de ces noms sont des capacités Pokémon, les autres sont de vrais outils de l’écosystème JS/TS
Quand je n’ai pas envie de toucher à la configuration des tests, à
tsconfigou aux modules ES, ça marche simplement. Deno a une bonne bibliothèque standard et un excellent support CLI, et j’aimais aussi deno deploy auparavant, mais c’est devenu assez pénible ces derniers tempsC’est vraiment agréable à utiliser, et c’est dommage qu’il ne se soit pas davantage diffusé chez les gens du JS
Je suis donc passé à Bun, et l’expérience a été bien plus fluide
Je me demande dans quel état est Deno aujourd’hui
Node est la solution stable et restera là dans le futur. On peut maintenant y utiliser TypeScript, et il semble qu’on pourra bientôt construire une application en fichier exécutable unique, y compris avec des dépendances natives
Bun est confus mais rapide, et son approche consistant à tout inclure dans la bibliothèque standard est intéressante. En plus, il a été acquis par Anthropic
Deno avait une histoire séduisante avec son sandboxing et la facilité d’importer des dépendances tierces, mais le sandboxing semble maintenant assez généralisé, et je ne suis pas certain que cette façon d’importer ait finalement été tellement meilleure que
npm addDeno est excellent. J’écris de petits et moyens services web avec Deno
Ça tourne comme une horloge suisse, et la philosophie du projet s’accorde bien avec l’esprit Unix
Personnellement, je trouve que les créateurs de Deno sont un peu trop modestes. Même quand des utilisateurs reconnaissants proposent de faire un don au projet, ils refusent poliment. Je comprends pourquoi, mais cela peut aussi créer à long terme une pression financière inutile sur le projet
Un abonnement mensuel du type « s’il vous plaît, prenez notre argent » pourrait assez bien convenir aux utilisateurs qui dépendent du succès à long terme du projet
C’est rapide, flexible, avec une gestion de paquets un peu plus saine et plus puissante que les autres alternatives JS/TS, un meilleur modèle de sécurité, une meilleure bibliothèque standard. Et c’est très rapide
Pour ceux à qui le nom Deno n’est pas familier, Deno est un runtime JavaScript et TypeScript
Il existe un test comparatif de Deno 2.6 face à ses concurrents Bun 1.3 et Node.js 25 : https://www.devtoolreviews.com/reviews/bun-vs-node-vs-deno-2...
De même, sans que ce soit dit explicitement, Bun semble avoir été exécuté avec un cache de packages déjà chaud. Je me demande si les autres runtimes avaient eux aussi un cache
Le rythme de publication régulier de Deno est impressionnant. J’ai hâte de voir quelles améliorations de performances cette version apporte
La nouvelle commande
deno packest un bon ajout pour un packaging simple et sûrSi vous utilisez Node.js, on peut faire quelque chose de similaire avec une commande unique via https://www.npmjs.com/package/ts-node-pack
Maintenant que Node.js prend en charge l’import de modules
.ts, davantage de dépôts pourront l’utiliser sans étape de build ni ajout des artefacts de build dans le checkoutdeno packpourrait remplacer le flux existantnpm publishde mon package open source, et m’aider à poursuivre le déplacement de mon travail vers une approche Deno-first / centrée sur DenoÀ l’inverse, comme le support TypeScript progresse dans Node, passer à un package npm uniquement TypeScript pourrait aussi être un très petit message envoyé à l’écosystème
Cela dit, je suis content que JSR existe comme écosystème relativement plus propre
Mais le fait d’être intégré à la CLI Deno lui donne beaucoup plus de visibilité
Si Deno avait conservé un peu plus longtemps sa proposition de valeur initiale, la pression pour la compatibilité Node aurait peut-être été en partie comblée par les agents IA
Une grande part de cette pression vient d’un problème de familiarité. Si on sait tout configurer uniquement avec express.js, on finit par attendre de tout outil ou runtime ultérieur qu’il fournisse des abstractions similaires pour que la transition soit « fluide ». Et ce, indépendamment du fait que la première solution ait été mauvaise à la base
Aujourd’hui, on peut présenter de nouvelles technologies aux développeurs en livrant avec le produit l’ensemble technique nécessaire, et cela remplace parfois réellement la documentation tout en montrant assez bien une meilleure approche alternative
Pour avoir utilisé Deno sur plusieurs projets de loisir, je suis convaincu que Deno est la direction que l’écosystème JS devrait prendre
En revanche, c’est compliqué de le recommander au travail en dehors de cas d’usage précis et généralement limités. À un moment donné, si le projet change de direction pour des raisons business, on finit par avoir besoin de Node
Depuis la sortie d’Edge.js [1], c’est bien de voir Deno prendre la compatibilité Node.js plus au sérieux
En environ 2 mois, on est passé d’un peu plus de 40 % à environ 75 %, donc coïncidence ou non, c’est clairement un pas dans la bonne direction
Bravo à toute l’équipe Deno
[1] https://edgejs.org/
J’utilise Deno comme runtime en enveloppant la plupart des idiomes à la Node. Ça fonctionne bien
Si un projet est en pur TypeScript, je l’exécute simplement avec Deno. J’apprécie aussi les options supplémentaires pour la sécurité et le fait que les scripts d’installation soient désactivés par défaut
Si vous utilisez encore Node directement, vous devriez arrêter. À tout le moins, Bun me semble préférable
Pour le travail avec des agents, il n’y a presque aucune raison d’utiliser autre chose que Rust et TypeScript. On peut ne pas être d’accord, mais la sûreté de typage, la sûreté mémoire et l’énorme corpus de travail comptent. Les agents explorent plus facilement quand il y a des erreurs pointilleuses et des patterns intégrés. Pour l’UI, TypeScript est le plus pertinent vu la masse d’exemples de design disponibles