5 Punkte von GN⁺ 2024-02-06 | 2 Kommentare | Auf WhatsApp teilen

Veränderungen bei Deno im Jahr 2023

  • Deno versteht package.json-Dateien und kann eingebaute Node-Module wie node:fs und node:crypto über den node:-Specifier importieren.
  • Die neue Webserver-API Deno.serve wurde stabilisiert, und der HTTP-Durchsatz wurde im Jahresvergleich um etwa 73 % verbessert.
  • deno compile unterstützt nun Worker, dynamische Imports und npm-Module.
  • Deno nutzt Web Streams (ReadableStream und WriteableStream) sowie AbortController API-weit besser und verringert damit die Kluft zwischen Browser- und Server-seitiger Programmierung.
  • Die Deno-Konfigurationsdatei deno.json kann jetzt auch als Import Map verwendet werden, vereinfacht das Schema und ergänzt Glob-Unterstützung sowie eine nützliche Top-Level-Eigenschaft "exclude".
  • Das Open-Source-Notebook-Tool Jupyter unterstützt Deno nun mit JavaScript und TypeScript.
  • WebGPU wurde nach fast einem Jahr Entwicklungsarbeit zu Deno hinzugefügt.
  • Deno's konfigurationsloses TypeScript bietet dank deutlicher Verbesserungen bei LSP- und VS-Code-Integration eine bessere Editor-Integration.
  • Fresh, das Deno-basierte Web-Framework, wurde um Funktionen wie Tailwind-Unterstützung, Partials und Layout-Dateien erweitert.
  • Deno Deploy wurde mit global verteilten Bausteinen wie Deno KV, Queues und Cron leistungsfähiger.
  • Es wurde Self-Service-Subhosting eingeführt, damit die Plattform nicht vertrauenswürdiges Multi-Tenant-JavaScript bereitstellen und ausführen kann.

Verbesserte Kompatibilität mit Node und npm

  • Deno erweitert seine Kompatibilität mit dem Node-Ökosystem, einschließlich eingebauter Node-Module wie node:fs und node:child_process, über den node:-Specifier.
  • Für einen nahtlosen Wechsel von Node zu Deno wurden mehrere neue Funktionen eingeführt:
    • Mit dem Flag --unstable-byonm kann innerhalb von Deno der bevorzugte npm-Paketmanager verwendet werden.
    • Das Flag --unstable-sloppy-imports lockert die Strenge bei Modul-Imports und berücksichtigt verschiedene Coding-Stile und Praktiken.
    • Das Flag --unstable-unsafe-proto unterstützt Object.prototype.__proto__, auf das viele npm-Pakete angewiesen sind.
  • Durch die Stabilisierung der Node-API können npm-Pakete, die von der Node-API abhängen, nun ohne das Flag --unstable verwendet werden, wodurch der unterstützte Umfang wächst.

Einfachere und schnellere Webserver mit Deno.serve()

  • Die Funktion Deno.serve() wurde eingeführt und stabilisiert, sodass Entwickler mit minimalem Code einen Server starten können.
  • Durch gezielte Optimierungen an Core-Bibliotheken und Event-Loop-Mechanismen wurde die Performance deutlich verbessert.
  • Deno's HTTP-Durchsatz stieg in Benchmark-Tests mit einer einfachen Standardkonfiguration für einen "Hello, world"-Server sichtbar an.

Flexibleres deno.json

  • Deno verfolgt das Prinzip, ohne komplexe Konfiguration nutzbar zu sein, und verbessert die Konfigurationsdatei deno.json kontinuierlich, um die einfache Nutzung zu erhalten:
    • deno.json kann nun auch als Import Map verwendet werden.
    • deno fmt unterstützt Semikolons und bietet damit mehr Flexibilität beim Code-Stil.
    • Die Integration mit package.json erleichtert den Wechsel zwischen Node- und Deno-Umgebungen.
    • Die Struktur von deno.json wurde vereinfacht, damit Entwickler sich intuitiver darin zurechtfinden.
    • Durch die Einführung von Glob-Mustern lassen sich Dateien und Verzeichnisse präziser ein- oder ausschließen.

Flüssigeres Entwicklungserlebnis mit LSP

  • Die Integration des Language Server Protocol (LSP) in Deno bietet Funktionen wie präzises Springen zu Definitionen, umfassendes IntelliSense und nahtlose Code-Formatierung für TypeScript-Projekte.
  • Es wurde viel Aufwand in die Verbesserung des LSP gesteckt, um das Coding in Deno flüssiger und intuitiver zu machen.

WebGPU

  • WebGPU integriert moderne Technologie in Deno, mit der Entwickler die Leistung von GPU-Hardware direkt mit JavaScript nutzen können.
  • WebGPU ist hinter dem Flag --unstable-webgpu verfügbar und ein wichtiger Meilenstein für die Erweiterung der Fähigkeiten von Deno-Anwendungen.

Jupyter-Notebooks

  • Das Open-Source-Notebook-Tool Jupyter unterstützt Deno nun mit JavaScript und TypeScript.
  • Dadurch werden Data Science, Visualisierung und mehr mit modernem JavaScript, TypeScript und Web-Standard-APIs möglich.

Bemerkenswerte Open-Source-Rust-Crates

  • Deno ist mit verschiedenen Open-Source-Projekten verbunden und trägt aktiv dazu bei, den Funktionsumfang von Deno zu erweitern und die Performance zu optimieren.
  • In diesem Jahr hat Deno einige Rust-Crates veröffentlicht, die auch eigenständig nützlich sein können.

Fresh

  • Fresh ist Deno's modernes Full-Stack-Web-Framework, das standardmäßig kein clientseitiges JavaScript ausliefert, und wird kontinuierlich verbessert, um die Nutzung zu vereinfachen und die Performance zu steigern.

Ausbau von Deno's Cloud-Geschäft

  • Deno Subhosting wurde von einer Unterstützung für Netlifys Edge Functions und die E-Commerce-Shops von Deco.cx-Kunden zu einem eigenen Service weiterentwickelt und ist nun für alle kostenlos nutzbar.
  • Mit der Einführung von Cloud-Bausteinen wie Deno KV, Queues und Cron wurden Fortschritte in Richtung der Vision erzielt, Webentwicklung grundlegend zu vereinfachen.

Deno 2

  • Deno 2 soll eine verbesserte Runtime bieten, einschließlich spannender Ankündigungen zur besseren Kompatibilität mit Node und npm sowie zur Verwaltung und Optimierung von Projektabhängigkeiten.

Meinung von GN⁺:

  • Wichtig ist, dass Deno die Kompatibilität mit Node.js deutlich verbessert und sich auf die Vereinfachung der Webentwicklung konzentriert. Das kann bestehenden Node.js-Entwicklern den Wechsel zu Deno erleichtern und die Verbreitung von Deno fördern.
  • Die Integration moderner Funktionen wie WebGPU zeigt, dass Deno über eine reine Server-Side-Plattform hinauswächst und für ein breiteres Spektrum an Anwendungsentwicklung geeignet wird. Das kann besonders für Entwickler attraktiv sein, die High-Performance-Computing mit GPU-Unterstützung benötigen.
  • Die Weiterentwicklung des Fresh-Frameworks und von Deno Deploy deutet darauf hin, dass Deno eine wichtige Rolle in der Full-Stack-Webentwicklung spielen kann, und stärkt Deno's Position als Cloud-basierter Service. Diese Entwicklungen erhöhen die Wahrscheinlichkeit, dass sich Deno als wichtiger Akteur der modernen Webentwicklung etabliert.

2 Kommentare

 
[Dieser Kommentar wurde ausgeblendet.]
 
GN⁺ 2024-02-06
Hacker-News-Kommentare
  • Ein Nutzer wies darauf hin, dass er noch immer keinen Weg gefunden habe, Deno-Anwendungen in eine Umgebung ohne Internetverbindung zu bringen, und dass es dazu überhaupt keine Dokumentation gebe. Deshalb glaube er nicht, dass Deno in Unternehmensumgebungen Chancen habe.
  • Ein anderer Nutzer bekundete Interesse an der WebGPU-Funktionalität und erklärte, dass er über das Slint-Framework Desktop-GUIs mit JavaScript/TypeScript ohne Browser oder Webview erstelle. Wenn Deno direkt Fenster öffnen könnte, so seine Hoffnung, könnte man statt nativer Binärdateien wasm für alle Plattformen ausliefern. Er fügte jedoch hinzu, dass die WebGPU-Funktionalität keine API zum Öffnen von Fenstern enthalte und daher weiterhin zusätzliche Bibliotheken nötig seien.
  • Ein Nutzer hoffte auf Verbesserungen bei Deno Compile und merkte an, dass die erzeugten ausführbaren Dateien über 90 MB groß seien und beim Komprimieren Fehler aufträten, was die Verteilung ähnlich wie bei Go erschwere. Er erwähnte, dass Deno damit in Bezug auf die Größe sogar schlechter dastehe als die pkg-Lösung von Node.js.
  • Ein weiterer Nutzer würde sich deutlich bessere Unterstützung dafür wünschen, Deno in Rust-Hostprozesse einzubetten. Er arbeite an einem JavaScript-Bundler und benötige zum Ausführen von Plugins eine Node.js-Runtime, doch das deno-core-Crate sei sehr rudimentär und schwer einzubetten. Er hoffe, dass Deno in der Welt der JS-Tools zu einer „Plugin-Runtime“ werden könne, und erklärte, dass er derzeit in einem Rust-Hostprozess über stdio mit einem Node.js-Kindprozess kommuniziere.
  • Ein Nutzer sagte, dass er JavaScript zwar nicht möge, mit Deno beim Ausprobieren aber eine sehr reibungslose und schnelle Erfahrung gemacht habe.
  • Ein anderer Nutzer erklärte, dass er 2023 erstmals eine nichttriviale Deno-App in Produktion deployed habe. Zwar habe ihn der Lernprozess rund um das Synchronisieren von Lockfiles in einem Repository mit mehreren Entry Points vor Herausforderungen gestellt, insgesamt sei es aber eine gute Erfahrung gewesen.
  • Zur Nachricht, dass Jupyter mit Deno nun JavaScript und TypeScript unterstützt, reagierte ein Nutzer positiv, erwähnte aber auch, dass Python im Bereich Zahlen und Mathematik sehr starke Unterstützung biete, und stellte infrage, ob viele Leute das nutzen wollten.
  • Ein Nutzer merkte an, dass man sich in die am Ende des Artikels verlinkte Warteliste für JSR eintragen könne, und fragte sich, woran das Deno-Team arbeite.
  • Ein Nutzer teilte einen Link zu der Nachricht, dass Deno Deploy die Zahl der GCP-Regionen von 35 auf 12 reduziert habe.
  • Ein Nutzer sagte, er würde das Webentwicklungs-Framework Fresh gern verwenden, finde es aber unausgereift, dass derzeit nur Tailwind unterstützt werde. Er zeigte sich zudem verwundert darüber, dass in der nächsten Iteration View Transitions priorisiert würden statt CSS-Bundling.