Native Client

Native Client
Разработчик Google
Написана на Си и C++
Операционная система кроссплатформенность
Первый выпуск 16 сентября 2011[1]
Аппаратные платформы x86, x86-64, ARM[2] и MIPS
Последняя версия
Репозиторий chromium.googlesource.com/…
Состояние Закрыт
Лицензия модифицированная лицензия BSD[вд]
Сайт developer.chrome.com/doc…

Native Client (NaCl) — технология песочницы для запуска кода на платформах x86, x86-64, ARM и MIPS, позволяющая безопасно запускать машинный код непосредственно в браузере независимо от операционной системы со скоростью, приближённой к запуску машинного кода. Эта технология также может быть использована для создания защищённых плагинов для браузера, частей какого-либо приложения либо самих приложений[4], например ZeroVM[англ.].

Чтобы показать готовность технологии, 9 декабря 2011 года Google представила игру[5] с богатой графикой (на данный момент игра уже недоступна). NaCl использует аппаратное ускорение 3D-графики через OpenGL ES 2.0, запускаясь в песочнице local storage с возможностью полноэкранного режима и взаимодействием с мышью[6][7].

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

Существует альтернатива NaCl под названием asm.js, которая так же позволяет компилировать приложения, написанные на Си или C++, для запуска непосредственно в браузере (со скоростью, приближенной к машинному коду), поддерживает AOT-компиляцию и притом является подмножеством языка JavaScript, т. е. обратно совестима с браузерами, не имеющими её встроенной поддержки. Ещё одной альтернативой NaCl (хотя и изначально основанной на PNaCl) является WebAssembly.

12 октября 2016 в баг-трекере проекта Chromium появился комментарий[8], упоминающий о роспуске команд, работающих над Google's Pepper и Native Client.

30 мая 2017 Google объявила об отказе от PNaCl в пользу WebAssembly[9]. Изначально Google планировала удалить PNaCl в первом квартале 2018 года[9], а позже и во втором квартале 2019 года[10], но окончательно PNaCl был удалён в июне 2022 года (вместе с приложениями Chrome)[11].

Описание

Native Client является проектом с открытым исходным кодом. К настоящему времени Quake[12], XaoS[англ.], Battle for Wesnoth, Doom, Lara Croft and the Guardian of Light, From Dust и MAME, а также система программного синтезирования звука Csound были портированы на Native Client. Технология доступна в браузере Google Chrome начиная с версии 14[13] и активирована по умолчанию начиная с версии 31, в которой был официально представлен Portable Native Client (PNaCl).[14]

Реализация технологии на платформе ARM была выпущена в марте 2010.[15] Платформы x86-64, IA-32 и MIPS поддерживались изначально.

Для запуска при помощи технологии PNaCl приложение должно быть скомпилировано в архитектурно-независимый байт-код формата LLVM.[16] Созданные таким образом исполняемые файлы называются PNaCl executable (pexe). Средства сборки PNaCl производят .pexe файлы; NaCl — .nexe. .nexe файлы имеют сигнатуру 0x7F 'E' 'L' 'F' (т.е. являются ELF файлами). Chrome для запуска транслирует pexe в архитектурно-зависимые исполняемые файлы.

NaCl использует программное обнаружение ошибок и защиту песочницы в платформах x86-64 и ARM.[17] Реализация в x86-32 отличается новым способом организации песочницы.[18] По технологии песочницы Native Client устанавливает свои сегменты памяти в архитектуре x86. Также используется верификатор кода для предотвращения вызова небезопасных системных вызовов. Для предотвращения перехода в незащищённую часть вызова Native Client требует, чтобы все косвенные переходы начинались с 32-байт-выровненных блоков, кроме того, инструкциям не разрешается покидать данные блоки.[18] Из-за этих ограничений код, написанный на Си или C++, должен быть перекомпилирован особым образом для запуска с применением технологии Native Client, что может быть сделано с помощью специализированных версий GNU toolchain, в частности, GNU Compiler Collection, GNU Binutils и LLVM.

