- PVSM.RU - https://www.pvsm.ru -

Движок V8 и браузер Google Chrome станут поддерживать Asm.js!

Около двенадцати часов назад Джон Резиг нащебетал в Твиттер [1], что на конференции Google I/O было объявлено о поддержке Asm.js в движке V8 и во браузере Google Chrome.

Так как про Asm.js упоминали на Хабрахабре (1 [2], 2 [3]), то достоинства его могли стать известны многим читателям. Тем приятнее им предвкушать теперь в самом скором времени появление этих достоинств не только во браузере Firefox (где они впервые были внедрены Фондом Мозиллы), но и в движке V8 (а значит — в построенном на его основе движке Node.js!), и во браузере Google Chrome.

Но для тех читателей, которые до сих пор пропускали эту новинку мимо себя, я также вкратце напомню суть. Asm.js — это особое подмножество языка JavaScript: ограничившись им в своём скрипте, автор скрипта обеспечивает возможность оптимизации интерпретируемого кода не только в момент исполнения (just-in-time, JIT), но даже и заблаговременно (ahead-of-time, AOT), то есть такому джаваскрипту становится возможно один раз однозначно заранее поставить в соответствие некоторый машинный код. Эффект этот достигается ценою заметных усилий по самоограничению. (В частности, при помощи операции «|0 [4]» и других специальных приёмов тип значения каждого входного параментра функции, равно как и выходного значения, оказывается однозначно заданным и неизменным.) Зато его итогом становится небывалый рост скорости исполнения джаваскрипта — теперь по скорости он уступает скомпилированной программе (на Си или Си++) не более чем в два раза.

Основное направление практического применения Asm.js лежит в области даже не ручного программирования (при котором сознательное соблюдение ограничений Asm.js может оказаться неприемлемо тягостным для программиста), а полностью автоматической транскомпиляции (перевода на язык JavaScript с других языков программирования) целого ряда достаточно сложных программ и библиотек, которые становятся благодаря этому не менее кросс-платформенными, чем сам JavaScript. В качестве средства такой транскомпиляции наиболее известен Emscripten [5], а отчасти также и Mandreel [6].

Мы стоим на пороге такого будущего, в котором очень многие программы из числа работающих с командною строкою (не требующих GUI) можно будет сделать достаточно кросс-платформенными (Node.js обеспечит их исполнение на Windows, Mac OS X и Linux), для чего достаточно будет скомпилировать их в JavaScript (при помощи LLVM и затем Emscripten) вместо машинного кода — и вдвое пожертвовав скоростью исполнения их. Не менее простым станет их перенос во браузеры.

Впрочем, примеры на странице Emscripten показывают, что отчасти это касается и графических приложений.

Автор: Mithgol

Источник [7]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/34410

Ссылки в тексте:

[1] нащебетал в Твиттер: https://twitter.com/jeresig/status/334716392915992577

[2] 1: http://habrahabr.ru/post/171561/

[3] 2: http://habrahabr.ru/post/174175/

[4] |0: http://habrahabr.ru/post/172731/

[5] Emscripten: http://emscripten.org/

[6] Mandreel: http://mandreel.com/

[7] Источник: http://habrahabr.ru/post/179875/