10 Punkte von GN⁺ 2025-06-30 | 3 Kommentare | Auf WhatsApp teilen
  • Auf der jüngsten 108. TC39-Sitzung wurden 9 Vorschläge, die die Zukunft von JavaScript prägen sollen, in den jeweiligen Standardisierungsstufen vorangebracht
  • Zu Stage 4 (endgültige Freigabe) gehören Funktionen wie using, Array.fromAsync und Error.isError, die Entwicklerproduktivität und Sicherheit erhöhen
  • In Stage 3 bis 1 werden verschiedene nützliche Funktionsvorschläge diskutiert, darunter unveränderliche ArrayBuffer, Seeded Random, clamp, Verbesserungen an NumberFormat und Random-Funktionen
  • Deno treibt die Einführung und Erprobung neuer Standards aktiv voran, und einige Funktionen sind bereits in Deno und aktuellen Browsern verfügbar
  • Die Standardisierungsdiskussionen werden fortgesetzt, und es wird erwartet, dass sich das JavaScript-Ökosystem sicherer und kompakter weiterentwickelt

Aktuelle Standardisierungstrends bei TC39 und wichtige neue JavaScript-Funktionen

Stage 4: Funktionen vor der offiziellen Übernahme

Explizites Ressourcenmanagement (using)

  • Mit der using-Deklaration wird sichergestellt, dass Ressourcenobjekte wie Dateien oder Netzwerk-Sockets beim Ende ihrer Lebensdauer automatisch aufgeräumt werden
  • Das Konzept ist von Sprachen wie C# und Python inspiriert; Objekte implementieren dazu die Methoden [Symbol.dispose]() oder [Symbol.asyncDispose](), die beim Verlassen des Blocks aufgerufen werden
  • Die automatische Bereinigung erfolgt auch bei Ausnahmen und verringert so das Risiko von Ressourcenlecks, etwa bei Datei-Handles
  • Bereits unterstützt in Chrome 134, Firefox 134, Deno v2.3 usw.; in Deno kann es sofort praktisch für Dateien, Sockets und mehr eingesetzt werden

Array.fromAsync

  • Eine Standardmethode, die asynchrone Iterables in ein Array umwandelt und dabei ein Promise zurückgibt
  • Sammelt Werte aus async generatoren und ähnlichen Quellen der Reihe nach und liefert das endgültige Array-Ergebnis als Promise
  • Die Nutzung ähnelt dem bestehenden synchronen Array.from und unterstützt eine Mapping-Funktion sowie thisArg
  • Unterstützt von allen großen Browsern, Node v22 und Deno ab v1.38

Error.isError

  • Eine eingebaute Funktion, mit der sich einfach feststellen lässt, ob ein Wert ein echtes Error-Objekt ist
  • Funktioniert auch in komplexen Fällen wie cross-realm oder bei Subclass-Fehlern zuverlässig
  • Erhöht die Verlässlichkeit bei Polyfills und der Entwicklung von Bibliotheken

Stage 3: Unveränderliche ArrayBuffer

Immutable ArrayBuffer

  • Für ArrayBuffer sollen die Methoden transferToImmutable() und sliceToImmutable() ergänzt werden, um Unveränderlichkeit zu unterstützen
  • Ein unveränderlicher Buffer kann nach seiner Erstellung weder verändert noch detached werden, was sicheres Teilen zwischen Threads und Workern sowie bessere Performance ermöglicht
  • In Deno und ähnlichen Umgebungen lässt sich das bei der Verarbeitung binärer Daten effizient nutzen, ohne unnötige Kopien zu erzeugen

Stage 2: Neue vorgeschlagene Funktionen

Random.Seeded

  • Ein seed-basierter PRNG (Random.Seeded(seed)), mit dem sich über mehrere Ausführungen hinweg dieselbe Zufallssequenz erzeugen lässt
  • Nützlich für Bereiche mit hoher Reproduzierbarkeit, etwa Spiele oder Simulationen
  • Bietet im Gegensatz zu Math.random() erweiterte Funktionen wie die Angabe eines Seeds und das Klonen des Zustands

Number.prototype.clamp

  • Eine Methode zur Begrenzung numerischer Werte, die einen Wert automatisch auf einen angegebenen Mindest- bis Höchstbereich einschränkt
  • Ersetzt das bisherige Muster Math.min(Math.max(x, min), max) in kürzerer und klarerer Form

Stage 1: Vorschläge in der frühen Diskussion

Keep Trailing Zeros

  • Eine neue Option für Intl.NumberFormat, mit der sich das Beibehalten oder Entfernen von Nullen nach dem Dezimalpunkt fein steuern lässt
  • Verbessert die Ausdrucksmöglichkeiten in UIs, etwa bei Geldbeträgen oder festen Nachkommastellen

Comparisons

  • Ziel ist die Standardisierung einer menschenfreundlichen Darstellung von Werten und der Diff-Ausgabe, ähnlich wie bei util.inspect in Node.js
  • Sorgt für Konsistenz in Test-Frameworks, bei Konsolenausgaben und ähnlichen Bereichen

Random Functions

  • Einführung eines neuen Random-Namespace mit einer Sammlung sicherer und kompakter Funktionen rund um Zufall, Sampling und Shuffle
  • Hilft, Off-by-one-Fehler zu vermeiden, und unterstützt verschiedene Erfassungs- und Sampling-Muster auf intuitive Weise

Die Zukunft von Deno und des JavaScript-Ökosystems

  • Deno beteiligt sich aktiv an der Standardisierungsdiskussion und übernimmt neue Funktionen schnell in die Praxis
  • Beispiele: async context propagation, integriertes OpenTelemetry, neue Muster für Ressourcenmanagement
  • Nach September sind weitere TC39-Sitzungen geplant, in denen die Standardisierungsgespräche fortgesetzt werden
  • JavaScript-Entwickler werden künftig eine noch leistungsfähigere, sicherere und komfortablere Sprachumgebung erleben können

3 Kommentare

 
carnoxen 2025-07-03

await operations proposal

Wann kommt das endlich...

 
dohyun682 2025-06-30

Wann wird Pattern Matching wohl hinzugefügt?

 
click 2025-06-30

Es gibt zwar Signals in Stage 1, aber bis zur offiziellen Einführung scheint es noch ein weiter Weg zu sein.