Google Native Client

редактировать

Google Native Client
Разработчик (и) Google, другие
Первоначальный выпуск16 сентября 2011 г.; 9 лет назад (16.09.2011)
Стабильный выпуск SDK: Pepper 45 / 10 июля 2015 г.; 5 лет назад (10.07.2015)

Клиенты: То же, что и Google Chrome

Репозиторий Измените это в Викиданных
Написано наC, C ++
Операционная система Windows, Linux, macOS, Chrome OS
Платформа x86, ARM, MIPS
Тип Sandbox в веб-браузерах для нативного кода
Лицензия New BSD
Сайтдля разработчиков.chrome.com / native-client

Google Native Client (NaCl ) - это технология песочницы для работы подмножества Intel x86, ARM или MIPS собственный код или переносимый исполняемый файл в песочнице. Он позволяет безопасно запускать собственный код из веб-браузера, независимо от пользователя операционной системы, позволяя веб-приложениям запускаться почти на собственная скорость, которая соответствует планам Google по Chrome OS. Его также можно использовать для защиты плагинов браузера и частей других приложений или полных приложений, таких как ZeroVM.

. Чтобы продемонстрировать готовность технологии, 9 декабря 2011 года Google объявил о доступности из нескольких новых версий игр только для Chrome, известных своей богатой и процессорной -интенсивной графикой, включая Bastion (больше не поддерживается на Интернет-магазин Chrome). NaCl запускает аппаратно-ускоренную трехмерную графику (через OpenGL ES 2.0), изолированное локальное хранилище файлов, динамическую загрузку, полноэкранный режим и мышь захват. Также есть планы сделать NaCl доступным на портативных устройствах.

Portable Native Client (PNaCl) - это архитектурно-независимая версия. Приложения PNaCl скомпилированы заранее. В большинстве случаев рекомендуется использовать PNaCl вместо NaCl. Общая концепция NaCl (запуск собственного кода в веб-браузере) была реализована ранее в ActiveX, который, пока еще используется, имеет полный доступ к системе (диск, память, пользовательский интерфейс, реестр, так далее.). Собственный клиент позволяет избежать этой проблемы, используя песочницу.

Альтернативой сортировки NaCl является asm.js, который также позволяет компилировать приложения, написанные на C или C ++ для запуска в браузер (с более чем половиной собственной скорости), а также поддерживает предварительную компиляцию, но является подмножеством JavaScript и, следовательно, обратно совместим с браузерами, которые не поддерживают его напрямую. Другой альтернативой (хотя изначально он может работать на PNaCl) является WebAssembly.

12 октября 2016 года в комментарии к системе отслеживания проблем Chromium указывалось, что команды Google Pepper и Native Client были отключены. 30 мая 2017 года Google объявил о прекращении поддержки PNaCl в пользу WebAssembly. Хотя изначально Google планировал удалить PNaCl в первом квартале 2018 года, в настоящее время удаление запланировано на второй квартал 2019 года (за исключением приложений Chrome).

Содержание
  • 1 Обзор
  • 2 Pepper
    • 2.1 PPAPI
      • 2.1.1 PPAPI в Firefox
  • 3 Приложения
  • 4 Прием
    • 4.1 Сторонники
    • 4.2 Противники
  • 5 Второе поколение
  • 6 См. Также
  • 7 Ссылки
  • 8 Внешние ссылки
    • 8.1 Примеры
Обзор

Native Client - это проект с открытым исходным кодом, разрабатываемый Google. На сегодняшний день Quake, XaoS, Battle for Wesnoth, Doom, Лара Крофт и Хранитель света, From Dust и MAME, а также система обработки звука Csound были перенесены на Native Client. Native Client доступен в веб-браузере Google Chrome с версии 14 и включен по умолчанию с версии 31, когда был выпущен Portable Native Client (PNaCl, произносится: pinnacle).

Реализация ARM была выпущена в марте 2010 года. Также поддерживаются x86-64, IA-32 и MIPS.

Чтобы приложение работало переносимо под PNaCl, оно должно быть скомпилировано в архитектурно-независимое и стабильное подмножество LLVM промежуточного представления байт-кода. Исполняемые файлы называются исполняемыми файлами PNaCl (pexes). PNaCl Toolchain создает файлы.pexe; Файлы NaCl Toolchain.nexe. Магическое число файлов.nexe - 0x7F 'E' 'L' 'F', что соответствует ELF. В Chrome они переводятся в исполняемые файлы для конкретной архитектуры, чтобы их можно было запускать.

NaCl использует программное обеспечение для обнаружения и изоляции сбоев для изолирования в песочнице на x86-64 и ARM. Реализация Native Client для архитектуры x86-32 отличается новым методом «песочницы», в котором используется редко используемое в архитектуре x86 средство сегментации . Собственный клиент настраивает сегменты x86, чтобы ограничить диапазон памяти, доступный для изолированного кода. Он использует верификатор кода, чтобы предотвратить использование небезопасных инструкций, например тех, которые выполняют системные вызовы. Чтобы предотвратить переход кода к небезопасной инструкции, скрытой в середине безопасной инструкции, Native Client требует, чтобы все косвенные переходы были переходами к началу блоков, выровненных по 32 байта, и инструкциям не разрешается размещать эти блоки между собой. Из-за этих ограничений код C и C ++ должен быть перекомпилирован для работы под Native Client, который предоставляет настраиваемые версии GNU toolchain, в частности GNU Compiler Collection (GCC), GNU Binutils и LLVM.

