Microsoft поддерживает asm.js


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

Asm.js – не новый язык; это просто подмножество JavaScript, которое было выбрано, чтобы позволить оптимизировать компиляторы и движки JavaScript в целом, чтобы он работал намного быстрее, чем сложный и динамический полный JavaScript. Например, ему удалось найти способы включения примитивных типов, таких как 32-битное целое число, в JavaScript, что позволяет представлять такие переменные как четырехбайтовые целые числа, а не значения с плавающей запятой, которые просто являются целыми числами. Если вы запустите asm.js на движке, не оптимизированном для asm.js, вы не получите преимущества, потому что предполагаемые 32-битные целые числа по-прежнему хранятся как числа с плавающей запятой.

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

В настоящее время большинство asm.js создается путем компиляции программ C / C ++. По мере того, как asm.js получает все большую поддержку, обязательно появятся дополнительные инструменты, позволяющие писать не только на C / C ++.

До вчерашнего дня Mozilla была единственным крупным производителем браузеров, поддерживающим asm.js – Microsoft, Google и Apple предпочли проигнорировать эту идею. Теперь Microsoft объявила, что ее движок Chakra JavaScript будет поддерживать asm.js.

Сообщение в блоге, объявляющее об этом, указывает на то, что добавление поддержки asm.js входит в десятку наиболее востребованных функций IE Suggestion Box на UserVoice.

Как говорится в сообщении в блоге команды Chakra:

Среди других подобных инициатив asm.js как технология имеет две ключевые характеристики, которые нам нравятся:

Первое и очевидное – это повышение скорости выполнения JavaScript, о котором мы уже говорили. Мы считаем, что asm.js и работа, которую мы проводим для включения asm.js, могут обеспечить повышение скорости для многих других сценариев в течение определенного периода времени.

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

Да, это действительно беспроигрышный вариант. Вы добавляете поддержку asm.js, и некоторый JavaScript работает намного быстрее, но вы по-прежнему получаете 100% обратную совместимость.

Теперь реальный вопрос: почему Apple и Google не видят вещи так?

Ответ на это довольно ясен. Apple, по-видимому, на самом деле не хочет, чтобы веб-приложения работали так же быстро, как нативные приложения, потому что это поставит под угрозу доходы ее магазина приложений. У Google есть система, которая позволяет запускать собственный код в песочнице в браузере. Это также имеет степень независимости от платформы через промежуточный язык и JIT-компилятор. Однако Chrome – единственный браузер, который его поддерживает.

Теперь, когда и Microsoft, и Mozilla поддерживают asm.js, Google может изменить свою позицию. В конце концов, Chrome не принесет никакой пользы, если его не будут «запускать в IE и Firefox», и добавление поддержки asm.js не означает, что он должен отказаться от своего собственного интерфейса.

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


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