Google PNaCl — на пути превращения Chrome в самостоятельную платформу
Компания Google работает над технологией Native Client в течение нескольких лет, но ещё есть куда развиваться. Это открытая технология, которая создана для безопасного и независимого от операционной системы исполнения машинного кода в браузерах. Следующим логическим шагом развития технологии станет PNaCl (Portable Native Client).
Во время конференции Google I/O разработчик Google Дэвид Зер (David Sehr) представил PNaCl, следующее поколение
Но есть и другие трудности. Преимущество веб-технологий в том, что они работают где угодно внутри браузера (по крайней мере, в теории). Однако машинный низкоуровневый код должен иметь привязку к конкретной процессорной архитектуре или даже операционной системе. Стандартная технология Native Client, которую Chrome поддерживает с 2011 года, решила проблему операционных систем — код исполняется на любых ОС, где работает Chrome. Но разработчики до последнего времени всё же должны были компилировать отдельные сборки для исполнения их на x86 или ARM (поддержка ARM появилась только в этом году).
Видеоряд из игр, исполняемых в Chrome через Native Client
Технология PNaCl позволяет разработчикам компилировать одну версию своей программы, которая будет исполняться в Chrome вне зависимости не только от операционной системы, но и от процессорной архитектуры. Программы компилируются в универсальный биткод LLVM (файлы .pexe), который затем Chrome транслирует в код для определённой архитектуры. Этим обеспечивается широкая совместимость приложений не только с существующими архитектурами x86 (32-бит и 64-бит) и ARM, но в теории и с будущими архитектурами без необходимости перекомпиляции кода.
Другими словами, разработчикам не придётся думать, где именно исполняется их PNaCl-приложение: в Chrome под Linux на ARM-процессоре или в Chrome под Windows на x86-системе. В перспективе поддержка технологии может появиться и в других браузерах, ведь привязка Native Client к определённой архитектуре часто подвергалась критике от сторонних разработчиков. Mozilla, например, так и не внедрила поддержку NaCl в Firefox. Быть может, с выходом PNaCl положение дел изменится?
Впрочем, несмотря на доступность PNaCl для разработчиков, Google пока не готова включать по стандарту поддержку технологии в свой браузер и делать её доступной рядовым пользователям. PNaCl включена в сборку Chrome 29 и выше через запуск браузера с флагом --enable-pnacl. После выхода PNaCl разработчики смогут запускать исполняемые файлы PNaCl не только в приложениях Chrome Web Store, но и на любой веб-странице.
В целом, анонс Portable Native Client знаменует собой новый шаг на пути превращения браузеров в платформы, независимые ни от операционной системы, ни от архитектуры процессоров.