Компания Google объявила о переводе технологии PNaCl (Portable Native Client) в разряд устаревших. Поддержка PNaCl в Chrome будет прекращена в первом квартале 2018 года, но возможность использования PNaCl в дополнениях к Chrome и приложениях Chrome Apps ещё какое-то время будет сохранена.

Разработчикам рекомендуется перейти на использование технологии WebAssembly, предоставляющей не зависящий от браузера универсальный низкоуровневый промежуточный код для выполнения в браузере приложений, скомпилированных из различных языков программирования. WebAssembly рассматривается как более перспективная и переносимая между браузерами технология создания высокопроизводительных web-приложений, в то время как PNaCl не вышел за пределы нишевого продукта, привязанного к одному браузеру. Для упрощения перевода приложений с PNaCl на WebAssembly подготовлена серия рекомендаций.

По своим задачам WebAssembly во многом напоминает PNaCl (Portable Native Client), но отличается тем, что промежуточный код WASM не изолирован в отдельной виртуальной машине, а выполняется с похожим на JavaScript уровнем изоляции. В PNaCl приложение компилируется в универсальный биткод LLVM и поставляется в непривязанном к конкретной платформе исполняемом формате ".pexe". В процессе запуска приложения промежуточный биткод LLVM транслируется в машинный код текущей платформы на стороне локальной системы пользователя. WebAssembly претендует на роль универсальной и общепринятой технологии, поддержка которых уже включена по умолчанию в Chrome 57+ и Firefox 52+, и входит в состав экспериментальных сборок Safari и Edge.

Компания Google дополнительно опубликовала план развития поддержки WebAssembly в браузере Chrome, в соответствии с которым в Chrome 60 появятся поддержка фоновой компиляции WebAssembly и средства для работы с разделяемой памятью в JavaScript (SharedArrayBuffers). В Chrome 61 будет обеспечена трансляция кода asm.js в WebAssembly, поддержка сериализации WebAssembly.Module в IndexedDB и возможность компиляции WebAssembly по мере загрузки. В Chrome 62 ожидается появление средства для многопоточного выполнения. В Chrome 63 появится поддержка векторных инструкций SIMD и быстрая обработка исключений. В Chrome 64 будут добавлены средства для кэширования машинного кода для WebAssembly.

Источник: http://www.opennet.ru/opennews/art.shtml?num=46629