Native Client использует Newlib в качестве стандартной библиотеки языка Си, однако порт GNU C Library также доступен.[19]

Pepper

Pepper API — кроссплатформенное свободное API для создания модулей для Native Client. Плагин Pepper API (англ. Pepper Plugin API, сокр. PPAPI) — кроссплатформенное API для защищённых технологией Native Client плагинов, основанное на NPAPI, но полностью переписанное. На данный момент используется в Chromium-подобных браузерах для запуска PPAPI-версии Adobe Flash[20] и встроенной программы просмотра PDF-файлов[21].

PPAPI

12 августа 2009 на странице Google Code был представлен проект Pepper, связанный с разработкой плагина Pepper API,[22] на которой было написано, что PPAPI — набор модификаций NPAPI для создания подобных плагинов более переносными и безопасными[23]. Плагин был создан для лёгкой реализации запуска вне процесса. В дальнейшем целью проекта стало обеспечение основы для создания полностью кроссплатформенных плагинов. Планировалось реализовать данные технологии:

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

В дальнейшем использование PPAPI помогло реализовать поддержку геймпадов и WebSocket.[источник не указан 3053 дня]

Начиная с 13 мая 2010 года Chromium стал единственным браузером, поддерживающим новую модель плагинов.[24] Mozilla Firefox не поддерживает Pepper, так как нет полной спецификации API за пределами её реализации в Chrome, которая была создана только для браузерного движка Blink. По состоянию на 2016 год Pepper поддерживается в Chrome, Chromium и браузерах на Blink, например Opera.

Проекты на Native Client

Существует сайт The Go Playground Архивная копия от 17 ноября 2021 на Wayback Machine, использующий данную технологию для того, чтобы позволить экспериментировать с Go прямо в браузере.

Реакция общества

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

Джон Кармак, совладелец компании Id Software, упомянул Native Client на QuakeCon 2012:

Если вам нужно сделать что-то в браузере, куда более интересен Native Client, который начался как по-настоящему умный хак x86, с помощью которого возможно сделать нужное, не выходя из песочницы уровня доступа пользователя. Теперь есть динамическая перекомпиляция, и то, что вы пишете на C или C++, компилируется в нечто, что не является высокооптимизированным машинным кодом, но чрезвычайно близко к машинному коду. Вы можете делать любые сумасшедшие операции с указателями и всё прочее, что привыкли делать разработчики игр на уровне железа.
Кармак, Джон[26]
 

Вице-президент Mozilla Джей Салливан (англ. Jay Sullivan) сообщил, что у Mozilla нет планов запускать машинный код в браузере, так как

Эти нативные приложения являются чёрными ящиками на веб-странице. […] Мы верим в технологию HTML, и именно в неё мы вложим свои силы.
Джей Салливан (англ. Jay Sullivan)[27]
 

Сотрудник Mozilla Кристофер Близзард[англ.] раскритиковал технологию NaCl, утверждая, что машинный код ни в коей мере не должен быть использован в вебе. Также он сравнил NaCl с технологией Microsoft ActiveX, которая достигла ситуации DLL hell.[4]

Хокон Виум Ли (норв. Håkon Wium Lie), технический директор Opera, верит, что

NaCl как будто «стремится в те старые плохие времена, до веба» […] Суть Native Client в построении новой платформы — или портировании старой в веб […] что привнесёт сложность и проблемы безопасности и лишит веб-платформу внимания.
Хокон Виум Ли (норв. Håkon Wium Lie) [4]
 

Брендан Эйх, технический директор Mozilla, сказал, что ECMAScript 6 вполне достаточно, чтобы удовлетворить все потребности в создании приложения для веб.[28]

См. также

