Sortie de Deno 1.10 avec amélioration des tests et support de l'API Web Storage

Par:
fredericmazue

mar, 25/05/2021 - 15:33

Deno est un projet créé par Ryan Dahl, également créateur de node.js. En 2018, Ryan Dahl avait exprimé ses 10 regrets à propos de node.js. A la suite de quoi il a lancé de projet Deno. D'une certaine façon, Deno est un node.js réécrit et repensé. Deno est écrit en Rust. Deno 1.0 est sorti il y a un an en mai 2020 et depuis le projet est très actif. Deno vient de sortir de version 1.10.

Il s'agit d'une version riche dans laquelle nous remarquons tout d'abord les améliorations du lanceur de tests intégré. Avant cette version, Deno exécutait tous les tests en série dans une seule instance d'exécution. Désormais, tous les modules de test sont exécutés de manière isolée à l'aide d'une nouvelle instance d'exécution pour chacun des modules. La commande deno test prend dispose de l'indicateur --jobs qui permet de spécifier le nombre de threads à utiliser lors de l'exécution des tests. Par défaut, tous les tests sont toujours exécutés en série.

Déno 1.10 ajoute la prise en charge de l'API de stockage Web Storage. Cette API expose les points localStorage et sessionStorage, qui peuvent être utilisés pour stocker une petite quantité de données de manière permanente, sans accès direct au système de fichiers. Les données sont indexées par origine (qui dans Deno peut être définie avec l'indicateur --location). Vous pouvez utiliser localStorage et sessionStorage sans aucune permission.

L'API fonctionne exactement comme dans le navigateur: localStorage peut être utilisée pour stocker jusqu'à 5 Mo de données de manière persistante lors des redémarrages du processus, tandis qu'elle sessionStorage peut être utilisée pour stocker une petite quantité de données pendant la durée du processus.

Voici un exemple:

// kv.ts

const key = Deno.args[0];

if (key === undefined) {
  // if user passes no args, display number of entries
  console.log(localStorage.length);
} else {
  const value = Deno.args[1];

  if (value === undefined) {
    // if no value is specified, return value of the key
    console.log(localStorage.getItem(key));
  } else {
    // if value is specifed, set the value
    localStorage.setItem(key, value);
  }
}

que l'on peut exécuter comme ceci :

$ deno run --location https://example.com ./kv.ts
0
$ deno run --location https://example.com ./kv.ts foo bar
$ deno run --location https://example.com ./kv.ts foo
bar
$ deno run --location https://example.com ./kv.ts
1

A remarquer encore, la prise en charge des atomiques et de la mémoire partagée dans WebAssembly. Cette fonctionnalité est déjà activée par défaut dans Chrome et Firefox, et maintenant aussi dans Deno.

Deno vous est présenté dans Programmez! #237 et Programmez! #242.

Deno est un logiciel libre sous licence MIT disponible sur GitHub.

Il dispose d'un site officiel : deno.land