Поддержка Asm.js растет?


Asm.js — это подмножество JavaScript, разработанное как язык ассемблера в Интернете, и теперь кажется, что поддержка этой технологии выходит за рамки Mozilla.

JavaScript — это де-факто стандартный язык Интернета на стороне клиента, и его использование на сервере растет благодаря Node.js. Однако многим не нравится этот язык, и существует большая база кода, которую нелегко преобразовать в созданный вручную JavaScript. Альтернативой является использование компиляторов, ориентированных на JavaScript, таких как emscripten, для преобразования кода на других языках в JavaScript. Это хорошо работает, но JavaScript — настолько сложный язык, что трудно создать оптимизирующие компиляторы, которые могут создавать скомпилированный JavaScript, который работает близко к скорости нативного кода.

Одно из решений — отказаться от JavaScript и разрешить приложениям с собственным кодом работать под управлением браузера. Это решение, предлагаемое Google Chrome NaCl API и сопутствующими технологиями. Другое решение, отстаиваемое Mozilla, — это asm.js — подмножество JavaScript, которое достаточно ограничено, чтобы позволить оптимизирующим компиляторам JIT запускать его со скоростью, близкой к скорости нативного кода.

Вы можете сомневаться, что подход asm.js может обеспечить необходимый прирост производительности, но тесты и демонстрации, похоже, демонстрируют, что это возможно. Он не может соответствовать настроенному собственному коду, но для широкого спектра графических и других требовательных приложений он запускает код достаточно быстро, чтобы быть практичным.

Ключевое преимущество asm.js в том, что это истинное подмножество JavaScript. Если браузер не поддерживает asm.js, код запускается, как если бы это был стандартный JavaScript. Если браузер поддерживает asm.js, тогда включается оптимизирующий движок JS, и он использует подсказки, включенные в качестве комментариев, для повышения производительности.

На практике asm.js, скорее всего, будет создаваться компилятором, который преобразует другой язык, обычно C или C ++, в asm.js, но при необходимости он может быть написан вручную, и по мере развития технологии новые функции достаточно легко добавлять без необходимости изменить стандартный JavaScript.

На данный момент единственным браузером, который широко поддерживает asm.js, является Firefox, но и Chrome, и Opera запускают код asm.js быстрее, чем стандартный JavaScript. Поскольку asm.js работает в любом браузере, поддерживающем JavaScript, нет смысла говорить, что браузер поддерживает asm.js. Важно то, насколько быстрее работает asm.js, т.е. оптимизирует ли браузер asm.js?

Хотя Chrome и Opera официально не поддерживают asm.js, они оба запускают код asm.js быстрее, чем стандартный JavaScript просто потому, что стандартные оптимизации JavaScript, которые они используют, более эффективно работают с asm.js.

Чтобы asm.js стал успешным и стал общепринятым способом быстрого запуска кода в браузере, ему действительно нужна поддержка со стороны Chrome, IE и Opera. Поддержка Safari была бы хорошей, но это маловероятно, пока она не появится в трех основных движках JavaScript, и Apple не будет вынуждена рассмотреть ситуацию.

Отношение Google к asm.js должно зависеть от его собственного подхода NaCl к ускорению кода, но нет никаких технических причин, по которым он не может поддерживать оба. В последнем экспериментальном компиляторе TurboFan, который был обнародован несколько дней назад, было указано, что есть новая константа:

DEFINE_BOOL (turbo_asm, false, «включить TurboFan для кода asm.js»)

это поддержка специальных оптимизаций asm.js? Это определенно выглядит так, но чтобы выяснить это, нужно еще покопаться.

Следующая трещина в дамбе принадлежит Microsoft. Несколько дней назад он обновил свою дорожную карту для IE. Большинство «разрабатываемых» функций * связаны с API ES6 или HTML5 и вполне разумны.

Один новый пункт в разделе «На рассмотрении»:

Конечно, «на рассмотрении» не означает, что он будет «в разработке», но это шаг в правильном направлении. Существует также аргумент, что команда Microsoft могла указать это, чтобы указать, что они знают об этом, или чтобы указать, что они на самом деле не против. Дело в том, что для «поддержки» asm.js им просто нужно включить одну оптимизацию asm.js — и это не является большим препятствием для преодоления!

На данный момент дела у asm.js идут хорошо, и кто знает, может быть, он получит поддержку трех больших браузеров — Firefox, IE и Chrome — а затем Safari, вероятно, последует за ним в далеком будущем. Это помогает понять, что браузеры ориентированы не на технологии, а на маркетинг.


Добавить комментарий