Представлен Portable Native Client для запуска платформонезависимых C/C++ программ в браузере
В 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.
Источник: http://www.opennet.ru/opennews/art.shtml?num=36962
|
0 | Tweet | Нравится |
|