Native Client портирован для архитектур ARM и x86-64

Разработчики компании Google сообщили о портировании для архитектур ARM и x86-64 платформы Native Client, позволяющей выполнять в окне web-браузера обычные бинарные приложения, ограниченные в специальном изолированном окружении. Тестирование производительности показало, что собранные с использованием Native Client приложения выполняются в виртуальном окружении внутри браузера всего на 3% медленнее по сравнению с производительностью работы немодифицированных версий тех же программ.

Портирование для архитектуры ARM интересно прежде всего открывающейся возможностью использования Native Client на смартфонах и портативных ПК, особенно построенных на основе недружелюбных для запуска бинарных исполняемых файлов мобильных платформ, таких как Palm webOS и Google Android. В настоящее время ведется работа по использованию для сборки программ для Native Client системы LLVM, что позволит разработчикам создавать универсальные приложения, без пересборки работающие на всех поддерживаемых аппаратных архитектурах (программа будет поставляться в виде байткода, который будет транслироваться на лету в машинный код целевой платформы средствами LLVM).

Изначально, в отличии от похожих проектов, инструкции при работе программы в Native Client не преобразовались в байткод виртуальной машины, а выполняются как есть, с максимально возможной производительностью (потеря производительности не более 5%). Безопасность в Native Client достигается через изоляцию системных вызовов и прерываний - разрешено выполнение 46 системных вызовов, остальное либо запрещено, либо эмулируется специальным runtime-кодом. Сетевые и дисковые функции, а также операции для работы с памятью, обрабатываются специальной подсистемой. Обращение за пределы дозволенных областей памяти блокируются через задействования системы обработки исключений CPU.

С точки зрения разработчика окружение Native Client выглядит как небольшая операционная система со своим, основанным на GCC, инструментарием для кросс-компиляции, частичной поддержкой POSIX и базовым мультимедийным API, который можно использовать для работы с аудио и видео, обрабатываться события от мыши и клавиатуры. Также доступен ряд свойственных web-приложениям функций, таких как загрузка внешней страницы. В этом плане Native Client позволяет организовать выполнение тех же функций, что может обычное web-приложение на JavaScript. Клиентская часть Native Client состоит из универсального плагина, который поддерживает браузеры Firefox, Safari, Opera и Google Chrome на платформах Linux, Mac OS X и Windows.

©  OpenNet