Компания Google сообщила об интеграции в Native Client SDK поддержки платформы ARM

Компания Google сообщила об успехах в создании многоплатформенного варианта технологии Native Client (NaCl), которая позволяет выполнять приложения, написанные на C и С++, в специальном изолированном окружении web-браузера. В тестовый выпуск Native Client SDK 25 добавлен набор инструментов и компиляторов, необходимых для сборки NaCl-приложений для платформ ARM, в дополнение к ранее поддерживаемой архитектуре x86. Поддержка ARM позволит организовать распространение NaCl-приложений не только для традиционных ПК, но и для мобильных устройств, базирующихся на платформах Android и Chrome OS.

Для адаптации уже собираемых с использованием Native Client и newlib приложений для платформы ARM достаточно прикрепить к приложению ARM .nexe и внести изменения в сборочный манифест. Что касается клиентского ПО, то начиная с версии Chrome 25 в браузер будет добавлена обновлённая реализация системы плагинов Pepper, поддерживающая выполнение NaCl-программ на платформе ARM. Изначально Native Client был интегрирован в Chrome начиная с выпуска 10 (активирован по умолчанию в Chrome 14) и дополнительно поставлялся в виде браузерного плагина для Firefox, Safari и Opera.

Кроме того, в течение 2013 года планируется выпустить Native Client нового поколения, который будет поставляться под именем Portable Native Client и будет обеспечивать полную независимость от архитектуры, на которой производится запуск NaCl-приложений. Благодаря поставке NaCl-приложений не в машинном коде, а в биткоде LLVM, появится возможность выполнять NaCl-приложения на разных платформах, без подготовки отдельных сборок для каждой из платформ (биткод LLVM будет транслироваться в машинный код текущей платформы на стороне браузера).

Native Client продвигается как платформа для создания универсальных web-приложений, написанных на языке C/C++ и использующих специальный API для выполнения свойственных web-приложениям действий. SDK базируется на GCC и стандартных инструментах разработки GNU. Собранные с использованием Native Client приложения выполняются в виртуальном окружении внутри браузера всего на 3% медленнее по сравнению с производительностью работы немодифицированных версий тех же программ. С точки зрения разработчика окружение Native Client выглядит как небольшая операционная система со своим, основанным на GCC, инструментарием для кросс-компиляции, частичной поддержкой POSIX и базовым мультимедийным API, который можно использовать для работы с аудио и видео, обрабатываться события от мыши и клавиатуры.

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

©  OpenNet