5 points par GN⁺ 2024-02-06 | 2 commentaires | Partager sur WhatsApp

Les changements de Deno en 2023

  • Deno comprend désormais le fichier package.json et peut importer des modules Node intégrés comme node:fs et node:crypto via le spécificateur node:.
  • La nouvelle API de serveur web Deno.serve a été stabilisée, et le débit HTTP a augmenté d’environ 73 % sur un an.
  • deno compile prend désormais en charge les workers, les imports dynamiques et les modules npm.
  • Deno exploite mieux les Web Streams (ReadableStream et WriteableStream) ainsi que AbortController dans l’ensemble de ses API, réduisant l’écart entre la programmation côté navigateur et côté serveur.
  • Le fichier de configuration de Deno, deno.json, peut maintenant aussi servir de carte d’imports, avec un schéma simplifié, la prise en charge des glob patterns et une utile propriété de haut niveau "exclude".
  • Jupyter, l’outil open source de notebooks, prend désormais en charge Deno avec JavaScript et TypeScript.
  • WebGPU a été ajouté à Deno après près d’un an de développement.
  • Le TypeScript sans configuration de Deno améliore l’intégration avec les éditeurs grâce à des progrès notables dans le LSP et l’intégration VS Code.
  • Fresh, le framework web basé sur Deno, s’enrichit avec la prise en charge de Tailwind, des partials, des fichiers de layout et d’autres fonctionnalités.
  • Deno Deploy devient plus puissant grâce à des briques nativement distribuées à l’échelle mondiale comme Deno KV, Queues et Cron.
  • La plateforme a lancé un service de subhosting en self-service pour permettre le déploiement et l’exécution de JavaScript multi-tenant non fiable.

Compatibilité renforcée avec Node et npm

  • Deno étend sa compatibilité avec l’écosystème Node, notamment avec les modules Node intégrés comme node:fs et node:child_process via le spécificateur node:.
  • Plusieurs nouvelles fonctionnalités ont été introduites pour faciliter la transition de Node vers Deno :
    • Le flag --unstable-byonm permet d’utiliser votre gestionnaire de paquets npm préféré dans Deno.
    • Le flag --unstable-sloppy-imports assouplit la rigueur des imports de modules afin d’accommoder différents styles et pratiques de code.
    • Le flag --unstable-unsafe-proto prend en charge Object.prototype.__proto__, dont dépendent de nombreux paquets npm.
  • La stabilisation de Node-API élargit la prise en charge en permettant d’utiliser des paquets npm qui en dépendent sans le flag --unstable.

Des serveurs web plus simples et plus rapides avec Deno.serve()

  • L’introduction puis la stabilisation de la fonction Deno.serve() permet aux développeurs de démarrer un serveur avec un minimum de code.
  • Des optimisations ciblées dans la bibliothèque cœur et les mécanismes de boucle d’événements améliorent fortement les performances.
  • Le débit HTTP de Deno a nettement progressé dans les benchmarks utilisant une configuration de serveur "Hello, world" de base.

Un deno.json plus flexible

  • Deno suit un principe de programmation qui vise à pouvoir être utilisé sans configuration complexe, et continue d’améliorer le fichier deno.json pour conserver cette simplicité d’usage :
    • deno.json peut aussi être utilisé comme carte d’imports.
    • deno fmt prend en charge les points-virgules, offrant davantage de souplesse dans le style de code.
    • L’intégration avec package.json facilite les allers-retours entre les environnements Node et Deno.
    • La structure de deno.json a été simplifiée pour permettre aux développeurs de s’y repérer plus intuitivement.
    • L’introduction des glob patterns permet un contrôle plus fin de l’inclusion ou de l’exclusion de fichiers et de répertoires.

Une expérience de développement plus fluide grâce au LSP

  • L’intégration du Language Server Protocol (LSP) de Deno offre des fonctionnalités comme une navigation précise vers les définitions, un IntelliSense complet et un formatage fluide du code pour les projets TypeScript.
  • Beaucoup d’efforts ont été consacrés à l’amélioration du LSP pour rendre le développement avec Deno plus fluide et plus intuitif.

WebGPU

  • WebGPU intègre à Deno une technologie de pointe permettant aux développeurs d’exploiter directement la puissance du matériel GPU depuis JavaScript.
  • WebGPU est disponible derrière le flag --unstable-webgpu et constitue une étape importante dans l’extension des capacités des applications Deno.

Notebooks Jupyter

  • Jupyter, l’outil open source de notebooks, prend désormais en charge Deno avec JavaScript et TypeScript.
  • Cela permet de faire de la data science, de la visualisation et plus encore avec JavaScript et TypeScript modernes ainsi qu’avec les API standards du web.

Crates Rust open source remarquables

  • Deno est lié à divers projets open source et y contribue activement afin d’étendre son ensemble de fonctionnalités et d’optimiser ses performances.
  • Cette année, Deno a publié plusieurs crates Rust qui peuvent aussi être utiles de manière indépendante.

