Когда v8 будет внедрять ECMAScript 5?

Я заметил, что v8 довольно невнятно относится к выпуску ECMAScript 5th edition.

V8 реализует ECMAScript, как указано в ECMA-262, 3-е издание, и работает в системах Windows XP и Vista, Mac OS X 10.5 (Leopard) и Linux, использующих процессоры IA-32 или ARM.

Даже трекер ошибок кажется тихим...

В одна ошибка вы можете найти коммитер, написав это:

V8 - это реализация ECMAScript, а не JavaScript. Последнее является нестандартизированным расширением ECMAScript, сделанным Mozilla. V8 предназначен для подключения плагина, совместимого с АО, внедрение ECMAScript в WebKit/Safari. Таким образом, он реализует ряд нестандартных расширений ECMAScript, которые также находятся в АО, и большинство из них также находятся в языках Mozilla JavaScript. Не планируется добавлять нестандартные функции, которые не входят в состав АО-V8.

Интересно, что он написал, что 8 октября 2010 года, когда ECMAScript 5 был опубликован в декабре 2009 года, а два месяца назад был выпущен Javascript 1.8.5 - надмножество ECMAScript 5.

Итак, остается вопрос, когда Google обновит v8 для запуска в ECMAScript 5th edition? Есть ли план обновления до последней стандартизации ECMAScript?

Ответы

Ответ 1

ECMAScript 5 был фактически сконструирован таким образом, что реализации не нужно "обновлять для запуска" на нем.

В существующем поведении мало изменений, но в основном ES5 добавляет новые собственные объекты (например, Object.create, Array.prototype.map, String.prototype.trim и т.д.) и стандартизирует некоторые из существующих де-факто-функций (от вездесущих терминаторов строк) в строковых литералах "," доступ к свойствам по строкам "и" косвенное поведение eval "для менее популярных" аксессоров "и расширений массива/строки).

Наибольшее изменение в поведении - строгий режим - было сделано по той же причине; для перехода от ES3 к ES5 менее болезненным.

Сказав, что V8 реализует заметный фрагмент функций ES5, включая строгий режим (одно из последних дополнений).

Если вы посмотрите на совместимость с ES5. table вы можете увидеть функции ES5, реализованные в Chrome, - которые должны близко (и я думаю - полностью) коррелировать с V8.

Вы также можете увидеть, что поддержка строгого режима в значительной степени реализована в Chrome, а это значит, что она также должна быть в V8. Чтобы дважды проверить, я просто запустил этот код в консоли (v8 v3.2.3.1) и получил SyntaxError, как ожидалось:

> (function(){"use strict"; with({x:1}) return x})()
(shell):1: SyntaxError: Strict mode code may not include a with statement
(function(){"use strict"; with({x:1}) return x})()
                          ^^^^

Итак, у вас это есть. V8 определенно реализует большинство функций ES5, включая строгий режим;)