- Das TC39-Komitee fügt die neue Stage "2.7" hinzu, um den Update-Prozess von JavaScript schneller und reibungsloser zu gestalten
- Hintergrund des Updates
- Seit ECMAScript 2015 erhält JavaScript jedes Jahr neue Updates
- Das TC39-Komitee hat große Anstrengungen in die Standardisierung investiert, um die Sprache weiterzuentwickeln
- Um eine gründliche Konzeption, Tests und Implementierung neuer Funktionen sicherzustellen, wurde ein mehrstufiger Prozess eingeführt
Ein stufenweiser Prozess für Qualität und Kompatibilität
- Stage 0: Erkundung neuer Funktionsideen und Definition des Problems
- Stage 1: Es muss ein Repository und einen "Champion" geben, die den Nutzen der Funktion beschreiben, einschließlich einer klaren Erklärung und möglicher Probleme
- Stage 2: Erster Spec-Entwurf für die Funktion. Das Komitee erwartet, dass die Funktion Teil der Sprache wird
- Stage 3: Kandidatenvorschlag, bei dem die Funktion fast fertig ist, aber praktische Erfahrungen durch Implementierungen in Browsern oder serverseitigen Runtimes benötigt werden
- Stage 4: Bedeutet, dass alle Arbeiten an der Spezifikation abgeschlossen sind und sie bereit ist, in die vollständige Sprachspezifikation aufgenommen zu werden. Letzte Freigabestufe
Tests als expliziter Meilenstein
- Im ursprünglichen Prozess musste man nach Erreichen von Stage 3 in manchen Fällen Tests neu schreiben
- Das war besonders bei größeren Vorschlägen schmerzhafter, wenn Designänderungen nötig waren, weil eine Rückkehr zu Stage 2 noch belastender war als ein Zurückfallen auf Stage 3
- Das Schreiben von Tests erfordert einen erheblichen Arbeitsaufwand, daher wurde der Wechsel zwischen den Stufen belastender als beabsichtigt, wenn dieselbe Arbeit zweimal erledigt werden musste
- Die neue Stage 2.7 wurde eingeführt, um die Testphase von der Implementierung zu trennen
Anforderungen an Stage 2.7
- "Grundsätzlich" genehmigt, aber noch validierungsbedürftig
- Das Schreiben von Tests ist eine der besten Methoden, um alle Konsequenzen eines Feature-Designs zu berücksichtigen. Bei einigen Funktionen kann es nötig sein, Tests schon vor Abschluss des Designs zu schreiben
- Es muss ausreichend praktische Erfahrung gesammelt werden, um eine vollständige Testsuite und einen Prototyp zu entwickeln und zu zeigen, dass die Funktion implementierbar ist
- Der Spezifikationstext für die Funktion ist fertig, und das TC39-Komitee verlangt keine Änderungen mehr, außer solchen, die sich aus Tests, Implementierung und Nutzung ergeben
- Stage 2.7 soll unnötige Doppelarbeit reduzieren und Vorschlägen helfen, direkt zu Stage 3 überzugehen
- In Stage 3 geht es nun darum, Implementierungserfahrung zu sammeln und Probleme bei Web-Kompatibilität oder Integration zu entdecken
Praktische Anwendung von Stage 2.7
- Bei der Einführung von Stage 2.7 überprüfte das TC39-Komitee alle bestehenden Stage-3-Vorschläge. Einige Projekte hatten zwar noch nicht alle Tests eingecheckt, waren aber fast fertig und blieben daher in Stage 3
- Einige Vorschläge wie
deferred import und die Methode Math.sumPrecise haben bereits Stage 2.7 erreicht
Regexp.escape, das String-Escapes in regulären Ausdrücken unterstützt, hat Stage 2.7 erreicht und ist zusammen mit seiner Testsuite zu Stage 3 weitergerückt
- Dagegen wurde der Vorschlag "microwaits" (der derzeit
atomics.pause heißt), für den sich nützliche Tests nur schwer schreiben lassen, kürzlich auf Stage 2.7 verschoben; die Diskussion drehte sich dabei größtenteils darum, welche Hinweise für Implementierungen in die Spezifikation aufgenommen werden sollten
Noch keine Kommentare.