ECMAScript, jak to działa?

12 maja 2019

Dziś chciałbym opowiedzieć Ci czym jest ECMAScript i jak działa od środka. Wielu developerów słysząc np. ES6 (niedawne buzz words w branży frontend), ogranicza się jedynie do wiedzy, że jest to kolejny standard w języku JavaScript, który wprowadza nowe feature’y. Co jeśli zapytam Cię czy feature będący w stage 0 jest już możliwy do wykorzystania w codziennej pracy? Jeśli znasz odpowiedź na to pytanie, to ten artykuł pewnie nie jest dla Ciebie.

ECMAScript

Zanim powiemy sobie szerzej czym jest ECMAScript oraz w jaki sposób jest rozwijany, warto wspomnieć o fundamencie, czyli TC39. ECMA International TC39, to grupa w skład której wchodzą między innymi: programiści, naukowcy, architekci oraz wiele innych osób, którzy wspólnie rozwijają standard JavaScript. Więcej informacji na temat samej organizacji możesz znaleźć na stronie internetowej https://tc39.github.io/

Stage 0 – Strawperson

Jest to pierwsza faza wprowadzanie nowego feature do standardu. Polega jedynie na wprowadzeniu opisu feature’a do specyfikacji. Nie podlega to żadnemu zatwierdzeniu. Można powiedzieć, że wszystko co jest w fazie stage 0, jest określone mianem nice to have. Nie ma żadnej gwarancji, że implementacja zostanie stworzona, a tym bardziej wcielona w skład standardu.

Stage 1 – Proposal

W stage 1 feature zostaje opisany pod kątem problemu jaki ma rozwiązać. Głównymi celami takie opisu jest wskazanie:

  • potencjalne problemy w implementacji,
  • zarys proponowanego rozwiązania
  • oraz studium przypadku dla którego warto wprowadzić dany feature

Jeśli feature ma przejść do kolejnej fazy musi spełnić szereg wymagań opisanych w procesie TC39. Na tym etapie wymagane są:

  • Identyfikacja „mistrza”, który będzie odpowiedzialny za implementacje
  • Przedstawienie problemu lub potrzeby, dla wytworzenia feature’a oraz ogólnego kształtu jego rozwiązania
  • Stworzenie przykładów użycia
  • Opracowanie High-level API (więcej dowiesz się tutaj)
  • Omówienie kluczowych algorytmów, abstrakcji i semantyki
  • Identyfikacja potencjalnych pobocznych problemów i wyzwań oraz złożoności wdrażania

Po przygotowaniu rzeczy z powyższej listy, feature zostaje poddany ocenie. Specjalna komisja podczas obrad bada przedstawiony problem, rozwiązania oraz zagadnienia poboczne.

Stage 2 – Draft

Celem tego etapu jest precyzyjne opisanie składni jaka ma zostać użyta oraz przygotowanie semantyki, którą my jako programiści używający JavaScript będziemy używać. Tak więc to teraz podejmowana jest decyzja jak ma się nazywać funkcja działająca na obiekcie typu Array, której zadaniem jest zwrócenie nowej tablicy, składającej się ze zwróconych wartości. Oczywiście w chodzi mi o funkcję .map(). Dodatkowo rozpoczyna się praca nad tworzenie dokumentacji technicznej dla feature’a.

W stage 2 również komisja weryfikuje wypracowane rozwiązania. Aby prace mogły iść dalej, musi być stworzona kompletna implementacja.

Stage 3 – Candidate

Jeśli feature dotrze do fazy trzeciej, to oznacza, że jest gotowy. Nie wymaga dalszych prac implementacyjnych. Należy przekazać gotowy feature do wykorzystania przez developerów. Kolejne prace zaplanowane w ramach tej funkcjonalności będą opracowane na podstawie zebranego feedbacku. Wymaganiem wobec tego etapu jest również kompletna dokumentacja rozwiązania, która musi zostać zaakceptowana przez wyznaczonych recenzentów.

Zadaniem recenzentów (eng. reviewers) jest sprawdzenie, czy założenia opisane w dokumentacji zgadzają się z wykonaną implementacją.

Stage 4 – Finished

Gdy już funkcjonalność dociera do stage 4, jest gotowa do formalnego wcielenia do standardu ECMAScript. To jeszcze nie koniec, ponieważ muszą być spełnione następujące warunki:

  • Testy akceptacyjne Test262 (oficjalny test case zgodności) zostały napisane dla głównych scenariuszy użycia
  • Feature posiada dwie zgodne implementacje, które pomyślnie przeszły testy akceptacyjne
  • Utworzony został PR (Pull Request) do tc39/ecma262 ze zintegrowanym tekstem specyfikacji
  • PR uzyskał zatwierdzenie (eng. approve) przez wszystkich recenzentów (eng. reviewers)

Po merge’u, feature można uznać za standard ECMAScript.

Na koniec skrzynia skarbów – newsletter. Znajdziesz w nim link do zapisu na darmowe 45-minutowe konsultacje online. Nie ma go w innym miejscu, tylko w wiadomościach ode mnie. A razem z nim dostaniesz w mailach czyste złoto, czyli wiedzę. Zero spamu.

Zapisz się na newsletter

.

Tu też znajdziesz wiedzę za darmo

Po rozwiązania zajrzyj również na octocode’owy kanał na YouTube’ie. Będzie Twoją latarnią morską w programowaniu.

Lubisz słuchać rozmów z ciekawymi ludźmi z branży? Zapraszam na Prograduchy – podcast na luzie, a jednocześnie merytoryczny. Nie odpłyniesz.

X