Компания Intel представила новый открытый проект River Trail, в рамках которого разработано расширение для языка программирования JavaScript, позволяющее задействовать технику параллельного программирования для создания высокопроизводительных web-приложений. Ключевой особенностью нового проекта является обеспечение возможности значительного повышения производительности приложений без ухода от стандартных web-технологий, используя только специальный набор расширений к JavaScript. Процесс разработки с использованием River Trail мало чем отличается от создания обычных JavaScript-приложений.
В настоящий момент представлен рабочий прототип River Trail, выполненный в виде дополнения к Firefox с реализацией поддержки параллельного прогрммирования на JavaScript, основанной на плотном задействовании распараллеливания на многоядерных CPU и использовании векторных инструкций SSE/AVX. Для обращения к функциям параллельного программирования подготовлена специальная JavaScript-библиотека, реализующая уровень абстракции ParallelArray для параллельной обработки структур данных. Разработчику предоставляются средства для оздания новых объектов с типом ParallelArray или преобразования в ParallelArray обычных массивов, включая пиксельные карты Canvas. В дальнейшем, при работе с массивами ParallelArray можно использовать методы параллельного программирования, такие как map/reduce, комбинирование значений и фильтрация. Все операции синхронизации и работы с блокировками выполняются автоматически. River Trail включает в себя модифицированный компилятор, преобразующий конструкции с ParallelArray в промежуточное представление на OpenCL с дальнейшей компиляцией в инструкции SSE или параллельные инструкции GPU.
Использование стандартного JavaScript позволяет комбинировать выполнение функций, требующих интенсивных вычислений, со стандартными техниками HTML5, такими как Canvas и WebGL, что позволяет добиться более высокой скорости формирования 2D и 3D графики. River Trail гармонично дополняет WebGL, который предоставляет возможности по формированию полноценной 3D-графики, но мало чем может помочь в ситуациях, требующих интенсивных вычислений при формировании поведения объектов графической сцены.
В качестве примера потенциальных возможностей River Trail приводится демонстрационное приложение, производящие симуляцию физических процессов для сцены из 4000 объектов. При использовании только традиционных JavaScript-технологий, скорость отрисовки сцены составляет примерно 3 кадра в секунду, при использовании River Trail производительность приложения удалось поднять до 45 кадров в секунду.
По мнению разработчиков проекта, River Trail позволит приблизить к нативным программам возможности работающих внутри браузера web-приложений, которые станет реальным использовать в таких требующих интенсивных вычислений областях, как обработка фотографий, редактирование видео, симуляция физических процессов и создание современных 3D-игр. Из альтернативных проектов, нацеленных на создание высокопроизводительных приложений, работающих внутри браузера, можно отметить WebCL - JavaScript-интерфейс к стандарту OpenCL (Open Computing Language), определяющему расширения для параллельного программирования, и развиваемый компанией Google проект Native Client, позволяющий выполнять в окне web-браузера написанные на C и С++ приложения, ограниченные в специальном изолированном окружении.
Разработка River Trail является внутренним проектом Intel, тем не менее интерес к данному проекту уже продемонстрировали разработчики из сообщества Mozilla. В частности, Брэндон Эйх (Brendan Eich), создатель языка JavaScript, занимающий пост технического директора Mozilla Corporation, заявил, что он намерен добиться включения River Trail в состав набора спецификаций ECMAScript.