вторник, 9 декабря 2008 г.

Google Native Client: Исполнение x86-кода в браузере.

Google представил новую технологию Native Client, которая позволяет исполнение х86 кода в браузере.

Чем является поддержка исполнения х86 кода в браузере?

Это технология, которая позволяет специальным образом скомпилированный код исполнять в браузере. Причем этот код будет одинаково выполнятся в любом браузере в любой ОС.

Примеров можно привести огромное количество: от фоторедактора на веб-странице до он-лайн архиватора. При этом работа с фотографией или архивация будет целиком производится на стороне пользователя.


Поддерживаются три платформы - Windows, Linux, Mac.
Поддержка в браузерах - Firefox, Safari, Opera и Google Chrome.
Процессоры - семейство x86-совместимых процессоров, также предполагаются поддержка ARM и PPC.

Чем НЕ является поддержка х86 кода в браузере?

1) Это НЕ С++ компилящийся в java или подобное решение;
2) Это НЕ виртуальная машина;
3) Это НЕ ActiveX, хотя чем-то похоже.

Как обеспечивается безопасность?

1) Код не должен быть защищен от дезассемблирования, все инструкции должны быть доступны для анализа во время запуска.
2) Специальный анализатор кода запрещает исполнение кода, содержащего "подозрительные" последовательности инструкций.

Что можно попробовать уже сейчас?

1) Запустить примеры.

Чтобы запустить под Windows XP в Firefox3, мне понадобились:

- Firefox 3
- Пребилд Google Native Client for Windows
- Python (не обязательно).

После того как все вышеперечисленное установлено, надо распаковать пребилд и из папки

install_dir\nacl\googleclient\native_client\scons-out\opt-win\staging\

скопировать в папку

C:\Program Files\Mozilla Firefox\plugins

следующие 3 файла:

inpGoogleNaClPlugin.dll
SDL.dll
sel_ldr.exe.


Теперь можно запустить сам тест. Для этого надо в Firefox открыть файл:

install_dir/nacl/googleclient/native_client/scons-out/nacl/staging/index.html

Появится страница со списком тестов:



Для наглядности можно сразу выбрать Mandelbrot viewer (левый нижний угол таблицы) и запустить.
Все! Зумируя фрактал любуемся на загрузку процессора...



2) Откомпилировать и запустить в браузере обычную программу, например, Quake. Здесь подробная инструкция как раз для Quake.

Какие преимущества перед уже существующими технологиями?

- не зависимость от ОС и бразузера;
- скорость исполнения;
- новый подход к обеспечению безопасности.

Другие вопросы.

Открытых вопросов пока больше. Например, не совсем ясными пока остались многие аспекты использования на практике: можно ли использовать WinAPI функции, или скажем DirectX? Или такие обращения будут считаться "опасными"? Надо пробовать дальше..

Upd. Подробнее, о том, как будет обеспечиваться безопасность выполнения кода и какие ограничения наложит sandbox можно прочитать в этом документе.

Комментариев нет: