Доступна платформа Deno 2.0, развиваемая автором Node.js

Die Version 2.0 der Deno-Plattform wurde veröffentlicht, die für die isolierte Ausführung von Serveranwendungen in den Programmiersprachen JavaScript und TypeScript unter Verwendung der V8-Engine, die in Chromium-basierten Browsern zum Einsatz kommt, konzipiert ist. Das Projekt Deno wird von Ryan Dahl, dem Schöpfer von Node.js, vorangetrieben, um eine sicherere Umgebung bereitzustellen und konzeptionelle Fehler in der Architektur von Node.js zu beseitigen. Um die Sicherheit zu erhöhen, wurde die Umhüllung um die V8-Engine in der Programmiersprache Rust geschrieben, und zur Verarbeitung von Anfragen im nicht blockierenden Modus wird die Tokio-Plattform verwendet. Der Code des Projekts wird unter der MIT-Lizenz verbreitet. Die Builds sind für Linux, Windows und macOS vorbereitet.

Bei der Vorbereitung des neuen Branchs wurde der Schwerpunkt auf die Kompatibilität mit der alten JavaScript-Infrastruktur und die Erweiterung des Spektrums der unterstützten JavaScript-Projekte gelegt, ohne die Sicherheit zu gefährden. Zu den Änderungen gehören:

  • Die abwärtskompatibilität mit Node.js und npm wurde hergestellt, die das Ausführen unveränderter Anwendungen ermöglicht, die für Node.js erstellt wurden. Die Unterstützung von Node.js ermöglicht auch die schrittweise Migration bestehender Projekte von Node.js zur Nutzung von Deno oder die Anbindung von Abhängigkeiten aus NPM an Deno-Projekte durch die Angabe des Spezifizierers „npm:“ beim Import von Paketen in den deno.json.
  • Die eingebaute Unterstützung für die Datei package.json und das Verzeichnis node_modules, das in Node.js verwendet wird, wurde hinzugefügt.
  • Die Unterstützung für private NPM-Repositorys, die durch „.npmrc“-Dateien definiert sind, wurde gewährleistet.
  • Die Unterstützung beliebter JavaScript-Frameworks wie Next.js, Astro, Remix, Angular, SvelteKit und QwikCity wurde hinzugefügt.
  • Die Unterstützung für npm-Arbeitsräume (workspace) und Mono-Repos (monorepo) wurde mit getrennter Behandlung von Abhängigkeiten implementiert.
  • Neue Befehle zur Verwaltung von Paketen wurden hinzugefügt: „deno install“ zum Installieren von Abhängigkeiten, „deno add“ zum Hinzufügen von Paketen zu package.json oder deno.json, „deno remove“ zum Entfernen von Paketen. Es wird festgestellt, dass „deno install“ ungefähr 15% schneller als npm funktioniert, wenn keine Pakete im Cache vorhanden sind, und 90% schneller, wenn ein Paket im Cache vorhanden ist (sowohl node_modules als auch der eigene globale Cache werden unterstützt).
  • Die Standardbibliothek wurde stabilisiert.
  • Ein langer Unterstützungszyklus (LTS) wurde sichergestellt.
  • JSR wurde vorgestellt - ein Repository mit JavaScript- und TypeScript-Bibliotheken, die in verschiedenen JavaScript-Runtimes verwendet werden können.
  • Im Befehl „deno fmt“ wurde die Möglichkeit zur Formatierung von Inhalten in den Formaten HTML, CSS und YAML hinzugefügt.
  • Das Kommando «deno lint» unterstützt jetzt spezifische Node.js-Regeln und -Korrekturen.
  • Im Kommando «deno test» wurde die Möglichkeit implementiert, Tests, die mit node:test erstellt wurden, auszuführen.
  • Im Kommando «deno task» wurde die Unterstützung für das Ausführen von Skripten über package.json implementiert.
  • Im Kommando «deno compile» gibt es jetzt die Möglichkeit, Code digital zu signieren.
  • Im Kommando «deno serve» wurde das Parallelisieren von HTTP-Serveroperationen unter Verwendung mehrerer CPU-Kerne implementiert.
  • Im Kommando «deno coverage» gibt es Unterstützung für das Speichern von Berichten im HTML-Format.
  • Die Leistung wurde optimiert.
    Доступна платформа Deno 2.0, развиваемая автором Node.js

Die Hauptmerkmale von Deno:

  • Sicherheitsorientierung in der Standardkonfiguration. Zugriffe auf Dateien, Netzwerkfunktionen und Zugriff auf Umgebungsvariablen sind standardmäßig blockiert und erfordern eine explizite Aktivierung. Standardanwendungen werden in isolierten Sandbox-Umgebungen ausgeführt und haben keinen Zugriff auf Systemfunktionen ohne ausdrückliche Berechtigung;
  • Integrierte Unterstützung der Programmiersprache TypeScript zusätzlich zu JavaScript. Der integrierte TypeScript-Compiler wird zur Typprüfung und zur Generierung von JavaScript verwendet, was zu einem Leistungsrückgang im Vergleich zur JavaScript-Analyse in V8 führt;
  • Die Runtime wird als eine einzige selbständige ausführbare Datei («deno») bereitgestellt. Um Anwendungen mit Deno auszuführen, reicht es aus, eine ausführbare Datei für Ihre Plattform herunterzuladen, die etwa 40 MB groß ist, keine externen Abhängigkeiten hat und keine besondere Installation im System erfordert. Dabei ist Deno keine monolithische Anwendung, sondern eine Sammlung von Crate-Paketen in Rust (deno_core, rusty_v8), die einzeln verwendet werden können.
  • Bei der Ausführung des Programms sowie beim Laden von Modulen kann die Adressierung über URL verwendet werden. Zum Beispiel kann der Befehl „deno https://deno.land/std/examples/welcome.js“ verwendet werden, um das Programm welcome.js auszuführen. Code von externen Ressourcen wird heruntergeladen und im lokalen System zwischengespeichert, wird jedoch nie automatisch aktualisiert (für ein Update ist es erforderlich, die Anwendung mit dem Flag „—reload“ explizit zu starten);
  • Effiziente Verarbeitung von HTTP-Netzwerkanfragen, die Plattform ist für die Erstellung leistungsstarker Netzwerkapplikationen ausgelegt;
  • Die Möglichkeit, universelle Webanwendungen zu erstellen, die sowohl in Deno als auch in einem herkömmlichen Webbrowser ausgeführt werden können;
  • Vorhandensein eines Standardmodulsets, dessen Verwendung keine Bindung an externe Abhängigkeiten erfordert. Module aus der Standardkollektion wurden zusätzlich auditiert und auf Kompatibilität überprüft;
  • Neben der Runtime fungiert die Deno-Plattform auch als Paketmanager und erlaubt den Zugriff auf Module innerhalb des Codes über URL. Zum Beispiel kann zur Modullieferung im Code angegeben werden „import * as log from "https://deno.land/std/log/mod.ts". Dateien, die von externen Server über URL heruntergeladen werden, werden zwischengespeichert. Die Bindung an die Versionen der Module erfolgt über die Angabe von Versionsnummern innerhalb der URL, zum Beispiel „https://unpkg.com/liltest@0.0.5/dist/liltest.js“;
  • Ausrichtung auf die Verwendung von Webstandards, Unterstützung von Promise, fetch und ECMAScript-Modulen.
  • Kompatibilität mit Paketen, die im NPM-Repository veröffentlicht und für die Node.js-Plattform erstellt wurden.
  • Das System zur Inspektion von Abhängigkeiten (Befehl „deno info“) und das Tool zur Code-Formatierung (deno fmt) sind integriert.
  • Alle Anwendungsskripte können in einer einzigen JavaScript-Datei zusammengefasst werden.

Quelle: opennet.ru

60GB SSD 8Gb DDR4