ECMAScript 2018, 2019 und mehr

ECMAScript 2019: Erste Features für den JavaScript-Standard 2019 stehen fest

ECMAScript 2019: Erste Features für den JavaScript-Standard 2019 stehen fest

ECMAScript 2018, 2019 und mehr

ECMAScript 2019: Erste Features für den JavaScript-Standard 2019 stehen fest


ECMAScript 2019 wird erst in einem Jahr fertig gestellt, die Arbeit daran hat aber schon begonnen. Bereits jetzt stehen die ersten zwei Features für den neuen JavaScript-Standard fest, der im Sommer 2019 implementiert werden soll. Wie geht es weiter mit ECMAScript?

Im Januar hat das TC39 bekannt gegeben, welche Features zum finalen Standard von ECMAScript 2018 gehören werden, also zum neuen Standard hinter JavaScript. Insgesamt acht neue Features haben es zu diesem Jahr in den Standard geschafft, der in der Regel im Juni final veröffentlicht wird. Derzeit liegt diese 9. Fassung des JavaScript-Standards bei ECMA International, der Organisation hinter dem Standard, noch nicht vor; hier wird noch Version 8 (ECMAScript 2017) als aktueller Standard geführt. Betrachtet man den aktuellen ECMAScript-Draft des TC39, ist das allerdings schon der Standard für das nächste Jahr: ECMAScript 2019. ECMAScript 2018 ist also quasi fertig, wenn auch noch nicht offiziell veröffentlicht.

Im Mai-Meeting des TC39 wurde bereits an ECMAScript 2019 gearbeitet. Unter den dort diskutierten Proposals, also Vorschlägen für neue Features für den JavaScript-Kern, waren zwei, die Stufe 4 erreicht haben und somit bereit für die Implementierung sind. Proposals der Stufe 4 werden jeweils zum nächsten erreichbaren Standard implementiert. Das ist in diesem Fall ECMAScript 2019, da das Featureset für den Standard des jeweiligen Jahres immer im Januar finalisiert wird.

ECMAScript 2019: Neue Syntax für Catch Bindings

Das erste der zwei auf Stufe 4 gesetzten Proposals wurde von Michael Ficarra, Mitglied des TC39, eingereicht und betrifft die Syntax von try/catch Bindings. Wie dem entsprechenden Proposal auf GitHub entnommen werden kann, geht es darum, dass Bindings nicht in jedem Anwendungsfall von try/catch nötig sind, bisher aber nicht ausgelassen werden können. Betroffen seien Fälle wie der folgende, den Ficarra im entsprechenden Proposal auf GitHub anführt:

try {
  // try to use a web feature which may not be implemented
} catch (unused) {
  // fall back to a less desirable web feature with broader support
}

Voraussichtlich ab ECMAScript 2019 wird es nun möglich sein, try/catch ohne ungenutzte Bindings zu verwenden. Bindings werden durch die vorgeschlagene Syntaxänderung als optional definiert. Die neue Syntax kann im vollständigen Proposal-Text nachgelesen werden.

ECMAScript als Superset von JSON

Das zweite Proposal, das Stufe 4 erreicht hat, wurde vom Community-Autor Richard Gibson eingereicht und im TC39 von Mark Miller und Mathias Bynens vertreten. Ziel des Proposals ist es, die ECMAScript-Syntax so zu erweitern, dass sie ein Superset von JSON darstellt. Laut Proposal sei im aktuellen ECMAScript-Standard bereits definiert, dass JSON ein Subset von ECMASCript sei, dies träfe bislang jedoch nicht zu:

[…] JSON strings can contain unescaped U+2028 LINE SEPARATOR and U+2029 PARAGRAPH SEPARATOR characters while ECMAScript strings cannot.

Da der JSON-Standard außerdem im RFC 7159 festgelegt und somit nicht ohne weiteres veränderlich ist, wird die Angleichung der Standards für DoubleStringCharacter und SingleStringCharacter nun auf Seiten von ECMAScript erfolgen. Wie dem Proposal auf GitHub zu entnehmen ist, entstehen durch die Änderung keine Probleme mit der Abwärtskompatibilität. Auch wurde die Änderung an der Syntax bereits in V8 und Chrome 66, Safari Technology Preview 49+ und Babel umgesetzt. Die Specification der Änderung kann auf GitHub gefunden werden.

TC39: Weitere Neuigkeiten für JavaScript

Das TC39 hat in seinem Mai-Meeting außerdem zehn weitere, neue Proposals der Stufe 0 diskutiert. Sieben davon erreichten Stufe 1 und wurden somit in den Staging-Prozess für die Aufnahme in den Standard eingegliedert:

Auf Stufe 0 blieb unter anderem ein Proposal, das bislang unter dem Namen „Blöcks“ Syntax  geführt wird. Weiterer Diskussionsbedarf besteht hier unter anderem aufgrund des Namens, der eigentlich „Blocks“ lauten sollte. Dieser Begriff ist jedoch bereits in Verwendung, sodass sich Konflikte ergeben könnten. Inhaltlich befasst sich das Proposal mit dem Multi-Threading von JavaScript-Code, das bislang durch Service Workers möglich ist. Das sei, so sagt der Proposaltext von TC39-Mitglied Domenic Denicola, allerdings deutlich aufwändiger als in anderen Sprachen. Eine Änderung an der JavaScript-Syntax könne die Arbeit damit erleichtern. Details können im Proposal nachgelesen werden, das jedoch noch nicht die Staging-Stufe erreicht hat und somit noch weit von einer tatsächlichen Implementierung entfernt ist.

Weitere Details zum gegenwärtigen Status von ECMAScript können den Meeting Note des TC39 entnommen werden, das alle zwei Monate zusammentritt.

Ann-Cathrin Klose, Redakteurin Entwickler Magazin