Представлен Portable Native Client для запуска платформонезависимых C/C++ программ в браузере
18 мая 2013 года
Компания Google анонсировала (Архивная копия от 30 мая 2012 на Wayback Machine) технологию Portable Native Client (Архивная копия от 6 сентября 2013 на Wayback Machine) (PNaCl), в рамках которой разработан многоплатформенный вариант системы Native Client, позволяющий выполнять приложения, написанные на C и С++, в специальном изолированном окружении web-браузера, независимо от текущей аппаратной архитектуры. Код PNaCl уже интегрирован в экспериментальную ветку Chrome 29.
В PNaCl вместо генерации машинного кода приложение компилируется в универсальный биткод LLVM и поставляется в непривязанном к конкретной платформе исполняемом формате ".pexe". В процессе запуска приложения промежуточный биткод LLVM транслируется в машинный код текущей платформы на стороне локальной системы пользователя. Иными словами, собранное с использованием PNaCl приложение может выполняться в различных мобильных и настольных системах с разными аппаратными архитектурами (в настоящее время поддерживаются 32- и 64-разрядные системы x86 и устройства на базе архитектуры ARM). Другим важны отличием от ранее доступного Native Client является необходимость использования многоплатформенной библиотеки newlib, развиваемой компанией Red Hat в качестве упрощённой стандартной Си-библиотеки для встраиваемых систем. Библиотека glibc, обращение к Pepper API для выполнения мультимедийных операций и динамическое связывание с другими библиотеками пока не поддерживаются.
Для сборки универсальных исполняемых файлов pexe подготовлен специальный инструментарий pnacl, поставляемый в составе SDK-пакета pepper_canary. Новый инструментарий базируется на компиляторе Clang и компонентах LLVM (в Native Client использовался GCC). Для включения поддержки PNaCl в Сhrome 29, браузер должен быть запущен с флагом "--enable-pnacl", в этом случае транслятор биткода LLVM запускается в форме отдельного фонового процесса. Контролировать работу транслятора можно при помощи служебной ссылки "chrome://nacl".
Вынос стадии генерации машинного кода на сторону клиента позволяет разработчику не задумываться о низкоуровневых оптимизациях и поддержке новых архитектур - новые методы оптимизации и поддержка новых аппратаных платформ производится без пересборки пользовательского приложения, через обновление транслятора. После выхода финального релиза PNaCl и окончательной стабилизации промежуточного формата исполняемых файлов, пользователи получат возможность интегрировать переносимые PNaCl-модули в любые web-страницы, без необходимости размещения приложения в Chrome Web Store.
Проект Mozilla, в свою очередь, продвигает собственную технологию для запуска в браузере приложений, написанных на языках Си и Си++. В отличие от Native Client, приложения транслируются в специальное подмножество языка JavaScript, что позволяет запускать их в любых браузерах. При наличии поддержки в браузере специального JavaScript-диалекта со строгой типизацией - Asm.js, производительность выполнения таких программ существенно повышается и может отставать от нативных приложений примерно в два раза. В данный момент поддержка Asm.js уже интегрирована в бета-версию Firefox 22.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.