Изменитель игры.

Как искренне верящий в превосходство Интернета над нативными платформами, я очень рад выпуску WebAssembly для всех основных браузеров. Объявление осталось практически незамеченным. Так что релиз WebAssembly либо не был правильно понят, либо я больше всех в этом блоке взволнован этим.

В течение последних лет я проводил много времени в игровом пространстве HTML5 в качестве эмбеддера v8/JSCore/SpiderMonkey или нативного мобильного разработчика. Написание javascript с нуля может быть проблемой при работе с большими кодовыми базами, как это было раньше. Typescript взял меня штурмом, и это был определенно необратимый путь для меня. Но WebAssembly будет больше во многих отношениях. С сайта WebAssembly.org:

WebAssembly — это переносимый кросс-браузерный формат, который предлагает доставку контента по запросу с собственной скоростью выполнения с малым временем анализа, открытый, отлаживаемый и безопасный.

Я бы сказал, настоящий переломный момент. Все, что связано с Интернетом, выиграет от включения WebAssembly: игры, WebVR/AR, карты, PWA, обработка аудио и видео… практически все получит огромный прирост в браузере или встроенной виртуальной машине JavaScript. Это будет особенно верно для мобильных устройств, где производительность JavaScript может быть весьма ограничена не только во время выполнения, но и во время запуска.

Есть две вещи, на которые обязательно повлияет эта новая парадигма:

JavaScript

JavaScript сильно изменился за последние годы. Я сам видел это при внедрении v8 из версии 3.x в текущую 5.9, которая у нас есть в производстве. Несмотря на эту выдающуюся эволюцию, даже сегодня Javascript имеет множество ограничений, которые делают его непригодным для использования в некоторых сценариях. Javascript навсегда останется языком общения в Интернете, но по мере того, как все больше нативных разработчиков будут использовать Интернет в качестве еще одной цели компиляции и платформы для развертывания, он станет скорее целью компиляции, чем первоклассным. язык разработки. Хотя в настоящее время большинство языков разработки высокого уровня могут компилироваться в JavaScript: TypeScript, Haxe, C++, JSX, Dart, Babel… (ES5 зарекомендовал себя как достойная цель для компиляции), я думаю, что меньше людей будут использовать JavaScript в пользу процесса транспиляции WebAssembly.

В том же смысле кажется разумным, что JavaScript может в конечном итоге (надеюсь?) быть скомпилирован в WebAssembly и увидеть, как он использует свою производительность и время запуска.

Вскоре WebAssembly получит семантику сборки мусора, которая превратит его в подходящую цель компиляции для других языков разработки, таких как Java, C# или Dart. Это расширит количество различных разработчиков, которые будут ориентироваться на браузер в качестве платформы для развертывания.

Разработчики JavaScript также получат большую пользу от WebAssembly. Они смогут получить доступ к высокопроизводительному коду из самого JavaScript. Лучше всего то, что им не нужно будет изучать WebAssembly или другие языки, чтобы использовать его, просто загрузить и запустить. Текущий ландшафт JavaScript значительно изменится, и JavaScript станет неактуальным для определенных задач браузера. Честно говоря, я не думаю, что JavaScript исчезнет из веб-экосистемы даже в долгосрочной перспективе. На самом деле, это текущая форма, вам нужен JavaScript полностью, чтобы заставить WebAssembly работать в браузере.

Рыночные приложения
Если браузер сможет запускать нативные производительные приложения с почти нулевым временем инициализации, я могу предвидеть кембрийский взрыв высококачественного контента, работающего в браузере моего мобильного телефона.

Браузер еще больше превратится в изолированную среду выполнения, так зачем мне писать и упаковывать свои приложения в Play Store? Я думаю, что Google создаст ветку в PlayStore для Android и/или ChromeOS, где приложения WebAssembly будут развертываться и работать прямо в моем браузере (хотя я не могу придумать ничего подобного от Apple). Это позволит использовать возможности браузера с доступом ко всем родным мобильным возможностям из самого JavaScript/WebAssembly. Я думаю о IAP, частном локальном хранилище, push-уведомлениях, виджетах для конкретных платформ и т. д. (я знаю, что некоторые из них уже существуют).

Кроме того, если WebView системы готов к WebAssembly, большая часть веб-индустрии будет нарушена. Многие встроенные приложения v8/JSCore (как я, тьфу), приложения для казуальных игр, приложения Market — все они будут затронуты этой новой и захватывающей быстро развивающейся технологией.

Лично я надеюсь, что все производители браузеров вместе пойдут по пути WebAssembly и сделают его доступным на всех существующих платформах, от iOS до Magenta... Захватывающие времена грядут.