Normale Ansicht

Es gibt neue verfügbare Artikel. Klicken Sie, um die Seite zu aktualisieren.
Ältere BeiträgeHaupt-Feeds

Aktualisiertes Deno verbessert Kompatibilität zu Node.js

27. März 2023 um 07:31

Die JavaScript-Runtime Deno bietet Neuerungen beim Befehl „deno compile“, ändert einige APIs, kann TypeScript 5.0 ausführen und kommt Node.js-Entwicklern weiter entgegen. Aufgrund eines Bugs sollte man jedoch zur Version 1.32.1 greifen.

Laut den Deno-Entwicklern erhält die zunächst veröffentlichte Version 1.32.0 eine kritische Sicherheitslücke. Die tritt auf, wenn man einen vergrößerbaren „ArrayBuffer“ an eine eingebaute, asynchron arbeitende Funktionen übergibt. Diese könnte den ArrayBuffer schrumpfen, was wiederum zu einer Out-Of-Bound Schreib-/Leseoperation führt. Deno-Nutzer sollten daher direkt auf die fehlerkorrigierte Version 1.32.1 aktualisieren. Die resizable ArrayBuffer führt die aktualisierte V8-Engine ein, die jetzt in der Version 11.2 den eigentlichen JavaScript-Code ausführt.

Deno 1.32 verbessert die Kompatibilität zum Konkurrenten Node.js an gleich mehreren Stellen. Die meisten Änderungen beziehen sich dabei auf die Konfigurationsdatei „package.json“. So installiert Deno nur dann Pakete, wenn der Code einen Specifier verwendet, zu dem ein Eintrag in der Konfigurationsdatei existiert. Stolpert Deno beim Parsen der „package.json“ über Abhängigkeitsfehler, behandelt sie die Runtime jetzt „lazy“, was Unterbrechungen minimieren soll (Lazy Error Surfacing). Weiterhin lässt sich die Auto-Discovery-Funktion für die „package.json“ deaktivieren. Dazu gibt man Deno die Parameter „–no-config“ und „–no-npm“ mit auf den Weg. Entwickler sollen so eine bessere Kontrolle über den Prozess erhalten. Abschließend existiert die neue Umgebungsvariable „DENO_NO_PACKAGE_JSON“. Mit ihr kann man Deno davon abhalten, die „package.json“ zu berücksichtigen.

Deno 1.32 unterstützt erstmals in „node:crypto“ die Crypto-Schnittstellen „createCipheriv“ und „createDecipheriv“. Dies erweitert die Zahl der bereitstehenden Kryptografiefunktionen.

Das Kommando „deno compile“ erlaubt die Nutzung von dynamischen Importen und der WebWorker API. Dies wiederum vereinfacht den Bau von Multi-Threading-Programmen. „deno run“ erlaubt zudem den Start von JavaScript-Dateien, die keine Endung besitzen. Dazu gibt man die Endung im Parameter „–ext“ vor.

Die API „Deno.FileInfo.dev“ steht ab sofort auch unter Windows bereit. Dies hat jedoch gleichzeitig zur Folge, dass sich die Typings für das „Deno.FileInfo.dev“-Feld von „number | null“ zu „number“ geändert haben. Neu an Bord sind die APIs „Deno.DatagramConn.joinMulticastV4“ und „Deno.DatagramConn.joinMulticastV6“. Bei den Web APIs ist „URLSearchParams.size()“ hinzugekommen. Nicht mehr dabei ist hingegen die instabile WebGPU-Schnittstelle – hier waren vor allem Performance-Problemen ausschlaggebend.

Umbauarbeiten gab es in der Standardbibliothek: Insgesamt sechs Module aus „std/encoding“ hat das Deno-Team direkt unter „std“ einsortiert. So ist jetzt etwa „std/encoding/csv“ über „std/csv“ zu erreichen. Die Deno-Entwickler wollen damit die Konsistenz in der Modulstruktur verbessern. Neben „csv“ betroffen sind „yaml“, „toml“, „json“, „jsonc“ und „front_matter“.

Der Beitrag Aktualisiertes Deno verbessert Kompatibilität zu Node.js erschien zuerst auf Linux-Magazin.

Deno 1.30 unterstützt eingebaute Node.js-Module

30. Januar 2023 um 08:26

Die JavaScript-Runtime und Node.js-Alternative Deno verwandelt die Konfigurationsdatei deno.js in eine Import Map und unterstützt ab sofort Build-in Node.js-Module. Abschließend gab es ein paar kleinere Änderungen an den APIs.

In Node.js eingebaute Module wie „fs“, „path“ und „process“ konnten NPM-Pakete bereits seit der letzten Deno-Version über eine Kompatibilitätsschicht nutzen. Diese Module sind jetzt auch im Deno-Code verfügbar. Dazu nutzen JavaScript-Entwickler den „node:“ Specifier. Als Beispiel liefert die Ankündigung von Deno 1.30:

import { readFileSync } from “node:fs”;

console.log(readFileSync(“deno.json”, { encoding: “utf8” }));

Wichtig ist dabei die Nutzung der Import Map. „node:“ funktioniert sowohl in Deno als auch in Node.js. Wer Code für beide Runtimes erstellt, dem raten die Deno-Entwickler, grundsätzlich „node:“ zu verwenden.

Apropos Import Map: Die Konfigurationsdatei „deno.js“ lässt sich ab sofort als Import Map einspannen. Dazu definiert man direkt in der „deno.js“ mit „imports“ und „scopes“ eine Import Map. Deno erkennt sie dort automatisch, was wiederum eine ansonsten notwendige zweite Konfigurationsdatei spart.

Die Schnittstelle „Deno.permissions“ hat jetzt passende synchrone Funktionen spendiert bekommen, wie etwa „Deno.permissions.querySync()“. Des Weiteren akzeptieren „Deno.writeFile()“ und „Deno.writeTextFile()“ einen „ReadableStream“. Neu ist die API „Deno.env.has(name)“. Einzelne Test-Schritte dürfen zudem ab sofort auch Funktionen sein.

Der Beitrag Deno 1.30 unterstützt eingebaute Node.js-Module erschien zuerst auf Linux-Magazin.

JavaScript-Runtime Deno 1.28 arbeitet mit weiteren NPM-Modulen zusammen

16. November 2022 um 08:56

Deno, die Alternative zu Node.js kann nach Angaben der Entwickler 1,3 Millionen NPM-Module einbinden. Möglich machen das Verbesserungen bei der Node.js-Kompatibilität.

Die NPM-Module binden Entwickler über eine mit “npm:” startende URL ein. “npm:chalk@5“ steht beispielsweise für das NPM-Modul Chalk. Die URL lässt sich dann im “import”-Statement oder in einer Import Map nutzen. Die Konfigurationsdatei “package.json” ist beim Einsatz von Deno nicht notwendig, auch der Befehl “npm install” fällt weg.

Des Weiteren verbessert Deno 1.28 den Umgang mit Lock Files. Diese erkennt und nutzt die JavaScript-Runtime automatisch, wenn eine Konfigurationsdatei „deno.json(c)“ vorhanden ist.

Als stabil gelten jetzt die APIs “Deno.bench()”, “Deno.gid()”, “Deno.networkInterfaces()”, “Deno.systemMemoryInfo()” und “Deno.uid()”. Wer sie nutzen möchte, muss Deno folglich nicht mehr explizit mit dem Parameter “–unstable” starten.

Die neue, aber noch nicht stabile API “Deno.Command” führt externe Kommandos aus. Sie soll die ebenfalls nicht stabilen APIs “Deno.spawn”, “Deno.spawnSync” und “Deno.spawnChild” ersetzen. Abschließend haben die Entwickler die intern verwendete V8-Engine auf die Version 10.9 aktualisiert.

Der Beitrag JavaScript-Runtime Deno 1.28 arbeitet mit weiteren NPM-Modulen zusammen erschien zuerst auf Linux-Magazin.

❌
❌