Процесс стандартизации ECMAScript

Сергей Рубанов

JavaScript самурай в Exante Limited

1

Harmony

Июль 2008 — 17 июня 2015

arrow functions

classes

template strings

destructuring

rest + spread

default parameters

let + const

iterators

generators

modules

map + set +weakmap + weakset

proxies

symbols

promises

reflect API

tail calls

core library extensions

2

Доставка новых версий JavaScript

  • список изменений

  • feature freeze

  • разработка

  • возможен пересмотр списка

3

Ожидание

4

Реальность

5

6

Решение проблемы доставки:

 

 

регулярные ежегодные выпуски новых версий спецификации ECMAScript

7

Задачи TC39

  1. Поддержка и обновление ECMAScript

  2. Разработка набора тестов

  3. Соответствие стандартам оформления (ISO/IEC)

8

Стандарты ECMAScript

  • ECMA-262 (ECMAScript® 2015 Language Specification) 
  • ECMA-402 (ECMAScript® 2015 Internationalization API Specification)

9

Разработка новых фич

  • Предложения в любой форме (0 этап)

  • 4 этапа зрелости предложения

  • Идеи по развития языка принимаются как от членов TC39, так и от членов TC39 Royalty-Free Task Group

10

Этап 0 (Strawman)

  • Идеи в любой форме
  • Не входит в этапы зрелости

11

Этап 0 (Strawman)

0.1 * 0.2 === ?

12

Этап 0 (Strawman)

0.1 * 0.2 === 0.020000000000000004

13

Этап 0 (Strawman)

0.1 * 0.2 ≈≈≈

≈≈≈

14

Этап 0 (Strawman)

0.1 * 0.2 ≈≈≈ 0.02

15

Этап 1 (Proposal)

Цели:

  • обоснование
  • описание способов решения
  • выявление потенциальных проблем

16

Этап 1. Обоснование

0.1 * 0.2 === 0.020000000000000004

17

Этап 1. Решение

0.1 * 0.2 ≈≈≈ 0.02

  • вычисляем количество разрядов после запятой
  • отрезаем нули справа
  • ????????
  • PROFIT

18

Этап 1. Проблемы

0.1 * 0.2 ≈≈≈ 0.009 / 0.45 

  • медленно
  • работает только с типом Number

19

Этап 1. Другие особенности

  • готово API высокого уровня
  • написаны полифиллы или демо
  • определен чемпион

20

Этап 1. Чемпион

Чемпион отвечает за дальнейшее продвижение.

Чемпионов может быть несколько.

21

Этап 2 (Draft)

Цели:

  • точное описание синтаксиса и семантики на формальном языке спецификации

22

Этап 2. Описание

0.1 * 0.2 !≈≈ 0.020000000000000004

0.1 * 0.2 + "0.1" ≈≈ 0.02

(приводит операнды к Number)

const 👍 ≈ 0.1 * 0.2 // 👍 = 0.02

0.1 * 0.2 ≈≈≈ 0.02

{} !≈ NaN !≈ "WTF" !≈ [] !≈ 0.02

(только для двух Number, иначе как == и === )

23

Этап 2.  Другие особенности

  • основная часть семантики, синтаксиса и API покрыты, но возможны запланированные изменения и дополнения
  • постепенная работа над изменениями
  • существует экспериментальная реализация 

24

Этап 3 (Candidate)

Цели:

  • получение обратной связи

25

Этап 3. Другие особенности

  • полный текст спецификации
  • подпись рецензентов
  • подпись редактора ECMAScript

26

Этап 3 (Candidate)

Рецензенты

  • назначены комитетом
  • не являются авторами
  • обладают опытом в предметной области

27

Этап 3 (Candidate)

Редактор несет ответственность соответствие спецификации стандартам ECMAScript

28

29

30

Этап 4 (Finished)

Цели:

  • указывает, что нововведение готово к принятию в стандарт ECMAScript

31

Этап 4. Другие особенности

  • написаны приемочные тесты
  • существуют как минимум две совместимые реализации, которые проходят приемочные тесты
  • редактор ECMAScript подписал текущий текст спецификации

32

Как поучаствовать

 

 

33

Вопросы?

Сергей Рубанов

chicoxyzzy

34

Ссылка на слайды: bit.ly/tc39_moscowjs

Made with Slides.com