Fresh

  • Fresh est le framework web full stack moderne de Deno, qui n’envoie pas de JavaScript côté client par défaut, et continue d’être amélioré pour rester simple à utiliser et plus performant.

Expansion de l’activité cloud de Deno

  • Deno Subhosting, après avoir servi aux edge functions de Netlify et aux boutiques e-commerce des clients de Deco.cx, est devenu un service autonome accessible gratuitement à tous.
  • Le lancement de briques cloud comme Deno KV, Queues et Cron marque une nouvelle avancée vers la vision d’une simplification radicale du développement web.

Deno 2

  • Deno 2 doit proposer un runtime amélioré, avec notamment des annonces intéressantes autour d’une meilleure compatibilité avec Node et npm, ainsi que de la gestion et de l’optimisation des dépendances de projet.

L’avis de GN⁺ :

  • Il est important que Deno améliore fortement sa compatibilité avec Node.js tout en se concentrant sur la simplification du développement web. Cela peut faciliter la transition vers Deno pour les développeurs Node.js existants et encourager son adoption.
  • L’intégration de fonctionnalités avancées comme WebGPU montre que Deno dépasse le simple rôle de plateforme server-side pour convenir à un éventail plus large de développement d’applications. Cela peut être particulièrement attractif pour les développeurs qui ont besoin de calcul haute performance exploitant le GPU.
  • Les progrès du framework Fresh et de Deno Deploy suggèrent que Deno peut jouer un rôle important dans le développement web full stack, tout en renforçant sa position comme service cloud. Ces avancées augmentent la probabilité que Deno s’impose comme un acteur majeur du web moderne.

2 commentaires

 
[Ce commentaire a été masqué.]
 
GN⁺ 2024-02-06
Commentaires sur Hacker News
  • Un utilisateur souligne qu’il n’a toujours pas trouvé comment récupérer des applications Deno dans un environnement non connecté à Internet, et qu’il n’existe absolument aucune documentation à ce sujet. Il estime que, dans ces conditions, Deno n’a aucun espoir en environnement d’entreprise.
  • Un autre utilisateur exprime son intérêt pour la fonctionnalité WebGPU et explique qu’il crée des interfaces graphiques desktop en JavaScript/TypeScript via le framework Slint, sans navigateur ni webview. Il espère que si Deno pouvait ouvrir des fenêtres directement, il serait possible de distribuer du wasm au lieu de binaires natifs pour toutes les plateformes. Il ajoute toutefois que WebGPU n’inclut pas d’API pour ouvrir des fenêtres, et qu’une bibliothèque supplémentaire reste donc nécessaire.
  • Un utilisateur espère une amélioration de l’état de la compilation de Deno, en soulignant que les exécutables générés dépassent 90 MB et que des erreurs surviennent lors de la compression, ce qui rend le déploiement difficile, contrairement à Go. Il mentionne que, sur le plan de la taille, Deno est devenu pire que la solution pkg de Node.js.
  • Un autre utilisateur souhaiterait un meilleur support pour l’intégration de Deno dans un processus hôte Rust. Il explique qu’il écrit un bundler JavaScript et qu’il a besoin d’un runtime Node.js pour exécuter des plugins, mais que la crate deno-core est très basique et difficile à intégrer. Il pense que Deno pourrait devenir le « runtime de plugins » du monde des outils JS et précise qu’à l’heure actuelle, il communique avec un processus enfant Node.js via stdio depuis un processus hôte Rust.
  • Un utilisateur dit qu’il n’aime pas JavaScript, mais qu’il a essayé Deno et trouvé l’expérience très fluide et rapide.
  • Un autre utilisateur indique avoir déployé pour la première fois en 2023 une application Deno non triviale en production ; il a eu du mal pendant l’apprentissage à synchroniser les fichiers lock dans un dépôt comportant plusieurs points d’entrée, mais l’expérience a été globalement bonne.
  • À propos du fait que Jupyter prend désormais en charge JavaScript et TypeScript via Deno, un utilisateur réagit positivement tout en rappelant que Python offre un excellent support pour les nombres et les mathématiques, et se demande qui voudra réellement utiliser cela.
  • Un utilisateur note qu’il est possible de s’inscrire à la liste d’attente de JSR, dont le lien figure à la fin de l’article, et se demande ce que l’équipe Deno est en train de préparer.
  • Un utilisateur a partagé un lien au sujet de Deno Deploy, qui a réduit ses régions GCP de 35 à 12.
  • Un utilisateur dit vouloir utiliser le framework de développement web Fresh, mais estime que le fait de ne prendre en charge que Tailwind pour le moment donne une impression d’immaturité. Il s’interroge sur le fait de donner la priorité aux transitions de vue plutôt qu’au bundling CSS dans la prochaine itération.