Некоторое время назад компания Google внедрила технологию Native Client (NaCl), которая позволяет браузеру Chrome выполнять высокопроизводительные приложения, скомпилированные на базе кода C или C++. Затем была реализована поддержка архитектуры ARM в Native Client SDK.
Теперь же Google выпустила Portable Native Client (PNaCl), благодаря чему у разработчиков появилась возможность единожды компилировать код для запуска приложений на любой аппаратной платформе и внедрять соответствующие приложения в любой сайт. Отмечается, что в отличие от Native Client, PNaCl позволяет компилировать код C и C++ не для конкретной архитектуры, а в промежуточное представление. Байткод внедряется в портативный исполняемый файл, который может быть размещен на веб-сервере или сайте. Когда пользователь осуществляет доступ к такому сайту и файлу, браузер Chrome извлекает код и трансформирует его в машинный код для соответствующей аппаратной архитектуры.
Таким образом, единое веб-приложение может быть с одинаковой эффективностью запущено на платформах x86, ARM или MIPS.