Примечания

  1. Google's Native Client goes live in Chrome — 2011.
  2. Native Client support on ARM — 2013.
  3. https://developer.chrome.com/native-client/sdk/release-notes#chrome-pepper-49
  4. 1 2 3 Metz, Cade (2011-09-12). "Google Native Client: The web of the future - or the past?" (англ.). Архивировано 6 августа 2016. Дата обращения: 6 августа 2016.
  5. Ходаковский, Константин (2011-12-13). "Новая технология Google Chrome приносит игру Bastion в браузер". Архивировано 21 августа 2016. Дата обращения: 6 августа 2016.
  6. Stefansen, Christian (2011-12-09). "Games, apps and runtimes come to Native Client" (англ.). Архивировано 19 августа 2016. Дата обращения: 6 августа 2016.
  7. Rosenblatt, Seth (2011-12-09). "Native Client turns Chrome into high-end gaming platform" (англ.). Архивировано 27 апреля 2016. Дата обращения: 6 августа 2016.
  8. Bugs.chromium.org (англ.). bugs.chromium.org (12 ноября 2016). Дата обращения: 7 марта 2018. Архивировано 18 августа 2017 года.
  9. 1 2 "Goodbye PNaCl, Hello WebAssembly!". Chromium Blog (англ.). 2017-05-30. Архивировано 30 мая 2017. Дата обращения: 7 марта 2018.
  10. WebAssembly Migration Guide - Google Chrome (англ.). developer.chrome.com. Дата обращения: 13 ноября 2024. Архивировано 12 марта 2019 года.
  11. Changes to the Chrome App Support Timeline (англ.). Chromium Blog (10 августа 2020). Дата обращения: 13 ноября 2024. Архивировано 22 сентября 2023 года.
  12. Humphries, Matthew (2010-05-13). "Google shows off Quake-clone running in Native Client" (англ.). Архивировано 21 августа 2016. Дата обращения: 6 августа 2016.
  13. Chen, Brad (2011-09-16). "A new Stable release of Chrome, expanding the frontiers of the web" (англ.). Архивировано 20 августа 2016. Дата обращения: 6 августа 2016.
  14. Sehr, David (2013-11-12). "Portable Native Client: The "pinnacle" of speed, security, and portability" (англ.). Архивировано 13 мая 2016. Дата обращения: 6 августа 2016.
  15. Sehr, David (2013-01-22). "Native Client support on ARM" (англ.). Архивировано 27 июля 2016. Дата обращения: 6 августа 2016.
  16. Alan Donovan, Robert Muth, Brad Chen, David Sehr. PNaCl: Portable Native Client Executables (англ.) (22 февраля 2010). Архивировано 12 марта 2016 года.
  17. David Sehr, Robert Muth, Cliff L. Biffle, Victor Khimenko, Egor Pasko, Bennet Yee, Karl Schimpf, Brad Chen. Adapting Software Fault Isolation to Contemporary CPU Architectures (англ.) (2010). Дата обращения: 6 августа 2016. Архивировано 24 июля 2016 года.
  18. 1 2 Bennet Yee, David Sehr, Greg Dardyk, Brad Chen, Robert Muth, Tavis Ormandy, Shiki Okasaka, Neha Narula, Nicholas Fullagar. Native Client: A Sandbox for Portable, Untrusted x86 Native Code (англ.) (2009). Дата обращения: 6 августа 2016. Архивировано 12 сентября 2016 года.
  19. Building (англ.). Дата обращения: 6 августа 2016. Архивировано 9 ноября 2016 года.
  20. Schuh, Justin (2012-08-08). "The road to safer, more stable, and flashier Flash" (англ.). Архивировано 29 июля 2016. Дата обращения: 6 августа 2016.
  21. Metz, Cade (2010-06-18). "Google hugs Adobe harder with Chrome-PDF merge" (англ.). Архивировано 6 августа 2016. Дата обращения: 6 августа 2016.
  22. ppapi (англ.). Дата обращения: 6 августа 2016. Архивировано 6 октября 2016 года.
  23. ppapi - Concepts.wiki (англ.). Дата обращения: 6 августа 2016. Архивировано 6 октября 2016 года.
  24. Metz, Cade (2010-05-13). "Google heats up native code for Chrome OS" (англ.). Архивировано 17 января 2019. Дата обращения: 6 августа 2016.
  25. Chad Austin. In Defense of Language Democracy (Or: Why the Browser Needs a Virtual Machine) (англ.) (8 января 2011). Дата обращения: 6 августа 2016. Архивировано 16 августа 2016 года.
  26. Видеоролик QuakeCon 2012 (начало на 2 часу, 36 минута, 18 секунда) на YouTube, начиная с 2:36:18
  27. Metz, Cade (2010-06-24). "Mozilla: Our browser will not run native code" (англ.). Архивировано 26 августа 2016. Дата обращения: 6 августа 2016.
  28. Krill, Paul (2012-05-31). "JavaScript founder dismisses Google Native Client, pushes ECMAScript 6" (англ.). Архивировано 20 сентября 2016. Дата обращения: 6 августа 2016.

