Процесс стандартизации 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
-
Поддержка и обновление ECMAScript
-
Разработка набора тестов
-
Соответствие стандартам оформления (ISO/IEC)
8
Стандарты ECMAScript
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
Как поучаствовать
-
Рассылка esdiscuss.org
-
текущий список предложений на GitHub
-
TC39 process document
-
регистрация в качестве контрибьютора
33
Вопросы?
Сергей Рубанов
chicoxyzzy
34
Ссылка на слайды: bit.ly/tc39_moscowjs
ES process
By Sergey Rubanov
ES process
- 3,460