Les langages dynamiques sont des outils utiles. Les scripts permettent aux utilisateurs de lier rapidement et succinctement des systèmes complexes et d'exprimer des idées sans se soucier de détails tels que la gestion de la mémoire ou les builds systèmes. Ces dernières années, des langages de programmation comme Rust et Go ont rendu beaucoup plus facile la production de code machine natif sophistiqué; ces projets sont des développements incroyablement importants dans l'infrastructure informatique. Mais pour les ingénieurs Ryan Dahl, Bert Belder et Bartek Iwańczuk cependant, il est toujours important d'avoir un environnement de script puissant qui peut traiter un large éventail de domaines problématiques.
JavaScript est le langage dynamique le plus utilisé, fonctionnant sur tous les appareils dotés d'un navigateur Web. Un grand nombre de développeurs « parlent » couramment le JavaScript et beaucoup d'efforts ont été déployés pour optimiser son exécution. Grâce à des organismes de normalisation comme ECMA International, le langage a été soigneusement et continuellement amélioré.
Aussi, les ingénieurs Ryan Dahl, Bert Belder et Bartek Iwańczuk pensent que JavaScript est le choix naturel pour l'outillage de langage dynamique; que ce soit dans un environnement de navigateur ou en tant que processus autonomes.
« Notre vecteur d'origine dans ce domaine, Node.js, s'est avéré être une plateforme logicielle très réussie. Les gens l'ont trouvé utile pour créer des outils de développement Web, créer des serveurs Web autonomes et pour une myriade d'autres cas d'utilisation. Node, cependant, a été conçu en 2009 lorsque JavaScript était un langage très différent. Par nécessité, Node a dû inventer des concepts qui ont ensuite été repris par les organismes de normalisation et ajoutés au langage différemment. Dans la présentation Erreurs de conception dans Node, ceci est discuté plus en détail. En raison du grand nombre d'utilisateurs de Node, il est difficile et lent de faire évoluer le système.
« Avec l'évolution du langage JavaScript et de nouveaux ajouts comme TypeScript, la création de projets Node peut devenir une tâche ardue, impliquant la gestion de systèmes de génération et d'autres outils lourds qui enlèvent le plaisir des scripts de langage dynamique. De plus, le mécanisme de liaison à des bibliothèques externes est fondamentalement centralisé via le référentiel NPM, qui n'est pas conforme aux idéaux du Web.
« Nous pensons que le paysage de JavaScript et de l'infrastructure logicielle environnante a suffisamment changé pour qu'il soit utile de le simplifier. Nous recherchons un environnement de script amusant et productif qui peut être utilisé pour un large éventail de tâches ».
Vient alors Deno 1.0
Deno est un nouveau runtime pour exécuter JavaScript et TypeScript en dehors du navigateur Web.
Deno tente de fournir un outil autonome pour l'écriture rapide de fonctionnalités complexes. Deno est un seul fichier exécutable. Comme un navigateur Web, il sait récupérer du code externe. Dans Deno, un seul fichier peut définir un comportement arbitrairement complexe sans aucun autre outil.
| Code JavaScript : | Sélectionner tout |
1 2 3 4 | import { serve } from "https://deno.land/std@0.50.0/http/server.ts"; for await (const req of serve({ port: 8000 })) { req.respond({ body: "Hello World\n" }); } |
Ici, un module serveur HTTP complet est ajouté en tant que dépendance sur une seule ligne. Il n'y a pas de fichiers de configuration supplémentaires, il n'y a pas d'installation à faire au préalable, il suffit de faire deno run example.js.
Comme pour les navigateurs, le code est exécuté par défaut dans un sandbox sécurisé. Les scripts ne peuvent pas accéder au disque dur, ouvrir des connexions réseau ou effectuer d'autres actions potentiellement malveillantes sans autorisation. Le navigateur fournit des API pour accéder aux caméras et aux microphones, mais les utilisateurs doivent d'abord donner leur autorisation. Deno fournit un comportement analogue dans le terminal. L'exemple ci-dessus échouera sauf si l'indicateur de ligne de commande --allow-net est fourni.
Deno veille à ne pas s'écarter des API JavaScript standardisées du navigateur. Bien sûr, toutes les API de navigateur ne sont pas pertinentes pour Deno, mais pour celles dont c’est le cas, Deno ne s'écarte pas de la norme.
Prise en charge de TypeScript de première classe
« Nous voulons que Deno soit applicable à un large éventail de domaines problématiques: des petits scripts unifilaires à la logique métier complexe côté serveur », indiquent les ingénieurs. À mesure que les programmes...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.