Native Client под лицензией BSD-style..

Native Client использует Newlib в качестве своей библиотеки C, но также доступен порт библиотеки GNU C (GNU libc).

Pepper

NaCl обозначает хлорид натрия, общая таблица соль ; в качестве каламбура также использовалось название перец. Pepper API - это кроссплатформенный API с открытым исходным кодом для создания модулей Native Client. Pepper Plugin API или PPAPI - это кроссплатформенный API для подключаемых модулей веб-браузеров, защищенных собственным клиентом, сначала основанный на Netscape NPAPI, а затем переписанный с нуля. В настоящее время он используется в Chromium и Google Chrome для включения версии PPAPI для Adobe Flash и встроенного PDF viewer.

PPAPI

12 августа 2009 года на странице в Google Code был представлен новый проект Pepper и связанный с ним Pepper Plugin API (PPAPI), «набор модификаций NPAPI, чтобы сделать плагины более переносимыми и безопасными». Это расширение разработано специально, чтобы упростить реализацию исполнения плагина вне процесса. Кроме того, цель проекта - предоставить основу для создания полностью кроссплатформенных плагинов. Рассматриваемые темы включают:

  • Единая семантика NPAPI для разных браузеров.
  • Выполнение в процессе, отдельном от средства визуализации-браузера.
  • Стандартизация визуализации с использованием процесса компоновки браузера.
  • Определение стандартизированных событий и функций 2D-растеризации.
  • Первоначальная попытка предоставить доступ к 3D-графике.
  • Реестр плагинов.

Pepper API также поддерживает Gamepads (версия 19) и WebSockets (версия 18).

По состоянию на 13 мая 2010 года браузер с открытым исходным кодом Google, Chromium, был единственным веб-браузером, который использовал новый браузер. подключаемая модель. С 2020 года Pepper поддерживается браузерами на основе движка макетов Chrome, Chromium и Blink, такими как Opera и Microsoft Edge.

В январе 2020 года Google объявил, что поддержка PPAPI будет удалена из Google Chrome и Chromium в июне 2021 года.

PPAPI в Firefox

Mozilla Firefox заявили в 2014 году, что они не будет поддерживать Pepper, поскольку нет полной спецификации API, кроме его реализации в Chrome, который сам разработан для использования только с механизмом макета Blink и имеет частные API, специфичные для плагина Flash Player, которые не задокументировано. В октябре 2016 года Mozilla объявила, что она пересмотрела и изучает возможность включения Pepper API и PDFium в будущие выпуски Firefox, однако никаких шагов предпринято не было.

Приложения

Один веб-сайт использует NaCL на сервере, чтобы пользователи могли экспериментировать с языком программирования Go в своих браузерах.

Прием

Некоторые группы разработчиков браузеров поддерживают технологию Native Client, а другие нет.

Сторонники

Чад Остин (из IMVU ) высоко оценил способ, которым Native Client может переносить высокопроизводительные приложения в Интернет (с потерей около 5% по сравнению с собственным кодом) безопасным способом, а также ускоряет развитие клиентских приложений, предоставляя возможность выбора используемого языка программирования (помимо JavaScript ).

Id Software John D. Carmack похвалил Native Client на QuakeCon 2012, сказав: «Если вам нужно что-то сделать в браузере, Native Client гораздо интереснее как нечто, начинавшееся как чертовски умный хакерский хакерский хакерский метод. может любопытно изолировать все это в пользовательском режиме. Теперь это динамическая перекомпиляция, но то, что вы программируете на C или C ++, и оно компилируется до того, что не будет вашим уровнем оптимизации -O4 для полностью нативного кода, но чертовски близко к нативному код. Вы можете делать все свои злобные погони за указателями и делать все, что хотите, разработчик игр. "

Недоброжелатели

Другие ИТ-специалисты более критично относятся к этой технологии« песочницы », поскольку у нее есть существенные или существенные проблемы совместимости.

Вице-президент по продуктам Mozilla сказал, что Mozilla не планирует запускать собственный код внутри браузера, поскольку «Эти собственные приложения представляют собой лишь маленькие черные ящики на веб-странице. [...] Мы действительно верим в HTML, и именно на этом мы хотим сосредоточиться ».

Кристофер Близзард из Mozilla раскритиковал NaCl, заявив, что нативный код не может развиваться так же, как веб-сайт, управляемый исходным кодом. Он также сравнил NaCl с технологией Microsoft ActiveX, страдающей от DLL Hell.

. Хокон Виум Ли, технический директор Opera, считает, что «NaCl, похоже,« тоскует по плохим старым временам », до Интернета », и что« Native Client предназначен для создания новой платформы - или переноса старой платформы в Интернет, [...] это вызовет сложности и проблемы безопасности, и это отвлечет внимание от веб-платформы.. "

Второе поколение

Второе поколение песочницы, разработанное в Google, - это gVisor. Он предназначен для замены NaCl в Google Cloud, а точнее в Google App Engine. Google также продвигает WebAssembly.

См. Также
  • Портал бесплатного программного обеспечения с открытым исходным кодом
Ссылки
Внешние ссылки

Примеры

Последняя правка сделана 2021-05-22 14:02:49
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте