IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Le moteur d'exécution pour JavaScript, TypeScript et WebAssembly, Deno 2.9 est disponible, intégrant un générateur d'applications de bureau natives et facilite la migration des projets Node.js

Le , par Alex

60PARTAGES

3  0 
Le moteur d'exécution pour JavaScript, TypeScript et WebAssembly Deno 2.9 est disponible, intégrant un générateur d'applications de bureau natives et facilite la migration des projets Node.js

Deno 2.9 vient d'être publié en tant que dernière version de ce moteur d'exécution JavaScript open source très populaire. Cette mise à jour majeure introduit « deno desktop », un nouvel outil conçu pour rationaliser le développement d’applications de bureau natives à partir de projets web. Parallèlement à cette version, Deno 2.9 facilite l’adoption par les développeurs en permettant à la commande deno install de lire directement les fichiers de verrouillage npm, pnpm, Yarn et Bun. Cette mise à jour aligne Deno sur la dernière cible de compatibilité Node.js 26, ajoute la prise en charge de l’importation de fichiers CSS en tant que feuilles de style constructibles à l’aide d’attributs d’importation, et étend considérablement l’API Web Cryptography avec des algorithmes modernes et post-quantiques basés sur les propositions du NIST.

Deno est un moteur d'exécution pour JavaScript, TypeScript et WebAssembly, basé sur le moteur JavaScript V8 et le langage de programmation Rust. Deno a été co-créé par Ryan Dahl, le créateur de Node.js, et Bert Belder. Deno assume explicitement le rôle à la fois de moteur d'exécution et de gestionnaire de paquets au sein d'un seul exécutable, sans nécessiter de programme de gestion de paquets distinct.

Deno se veut un environnement de script productif et sécurisé destiné aux programmeurs modernes. À l'instar de Node.js, Deno met l'accent sur une architecture orientée événements, en proposant un ensemble d'utilitaires d'E/S de base non bloquants, ainsi que leurs versions bloquantes. Deno peut être utilisé pour créer des serveurs web, effectuer des calculs scientifiques, etc. Deno est un logiciel open source sous licence MIT.

Récemment, Deno 2.9 vient d'être publié en tant que dernière version de ce moteur d'exécution JavaScript open source très populaire. Cette mise à jour majeure introduit « deno desktop », un nouvel outil conçu pour rationaliser le développement d’applications de bureau natives à partir de projets web. Au lieu de s’appuyer sur Electron ou Tauri, les développeurs pointent « deno desktop » vers n’importe quel script ou framework web, et celui-ci compile le code en un binaire unique et autonome. L’interface utilisateur s’exécute dans une vue web, tandis que la logique de l’application s’exécute dans Deno, ce qui donne lieu à une application native portable et distribuable.

« deno desktop » redéfinit complètement les règles du jeu en matière de distribution pour ordinateurs de bureau. Au lieu d'encapsuler votre projet dans des couches IPC à forte friction et des frameworks lourds, deno desktop cible votre référentiel web existant (Next.js, Astro, Remix, SvelteKit, etc.) et le compile en un exécutable natif léger et autonome. Pas de réécriture de code, pas d'empreinte de dépendances massive, et une compatibilité totale avec Node/npm dès l'installation. Le résultat est un binaire redistribuable qui regroupe votre code, le runtime Deno et un moteur de rendu Web en un seul paquet par plateforme.

Parallèlement à cette version, Deno 2.9 facilite l’adoption par les développeurs en permettant à la commande deno install de lire directement les fichiers de verrouillage npm, pnpm, Yarn et Bun. Cela simplifie la transition pour ceux qui migrent des projets Node.js vers Deno en limitant les étapes de migration à quelques commandes. Les performances ont également été améliorées au niveau du démarrage, de l’utilisation de la mémoire et du débit HTTP, ce qui profite à la plupart des projets.

Cette mise à jour aligne Deno sur la dernière cible de compatibilité Node.js 26, ajoute la prise en charge de l’importation de fichiers CSS en tant que feuilles de style constructibles à l’aide d’attributs d’importation, et étend considérablement l’API Web Cryptography avec des algorithmes modernes et post-quantiques basés sur les propositions du NIST. Plusieurs commandes intégrées, notamment `deno compile`, `deno bundle`, `deno fmt` et `deno task`, ont été améliorées. Ces modifications en arrière-plan sont complétées par une meilleure gestion des dépendances, une sécurité renforcée de la chaîne d’approvisionnement, des outils de test et de couverture affinés, ainsi que des paramètres de traçage OpenTelemetry plus granulaires pour l’observabilité.


Voici un extrait de l'annonce de Deno 2.9 :

Performances

Deno 2.9 apporte des gains de performances significatifs en termes de temps de démarrage, d’utilisation de la mémoire et de débit HTTP. Les tests de performance Deno.serve ci-dessous exécutent trois charges de travail avec un niveau de concurrence de 100 : un « Hello, World ! » en texte clair, un corps de réponse de 1 Mio et une requête réaliste qui envoie via POST une charge utile JSON avec un en-tête d’authentification « Bearer » et la renvoie sous forme de JSON. Toutes ces mesures ont été effectuées sur une machine Linux x86_64 dédiée, en comparaison avec Deno 2.8.0 :


Démarrage. Un programme « hello-world » démarre désormais à froid en environ la moitié du temps nécessaire avec la version 2.8 (passant de 34 ms à 17 ms). Ce gain provient du chargement différé des variables globales de Node à partir du snapshot, de la limitation du démarrage précoce de Node aux workers Node, d’un cache de code V8 pour les modules ESM résiduels chargés de manière différée, et d’un snapshot minifié ; sous macOS, des corrections en chaîne réduisent encore le temps de pré-main.

Mémoire. Le point marquant de ce cycle est la gestion de la mémoire sous charge. Dans la version 2.8, la taille de l’ensemble résident (RSS) augmentait avec la charge de travail, passant d’environ 94 Mo lors du service de texte en clair à 197 Mo lors de la diffusion en continu de corps de 1 Mio. Dans la version 2.9, elle reste pratiquement stable, se maintenant autour de 62 Mo quelle que soit l’activité du serveur. Cela se traduit par une RSS de pointe 2,2 fois inférieure pour la charge de travail en conditions réelles (passant de 142 Mo à 64 Mo) et 3,1 fois inférieure pour les corps de 1 MiB (passant de 197 Mo à 63 Mo) ; ainsi, une même machine peut exécuter beaucoup plus d’instances Deno.serve simultanées avant d’atteindre ses limites.

Débit HTTP. Deno.serve est également plus rapide dans tous les cas de figure : la charge de travail en conditions réelles gagne 1,27 fois en débit, le texte en clair 1,11 fois et les corps de 1 Mio 1,18 fois, grâce à un nouveau chemin de service HTTP/1.1 propre à Deno.

Plusieurs chemins critiques ont également été transférés de JavaScript vers Rust dans cette version : crypto.subtle et console / Deno.inspect.

Importations de modules CSS

Deno 2.9 prend en charge l’importation de fichiers CSS en tant que feuilles de style constructibles à l’aide d’attributs d’importation, conformément à la norme web relative aux scripts de modules CSS :

Code : Sélectionner tout
1
2
3
import sheet from "./styles.css" with { type: "css" };
 
document.adoptedStyleSheets = [sheet];


L’importation donne lieu à une instance CSSStyleSheet, ce qui permet au même code de s’exécuter aussi bien dans Deno que dans le navigateur sans passer par une étape de regroupement. Cette fonctionnalité est activée via l’option --unstable-raw-imports dans la version 2.9. Une simple importation CSS n’a pas grand intérêt en soi, mais elle fait toute la différence entre un code front-end s’exécutant sous Deno et un code qui bloque le chargeur de modules : les composants et modules qui importent leurs propres feuilles de style se chargent désormais directement et font l’objet d’une vérification de types, ce qui facilite considérablement le test du code front-end dans Deno.

Migration depuis npm, pnpm, yarn et Bun

La migration d’un projet Node existant vers Deno est on ne peut plus simple : dans la plupart des cas, quelques commandes suffisent. Exécutez deno install pour récupérer vos dépendances, puis deno task dev pour lancer votre application, et vous êtes déjà sur Deno. Il n’y a rien à porter ni à réécrire. Deno lit le fichier package.json, le fichier de verrouillage et la structure de votre espace de travail existants. La version 2.9 corrige les derniers détails pour que même les espaces de travail pnpm et les outils qui font appel à Node via le shell fonctionnent sans intervention.

Votre fichier de verrouillage vous suit. Le principal obstacle lors du changement de gestionnaire de paquets est la perte d’un graphe de dépendances soigneusement verrouillé. Avec la version 2.9, ce n’est plus le cas. Exécutez deno install dans un projet contenant un fichier package-lock.json, pnpm-lock.yaml, yarn.lock ou bun.lock, mais pas de deno.lock, et Deno génère un nouveau fichier deno.lock directement à partir de celui-ci, en conservant les versions résolues exactes et les hachages d’intégrité lors de cette première installation :

Code : Sélectionner tout
1
2
$ deno install
Seeded deno.lock from package-lock.json



Il n’y a ni réévaluation ni mises à niveau inattendues : les versions que vous utilisiez sous npm sont celles que vous utilisez sous Deno. À partir de là, la commande deno install crée un répertoire node_modules avec lequel Deno peut fonctionner, et la commande deno task exécute les scripts de votre fichier package.json existants, ce qui permet au reste de votre équipe de continuer à travailler comme d’habitude.

Les espaces de travail sont conservés, y compris ceux de pnpm. Deno reconnaît déjà le champ workspaces que npm, yarn et Bun stockent dans package.json ; ces monorepos fonctionnent donc tels quels. pnpm fait figure d’exception : il stocke la configuration de son espace de travail dans un fichier séparé, pnpm-workspace.yaml, que Deno ne lit pas, ce qui provoquait auparavant une erreur de résolution source de confusion. Désormais, Deno détecte ce fichier et migre ses paquets, son catalogue et ses catalogues vers votre fichier package.json (ou deno.json) sans modifier vos commentaires ni vos champs existants, puis vous invite à relancer l’opération. Associé au protocole catalog: adopté par Deno dans la version 2.8, vos versions de dépendances centralisées et partagées continuent de fonctionner après le transfert.

Les outils qui s’attendent à trouver Node continuent de fonctionner. De nombreux outils de build font directement appel à un binaire Node, comme le pool de workers Turbopack de Next.js. Lorsqu’aucun véritable Node n’est installé, Deno place désormais un substitut dans le PATH qui redirige vers lui-même et traduit les arguments de la CLI de Node, afin que ces outils s’exécutent sans modification. Un véritable Node n’est jamais masqué, et l’option DENO_DISABLE_NODE_SHIM=1 permet de désactiver cette fonctionnalité.

En résumé, vous pouvez intégrer Deno dans un projet Node, y exécuter vos scripts existants, puis décider de la suite à donner selon votre propre calendrier.

Source : Annonce Deno 2.9

Et vous ?

Pensez-vous que cette annonce est crédible ou pertinente ?
Quel est votre avis sur le sujet ?

Voir aussi :

Deno 2.6, la dernière version du runtime JavaScript et TypeScript moderne, est disponible avec l'outil dx, un contrôle plus granulaire des autorisations et une vérification des types TypeScript plus rapide

Node.js 26 est disponible, activant l'API Temporal par défaut pour améliorer les opérations de date et d'heure, et apportant la mise à jour du moteur V8 et le client HTTP Undici

Deno contre Oracle : Deno a déposé une demande d'annulation de la marque JavaScript d'Oracle. Oracle a jusqu'au 4 janvier 2025 pour agir, sinon la marque sera probablement annulée
Vous avez lu gratuitement 4 295 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !