Проект Deno развивает защищённую JavaScript-платформу, похожую на Node.js

Verfügbar Projektveröffentlichung Deno 0.33, das eine ähnliche Plattform wie Node.js für die separate Ausführung von Anwendungen in JavaScript und TypeScript bietet, die zur Ausführung von Anwendungen ohne Bindung an einen Browser verwendet werden kann, beispielsweise für die Erstellung von Server-Handlern. In Deno wird die JavaScript-Engine V8, die auch in Node.js und Browsern auf Basis des Chromium-Projekts verwendet wird. Der Code des Projekts wird verbreitet steht unter der MIT-Lizenz. Das Projekt wird von Ryan Dahl (Ryan Dahl), dem Schöpfer der JavaScript-Plattform Node.js, weiterentwickelt.

Eines der Hauptziele bei der Entwicklung einer neuen Laufzeitumgebung für JavaScript besteht darin, eine sicherere Umgebung bereitzustellen. Um die Sicherheit zu erhöhen, wurde die Umhüllung um die V8-Engine in Rust geschrieben, um viele Sicherheitsanfälligkeiten zu vermeiden, die durch niedrigstufige Speicheroperationen entstehen, wie z.B. den Zugriff auf Speicherbereiche nach deren Freigabe, das Dereferenzieren von Nullzeigern und Pufferüberläufe. Zur Verarbeitung von Anfragen im nicht-blockierenden Modus wird die Plattform Tokio, ebenfalls in Rust geschrieben, verwendet. Tokio ermöglicht die Erstellung von leistungsstarken, ereignisgesteuerten Anwendungen, die Multithreading und die asynchrone Bearbeitung von Netzwerk-Anfragen unterstützen.

Haupt- Beispielcodes Deno:

  • Standardmäßig auf Sicherheit ausgelegt. Datei-Zugriffe, Netzwerkmöglichkeiten und Zugriffe auf Umgebungsvariablen sind standardmäßig blockiert und erfordern eine ausdrückliche Aktivierung;
  • Integrierte Unterstützung für TypeScript neben JavaScript;
  • Die Laufzeit wird in Form einer einzigen, eigenständigen ausführbaren Datei («deno») bereitgestellt. Um Anwendungen mit Deno auszuführen, genügt es, heruntergeladen für seine Plattform eine ausführbare Datei mit einer Größe von etwa 10 MB zu haben, die keine externen Abhängigkeiten hat und keine besondere Installation im System erfordert;
  • 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;
  • Zusätzlich zur Laufzeit fungiert die Deno-Plattform auch als Paketmanager und ermöglicht es, innerhalb des Codes auf Module über URLs zuzugreifen. Zum Beispiel kann zur Bereitstellung eines Moduls im Code angegeben werden «import * as log from «https://deno.land/std/log/mod.ts». Von externen Servern über URLs heruntergeladene Dateien werden zwischengespeichert. Die Bindung an Modultypen erfolgt durch Angabe von Versionsnummern innerhalb der URLs, zum Beispiel «https://unpkg.com/liltest@0.0.5/dist/liltest.js»;
  • Im System ist ein Abhängigkeitsinspektionssystem integriert (Befehl «deno info») und ein Tool zum Formatieren von Code (deno fmt).
  • Für Anwendungsentwickler vorgeschlagen eine Sammlung von Standardmodulen, die einer zusätzlichen Prüfung und Kompatibilitätstest unterzogen wurden;
  • Alle Anwendungsskripte können in einer einzigen JavaScript-Datei zusammengefasst werden.

Unterschiede zu Node.js:

  • Deno verwendet keinen Paketmanager npm
    und ist nicht an Repositories gebunden. Die Adressierung von Modulen erfolgt über URLs oder Dateipfade, und die Module können auf jeder Website platziert werden;
  • In Deno wird keine "package.json" zur Definition der Module verwendet;
  • Unterschiede in der API; alle asynchronen Aktionen in Deno geben ein Promise zurück;
  • Deno erfordert eine explizite Definition aller erforderlichen Berechtigungen für Dateien, Netzwerke und Umgebungsvariablen;
  • Alle Fehler ohne Behandler führen zur Beendigung der Anwendung;
  • In Deno wird ein ECMAScript-Modulsystem verwendet und require() wird nicht unterstützt.

Quelle: opennet.ru

60GB SSD 8Gb DDR4