Доступен релиз обновленного инструментария Native Client

Компания Google сообщила о выпуске первого релиза обновленной редакции инструментария Native Client SDK, позволяющего организовать выполнение обычных бинарных программ в окне web-браузера, ограничив их при помощи специального изолированного окружения. По заявлению разработчиков, новая версия является важным событием в пути по обеспечению в Native Client такого же уровня переносимости и безопасности, как и в JavaScript. Изначально Native Client был создан для адаптации существующих программ для работы в браузере, но теперь продвигается как платформа для создания универсальных web-приложений, написанных на языке C/C++ и использующих специальный API для выполнения свойственных web-приложениям действий.
Среди отличительных возможностей представленного релиза отмечается поддержка нового API для разработки браузерных плагинов Pepper (PPAPI), разработаннго для устранения проблем с переносимостью и производительностью классического API Netscape (NPAPI), а также оптимизированного для упрощения создания плагинов, работающих в виде отдельных процессов. Поддержка Pepper присутствует пока только в web-браузере Chrome, начиная с 6 выпуска. Что касается Native Client, то в SDK нового выпуска включена полноценная поддержка использования расширенных интерфейсов Pepper, связанных с обеспечением работы вычислительных, аудио и графических функций.
Другим важным достижением новой версии Native Client стало усиление базопасности. В частности, добавлена поддержка автоматических обновлений и внешних изолированных окружений (outer sandbox). Помимо безопасности, был улучшен механизм для извлечения модулей Native Client, соответствующих текущей аппаратной архитектуре целевой системы – разработчикам модулей больше не нужно отдельно заботиться о этом.
В настоящее время ведется большая работа по приведению Native Client к виду, готовому для конечных разработчиков. В ближайшие месяцы планируется добавление новых API-интерфейсов для поддержки 3D-графики, локальных файловых хранилищ, web-сокетов, сетевых P2P-механизмов и динамического связывания (Dynamic Shared Objects). После реализации данных планов можно будет начать процесс окончательной стабилизации ABI-интерфейса. До формирования стабильного ABI Native Client в браузере Chrome будет отключен по умолчанию (для включения нужно использовать about:flags). Тем не менее, начиная с Google Chrome 10 разработчикам будет предоставлена возможность использования модулей Native Client для создания web-приложений.

SDK базируется на GCC и стандартных инструментах разработки GNU. С точки зрения разработчика окружение Native Client выглядит как небольшая операционная система со своим, основанным на GCC, инструментарием для кросс-компиляции, частичной поддержкой POSIX и базовым мультимедийным API, который можно использовать для работы с аудио и видео, обрабатываться события от мыши и клавиатуры. Также доступен ряд свойственных web-приложениям функций, таких как загрузка внешней страницы. В этом плане Native Client позволяет организовать выполнение тех же функций, что может обычное web-приложение на JavaScript. Инструкции при работе программы в Native Client не преобразуются в байткод виртуальной машины, а выполняются как есть, с максимально возможной производительностью. Безопасность в Native Client достигается через изоляцию системных вызовов и прерываний – разрешено выполнение ограниченного набора системных вызовов, остальное либо запрещено, либо эмулируется специальным runtime-кодом. Сетевые и дисковые функции, а также операции для работы с памятью, обрабатываются специальной подсистемой. Обращение за пределы дозволенных областей памяти блокируются через задействования системы обработки исключений CPU.
В настоящее время Native Client поддерживает платформы x86, x86_64 и ARM, дополнительно ведется работа по использованию для сборки программ системы LLVM, что позволит разработчикам создавать универсальные приложения, без пересборки работающие на всех поддерживаемых аппаратных архитектурных (программа будет поставляться в виде байт кода, который будет транслироваться на лету в машинный код целевой платформы средствами LLVM). Предварительная оценка производительности показала, что собранные с использованием Native Client приложения выполняются в виртуальном окружении внутри браузера всего на 3% медленнее по сравнению с производительностью работы не модифицированных версий тех же приложений.



Яндекс.Метрика
Счётчик ТЦ#65533;Ц LiveRSS: Каталог русскоязычных RSS-каналов