Wie geht es weiter nach ECMAScript 2018?
Wie geht es weiter nach ECMAScript 2018?
Im Januar-Meeting des ECMA TC39 wurde nicht nur die Feature-Liste für den kommenden ECMAScript-Standard 2018 finalisiert, sondern auch über andere Proposals gesprochen. Nun liegt die Zusammenfassung der Ergebnisse des Meetings vor. Wie wird ECMAScript weiter entwickelt?
Im Januar-Meeting des TC39 wurden zahlreiche mögliche neue Features für ECMAScript besprochen. Darunter waren sowohl solche, die nun in den neuen Standard implementiert werden, als auch neue Proposals. Das Protokoll des Meetings steht auf GitHub zur Verfügung. Wie arbeitet das TC39 aber genau und wie sind die dort gelisteten Vorschläge einzuordnen?
TC39 steht für Technical Committee 39 und bezeichnet die technische Arbeitsgruppe von ECMA International, die am ECMAScript-Standard arbeitet. Zahlreiche große Tech-Unternehmen gehören dem Komitee an; darunter alle großen Browser-Entwickler. In regelmäßigen Sitzungen entscheiden Delegierte der beteiligten Unternehmen darüber, welche Proposals es in den neuen ECMAScript-Standard schaffen. Der Prozess von der Idee zum Feature ist in fünf Stufen unterteilt, wobei Stufe 0 als Strawman bezeichnet wird, also noch vor der Stufe eines Entwurfs kommt und für jeden Input für die Spezifikation genutzt wird. Vorschläge der Stufe 4 sind fertig für die Aufnahme in den Standard. Proposals sind Vorschläge der Stufe 1, Stufe zwei wird als Draft bezeichnet und Stufe drei als Candidate. Alle Informationen zu den verschiedenen Stufen des Prozesses können ebenfalls auf GitHub gefunden werden.
Im Rahmen eines Proposals wird erläutert, warum eine neue Funktion für JavaScript sinnvoll ist und wie eine Implementierung aussehen könnte. Vorgestellt wurde im Januar-Meeting des TC39 beispielsweise ein Proposal zur Nutzung von await
auf Top-Level. Der Präsentation zum Proposal ist zu entnehmen, dass die Idee nicht neu ist, sondern bereits im Kontext des async / await
-Proposlas 2014 und 2015 diskutiert, damals jedoch abgelehnt wurde, um den Prozess zur Einführung von async / await
nicht zu blockieren. Begründet wird das neue Proposal damit, dass die derzeitige Implementierung die Nutzung von await
auf async
-Funktionen begrenzt, die darum häufig als Top-Level-Funktionen genutzt werden.
Um daraus entstehende Probleme zu vermeiden, wurden drei mögliche Lösungen im Rahmen des TC39-Meetings vorgestellt, die in der oben verlinkten Präsentation erläutert werden:
Explore Vitest, the JavaScript testing framework built for Vite, with React, Vue, and Node.js support plus modern features like ECMAScript modules.
Die Diskussion des als Proposal akzeptierten Vorschlags zur Top-Level-Nutzung von await
kann im Protokoll nachgelesen werden; das Komitee hat sich bislang nicht auf eine der Lösungen festgelegt.
Folgende weitere Proposals wurden akzeptiert und somit auf Stufe 1 gesetzt:
{BigInt,Number}.fromString
Stage 1Math.seededRandoms()
Stage 1Function.prototype.toString()
censorship Stage 1await
to Stage 1Weiter fortgeschritten ist der Vorschlag, ECMAScript zum syntaktischen Superset von JSON zu machen. Dazu muss die Möglichkeit geschaffen werden, dass Strings in JavaScript zwei nicht maskierte Zeichen enthalten dürfen. Eine Änderung an JSON sei nicht möglich, also müsse eine Anpassung in ECMAScript erfolgen.
Einen Überblick über alle Entscheidungen des TC39 gibt das verlinkte Protokoll der Sitzung auf GitHub. Zu den Entscheidungen des Meetings gehört außerdem, dass das TC39 sich ein offizielles Logo gegeben hat.
Der neue ECMAScript-Standard soll im Juni veröffentlicht werden. Die Auswahl der Proposals für ECMAScript 2018 ist abgeschlossen, neu hinzukommende Proposals können als frühestens zu ECMAScript 2019 standardisiert werden.