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.

Node.js braucht Sicherheitsupdate

11. Juli 2022 um 07:32

Verschiedene Lücken in der plattformübergreifenden JavaScript-Laufzeitumgebung node.js erfordern ein Sicherheitsupdate.

Zwei Sicherheitslücken sind von den Entwicklern in ihrer Ankündigung mit hohem Risiko bewertet worden. Eine davon ermöglicht eine durch manipulierte IP-Adressen fälschlich ausgelöste DNS-Abfrage. Die wiederum lasse sich von einem Angreifer ausnutzen, der wahlweise die Kontrolle über den DNS-Server hat oder eine Man-in-the-Middle-Position. Damit könne er DNS-Antworten fälschen, um einen Rebinding-Angriff durchzuführen und sich so mit dem WebSocket-Debugger zu verbinden, was dann die Ausführung von beliebigem Code ermögliche.

Eine weitere Lücke mit hohem Risiko betrifft nur Windows. Dort lässt sich unter bestimmten Umständen eine Suche nach einer DLL auslösen, die ein Angreifer manipuliert haben könnte. Weiter fünf Lücken, die mit dem Update geschlossen werden, gelten den Entwicklern als mittleres Risiko. In der Ankündigung sind weitere Details und die Updates genannt.

Der Beitrag Node.js braucht Sicherheitsupdate erschien zuerst auf Linux-Magazin.

❌
❌