Когда в v8 будет реализован ECMAScript 5? - PullRequest
15 голосов
/ 26 мая 2011

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

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

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

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

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

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

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

1 Ответ

27 голосов
/ 26 мая 2011

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

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

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

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

Если вы посмотрите на мой ES5 compat. В таблице вы можете увидеть функции 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 , включая строгий режим;)

...