Ссылки

Read other articles:

Peta langit di makam Senenmut, Wangsa XVIII[1] Astronomi Mesir bermula pada Zaman Prasejarah, dalam Zaman Prawangsa. Susunan batu-batu yang membentuk lingkaran di Nabta Playa dari milenium ke-5 SM diduga ditata menurut hasil perhitungan astronomi. Pada Zaman Sejarah, dalam Kurun Waktu Wangsa-Wangsa yang bermula pada milenium ke-3 SM, Kalender Mesir dengan 365 hari dalam setahun sudah dipergunakan, dan pengamatan bintang-bintang berperan penting dalam prakiraan banjir tahunan Sungai Ni...

 

العلاقات الأمريكية الميانمارية الولايات المتحدة ميانمار   الولايات المتحدة   ميانمار تعديل مصدري - تعديل   العلاقات الأمريكية الميانمارية هي العلاقات الثنائية التي تجمع بين الولايات المتحدة وميانمار.[1][2][3][4][5] مقارنة بين البلدين هذه مقارن

 

Chinese automotive manufacturing company This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages) This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Heibao Auto – news · newspapers · books · scholar · JSTOR (May 202...

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada November 2022. Both Sides of the BladeNama lainPrancisAvec amour et acharnement Sutradara Claire Denis Produser Olivier Delbosc Ditulis oleh Christine Angot Claire Denis Skenario Christine Angot Claire Denis BerdasarkanUn tournant de la vieoleh Christine Angot...

 

Spoorlijn 124Brussel-Zuid - Charleroi-Centraal Totale lengte55,9 kmSpoorwijdtenormaalspoor 1435 mmAangelegd doorBelgische StaatGeopendBrussel Zuid - Kalevoet: 20 september 1873Kalevoet - St Genesius Rode: 22 december 1873St Genesius Rode - Waterloo: 1 februari 1874Waterloo - Eigenbrakel: 10 maart 1874Eigenbrakel - Lillois: 10 april 1874Lillois - Luttre: 1 juni 1874Luttre - Charleroi Zuid: 23 oktober 1843Huidige statusin gebruikGeëlektrificeerd1949Aantal sporen2BaanvaksnelheidBrussel - Nijvel...

 

24°28′18.76″N 39°36′9.43″E / 24.4718778°N 39.6026194°E / 24.4718778; 39.6026194 مسجد بني غفار إحداثيات 24°28′19″N 39°36′09″E / 24.47187778°N 39.60261944°E / 24.47187778; 39.60261944  معلومات عامة الدولة السعودية  معلومات أخرى تعديل مصدري - تعديل   مسجد بني غفار الذي صلى به رسول الله ﷺ تاريخ المسج

Pour le héros de la série, voir Crash Bandicoot (personnage). Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus. Cet article ne cite pas suffisamment ses sources (octobre 2019). Si vous disposez d'ouvrages ou d'articles de référence ou si vous connaissez des sites web de qualité traitant du thème abordé ici, merci de compléter l'article en donnant les références utiles à sa vérifiabilité et en les liant à la section « Notes et références 

 

Ernst von Sachsen, Grabmal von Peter Vischer im Magdeburger Dom Ernst von Sachsen, auch fälschlicherweise Ernst von Wettin (* 26. oder 27. Juni 1464; † 3. August 1513 in Halle) war zunächst postulierter und dann konsekrierter Erzbischof von Magdeburg (1476/1489–1513) und Administrator (Verwalter) des Bistums Halberstadt (1479–1513). Inhaltsverzeichnis 1 Herkunft und Familie 2 Wahl und Postulierung zum Erzbischof von Magdeburg 3 Verhältnis zu Halle 4 Verhältnis zu Halberstadt 5 Verh...

 

artikel ini tidak memiliki pranala ke artikel lain. Tidak ada alasan yang diberikan. Bantu kami untuk mengembangkannya dengan memberikan pranala ke artikel lain secukupnya. (Pelajari cara dan kapan saatnya untuk menghapus pesan templat ini) Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada Maret 2023. Meryl Rouli S...

Bailiwick GuernseyBailiwick of Guernsey (Inggris) Bailliage de Guernesey (Prancis) Bendera Lambang Semboyan: —Lagu kebangsaan: God Save the KingLagu nasional: Sarnia CherieStatusCrown DependencyIbu kota(dan kota terbesar)St. Peter Port (St. Pierre Port)49°27′36″N 2°32′7″W / 49.46000°N 2.53528°W / 49.46000; -2.53528Bahasa resmiInggris dan Prancis1PemerintahanDependensi parlementer• Raja Charles III• Letnan Gubernur Ian Corder•...

 

Mau Jadi Apa?Sutradara Monty Tiwa Soleh Solihun Produser Chand Parwez Servia Gangsar Sukrisno Ditulis oleh Agasyah Karim Khalid Kashogi Soleh Solihun Pemeran Soleh Solihun Anggika Bölsterli Aurelie Moeremans Boris Bokir Adjis Doa Ibu Awwe Ricky Wattimena Yusril Fahriza Penata musikAndhika TriyadiSinematograferRollie MarkianoPenyuntingRyan PurwokoPerusahaanproduksi Starvision Plus Millennia Pictures DistributorKharisma StarVisionTanggal rilis 30 November 2017Durasi103 menitNegara I...

 

Yohanes 18Naskah John Rylands Library Papyrus P52 (sisi recto) yang memuat Injil Yohanes pasal 18:31–33, dibuat pada ~ tahun 125 M.KitabInjil YohanesKategoriInjilBagian Alkitab KristenPerjanjian BaruUrutan dalamKitab Kristen4← pasal 17 pasal 19 → Yohanes 18 (disingkat Yoh 18) adalah bagian Injil Yohanes pada Perjanjian Baru dalam Alkitab Kristen. Disusun menurut kesaksian Yohanes, salah satu dari keduabelas Rasul Yesus Kristus.[1][2] Teks Naskah aslinya ditulis d...

PagerbarangKecamatanPeta lokasi Kecamatan PagerbarangNegara IndonesiaProvinsiJawa TengahKabupatenTegalPopulasi • Total- jiwaKode Kemendagri33.28.05 Kode BPS3328050 Desa/kelurahan13 Pagerbarang adalah sebuah kecamatan di Kabupaten Tegal, Jawa Tengah, Indonesia. Sebelah utara berbatasan dengan Jatibarang Brebes, timur kecamatan Dukuhwaru dan Lebaksiu, selatan kecamatan Balapulang dan Margasari, barat Kabupaten Brebes. Luas seluruh wilayah Kecamatan Pagerbarang 6.378,49 Ha dan b...

 

Vua Bảo Đại ngồi trong ngự liễn (kiệu) trên đường tới Đàn Nam Giao làm lễ tế năm 1942 Lễ tế giao (chữ Hán: 郊天禮 (Giao Thiên lễ) / 祭天 (Tế Thiên)), thường gọi lễ tế Nam Giao (chữ Hán: 南郊禮 (Nam Giao lễ)), là nghi lễ tế trời do vị quân chủ của một nước theo văn hóa Trung Hoa Khổng giáo tiến hành. Đây là nghi thức được xếp vào hàng Đại tự (lễ lớn) và là lễ tế linh thiêng b...

 

Dieser Artikel behandelt den ehemaligen Verfassungsrichter. Zum Anthropologen siehe Paul Kirchhoff. Paul Kirchhof bei der Buchvorstellung Ohne Familie ist kein Staat zu machen (2018) Paul Kirchhof (* 21. Februar 1943 in Osnabrück) ist ein deutscher Verfassungs- und Steuerrechtler. Kirchhof hatte an der Universität Heidelberg einen Lehrstuhl für Staatsrecht inne und war Direktor des Instituts für Finanz- und Steuerrecht. Am 7. Juni 2013 hielt er seine Abschiedsvorlesung.[1] Von 198...

1953 film The Broken HorseshoeOriginal Australian daybillDirected byMartyn C. WebsterWritten byA.R. RawlinsonBased onthe television serial by Francis DurbridgeProduced byErnest G. RoyStarringRobert Beatty Elizabeth SellarsCinematographyGerald GibbsEdited byJoseph SterlingMusic byWilfred BurnsProductioncompanyNettlefold Films (UK)Distributed byButcher's Film ServiceRelease date1953 (UK)Running time77 minutesCountryUnited KingdomLanguageEnglish The Broken Horseshoe is a 1953 British B crime fil...

 

La RiojaKotaNegara ArgentinaProvinsi La RiojaDepartemenCapitalDidirikan1591Ketinggian515 m (1,690 ft)Populasi (Sensus 2010) • Total180,995Zona waktuUTC−3 (ART)Kode posF5300Situs webSitus resmi La Rioja adalah ibu kota Provinsi La Rioja, Argentina, yang terletak di bagian timur provinsi itu. Kota ini memiliki penduduk sebanyak 180.995 jiwa berdasarkan sensus penduduk tahun 2010. Kota ini berjarak 1.167 km dari Buenos Aires dan 430 km dari Córdoba. Galeri Monu...

 

Calcutta, SurinameResortMap showing the resorts of Saramacca District.  CalcuttaNegara SurinameDistrikDistrik SaramaccaLuas • Total1.655 km2 (639 sq mi)Ketinggian4 m (13 ft)Populasi (2012)[1] • Total1.647 • Kepadatan0,00.100/km2 (0,0.026/sq mi)Zona waktuUTC-3 (AST) Calcutta adalah sebuah resort di Suriname, yang terletak di Distrik Saramacca. Dalam sensus 2012, penduduknya berjumlah 1.647 jiwa, dan u...

Embalse de Zahara-El Gastor Vista del embalse de Zahara-El GastorUbicación geográficaRío GuadaleteCuenca Atlántica AndaluzaCoordenadas 36°50′27″N 5°22′13″O / 36.84096, -5.37034Ubicación administrativaPaís España EspañaComunidad Andalucía AndalucíaProvincia Cádiz CádizMapa de localización Embalse de Zahara-El Gastor Ubicación en la provincia de Cádiz[editar datos en Wikidata] El embalse de Zahara-El Gastor está situado en el no...

 

Запрос «Пассажирский транспорт» перенаправляется сюда. На эту тему нужно создать отдельную статью. Общественный (коммунальный) транспорт — разновидность пассажирского транспорта как отрасли, предоставляющей услуги по перевозке людей по маршрутам, которые перевозч...

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!