Webentwicklung: Deno 1.8 macht Python Konkurrenz mit Machine-Learning-Feature

Die Alternative zu Node.js für JavaScript jenseits des Browsers mausert sich mit neuer Hardwarebeschleunigung zum Kandidaten für mathematisches Programmieren.

Lesezeit: 2 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen

(Bild: Phonlamai Photo/Shutterstock.com)

Von
  • Silke Hahn

Das Projekt Deno hat Version 1.8 der Laufzeitumgebung zur Webentwicklung mit JavaScript und TypeScript vorgelegt. Das aktuelle Release unterstützt experimentell die WebGPU-API, mit der Deno.js laut Entwicklerteam GPU-beschleunigtes Machine Learning "out of the box" ermögliche.

Deno hatte der Schöpfer von Node.js Ryan Dahl mitbegründet, um einige grundlegende Designfehler von Node wettzumachen. Mit der Laufzeitumgebung lässt sich JavaScript außerhalb des Browsers betreiben, es gilt als kommende Alternative zum in der Webentwicklung fest verankerten Node.js. Deno ist in Rust geschrieben und unterstützt von Haus aus auch TypeScript.

Die zunächst experimentell unterstützte WebGPU-API sei noch nicht fertig entwickelt, heben die Deno-Entwickler in einem Blogeintrag hervor. Sie soll Webentwicklern einen niederschwelligen, hochperformanten und architekturübergreifenden Mechanismus bereitstellen, um mit JavaScript Hardware zu programmieren, nämlich GPUs (Graphic Processing Units). Die neue Schnittstelle soll offenbar ihren Vorläufer WebGL (Web Graphics Library) beerben: Mit dieser 2011 veröffentlichten JavaScript-Schnittstelle ließen sich 3D-Grafiken im Webbrowser hardwarebeschleunigt ohne zusätzliche Erweiterungen darstellen. Folgendes Beispiel zeigt, wie Webentwickler sich mit JavaScript Zugang zu einem GPU-Gerät verschaffen und dessen Namen sowie Features auslesen können:

// Run with `deno run --unstable https://deno.land/posts/v1.8/webgpu_discover.ts`

// Try to get an adapter from the user agent.
const adapter = await navigator.gpu.requestAdapter();
if (adapter) {
  // Print out some basic details about the adapter.
  console.log(`Found adapter: ${adapter.name}`);
  const features = [...adapter.features.values()];
  console.log(`Supported features: ${features.join(", ")}`);
} else {
  console.error("No adapter found");
}

Ziel des Deno-Teams ist dem Blogeintrag zufolge, TensorFlow.js mit Hardware-Beschleunigung in Deno zu betreiben. Sie sehen in JavaScript offenbar das Potenzial, mathematische Konzepte auszudrücken – unter der Prämisse, dass "die geeignete Infrastruktur" dafür existiert. Die neue WebGPU-API ist ein Schritt auf dem Weg dahin. Allerdings sind zurzeit noch die meisten neuronalen Netzwerke in Python gefasst. Die neue WebGPU ist zwar kein offizieller W3C-Standard, allerdings unterstützen Google, Mozilla und Apple sie bereits. Entsprechend ist diese Schnittstelle in der Entwicklung der Chromium-, Firefox- und Safari-Browser enthalten. Die Integration der WebGPU-API in Deno dürfte recht aufwendig gewesen sein: Laut Blogeintrag soll die Implementierung der Schnittstelle rund 15.500 Zeilen Code erfordert haben. Auf GitHub stehen in einem Repository Beispiele für den Einsatz der WebGPU-API bereit.

Die JS Intl-APIs zur Internationalisierung sind im aktuellen Release erstmals aktiv, Deno.js 1.8 bietet vollen ICU-Support (International Components for Unicode). Die Funktion zur Kontrolle der Ausführung von JavaScript-Importen gilt nun als stabil: Nutzer müssen --import-map nicht länger mit dem Flag --unstable auszeichnen. Obendrein akzeptiert --import-map nun offenbar nicht nur lokale Pfade, sondern auch URL. "Import Maps" ist seit Chromium 89 stabil. Für die genaue Verwendung sollten Webentwickler die Spezifikation bei GitHub zu Rate ziehen, denn "Import Maps" erlaubt weiterhin nur einen einzigen Map-Import in Deno.js, bei dem alle Specifier die vorgegebenen Kriterien erfüllen müssen. Nutzerinnen und Nutzer können sich keine eigene Map zusammenstellen.

Mehr zu Deno.js

Einige Schutzfunktionen innerhalb der Infrastruktur sind erweitert. Zum Beispiel soll Deno.js nun die Protection in die Bereiche Assortment und Reporting unterteilen, statt beides zu vermischen.Außerdem sollen sich nicht-öffentliche Module nun leichter einbauen lassen: Die Builder können ab Deno 1.8 offenbar Module von entfernten Servern nachladen, wenn autorisierte Tokens den Zugriff gewähren. Eine Reihe weiterer APIs wie Deno.link und Deno.symlink sind nun stabil, weitere Änderungen betreffen unter anderem die Metriken.

Wer Deno schon installiert hat, kann das Upgrade auf Version 1.8 durch den Befehl deno upgrade durchführen. Für erstmaliges Installieren stehen eine Reihe von Bezugsquellen bereit, die das Deno-Team im Blogeintrag zur Release-Ankündigung aufgelistet hat. Dort und in den Release Notes bei GitHub sind sämtliche Änderungen nachlesbar.

(sih)