stringtranslate.com

Cliente nativo de Google

Google Native Client ( NaCl ) es una tecnología de espacio aislado descontinuada para ejecutar un subconjunto de código nativo Intel x86 , ARM o MIPS , o un ejecutable portátil, en un espacio aislado. Permite ejecutar código nativo de forma segura desde un navegador web , independientemente del sistema operativo del usuario , lo que permite que las aplicaciones web se ejecuten a velocidades casi nativas, lo que se alinea con los planes de Google para ChromeOS . También se puede utilizar para proteger complementos del navegador y partes de otras aplicaciones o aplicaciones completas [2] como ZeroVM . [3]

Para demostrar la disponibilidad de la tecnología, el 9 de diciembre de 2011, Google anunció la disponibilidad de varias versiones nuevas solo para Chrome de juegos conocidos por sus gráficos ricos y con uso intensivo de procesador , incluido Bastion (ya no es compatible con Chrome Web Store ). NaCl ejecuta gráficos 3D acelerados por hardware (a través de OpenGL ES 2.0), almacenamiento de archivos local en espacio aislado, carga dinámica , modo de pantalla completa y captura con mouse . También había planes para que NaCl estuviera disponible en dispositivos portátiles. [4] [5]

Portable Native Client (PNaCl) es una versión independiente de la arquitectura. Las aplicaciones PNaCl se compilan con anticipación . Se recomienda PNaCl en lugar de NaCl para la mayoría de los casos de uso. [6] El concepto general de NaCl (ejecución de código nativo en un navegador web) se ha implementado anteriormente en ActiveX , que, mientras aún está en uso, tiene acceso completo al sistema (disco, memoria, interfaz de usuario, registro, etc.) . Native Client evita este problema mediante el uso de zona de pruebas.

Una alternativa de Mozilla fue asm.js , que también permite compilar aplicaciones escritas en C o C++ para ejecutarlas en el navegador y también admite la compilación anticipada, pero es un subconjunto de JavaScript y, por lo tanto, es compatible con navegadores que no lo apoyes directamente.

El 12 de octubre de 2016, un comentario en el rastreador de problemas de Chromium indicó que los equipos Pepper y Native Client de Google habían sido despedidos. [7] El 30 de mayo de 2017, Google anunció la desactivación de PNaCl en favor de WebAssembly . [8] Aunque inicialmente Google planeó eliminar PNaCl en el primer trimestre de 2018, [8] y posteriormente en el segundo trimestre de 2019, [9] se eliminó en junio de 2022 (junto con Chrome Apps ). [10] [11]

Descripción general

Native Client fue un proyecto de código abierto desarrollado por Google . [12] Juegos como Quake , [13] XaoS , Battle for Wesnoth , [14] Doom , [15] Lara Croft and the Guardian of Light , [16] From Dust , [17] y MAME , así como el sonido El sistema de procesamiento Csound ha sido portado a Native Client. Native Client ha estado disponible en el navegador web Google Chrome desde la versión 14 y ha estado habilitado de forma predeterminada desde la versión 31, cuando se lanzó Portable Native Client (PNaCl, pronunciado: pinnacle). [18] [19] [20]

En marzo de 2010 se lanzó una implementación ARM . [21] También se admitieron x86-64 , IA-32 y MIPS .

Para ejecutar una aplicación de forma portátil bajo PNaCl, se debe compilar en un subconjunto estable y agnóstico de la arquitectura del código de bytes de representación intermedia LLVM . [22] Los ejecutables se denominan ejecutables PNaCl (pexes). La cadena de herramientas PNaCl crea archivos .pexe; Archivos .nexe de NaCl Toolchain. El número mágico de archivos .nexe es 0x7F 'E' 'L' 'F', que es ELF . En Chrome, se traducen a ejecutables de arquitectura específica para que puedan ejecutarse.

NaCl utiliza detección y aislamiento de fallas de software para sandboxing en x86-64 y ARM. [23] La implementación x86-32 de Native Client se destaca por su novedoso método de espacio aislado, que hace uso de la función de segmentación raramente utilizada de la arquitectura x86 . [24] Native Client configura segmentos x86 para restringir el rango de memoria al que puede acceder el código de espacio aislado. Utiliza un verificador de código para evitar el uso de instrucciones no seguras, como las que realizan llamadas al sistema. Para evitar que el código salte a una instrucción insegura oculta en medio de una instrucción segura, Native Client requiere que todos los saltos indirectos sean saltos al inicio de bloques alineados de 32 bytes, y no se permite que las instrucciones se extiendan a ambos lados de estos bloques. [24] Debido a estas limitaciones, el código C y C++ debe recompilarse para ejecutarse en Native Client, que proporciona versiones personalizadas de la cadena de herramientas GNU , específicamente GNU Compiler Collection (GCC), GNU Binutils y LLVM .

Native Client tiene una licencia de estilo BSD .

Native Client utiliza Newlib como biblioteca C , pero también está disponible una versión de la biblioteca GNU C (GNU libc). [25]

Pimienta

NaCl significa cloruro de sodio , sal de mesa común ; a modo de juego de palabras , también se utilizó el nombre de pimiento . Pepper API es una API multiplataforma de código abierto para crear módulos de Native Client. [26] Pepper Plugin API, o PPAPI [27] [28] es una API multiplataforma para complementos de navegador web protegidos por Native Client, primero basada en NPAPI de Netscape y luego reescrita desde cero. Se utilizó en Chromium y Google Chrome para habilitar la versión PPAPI de Adobe Flash [29] y el visor de PDF integrado . [30]

PPAPI

El 12 de agosto de 2009, una página de Google Code presentó un nuevo proyecto, Pepper, y la API de complemento Pepper asociada (PPAPI), [31] "un conjunto de modificaciones a NPAPI para hacer que los complementos sean más portátiles y seguros". [32] Esta extensión está diseñada específicamente para facilitar la implementación de la ejecución de complementos fuera de proceso . Además, los objetivos del proyecto son proporcionar un marco para crear complementos totalmente multiplataforma. Los temas considerados incluyen:

La API Pepper también admite Gamepads (versión 19) y WebSockets (versión 18). [33]

El 13 de mayo de 2010 , el navegador de código abierto de Google, Chromium , era el único navegador web que utilizaba el nuevo modelo de complemento de navegador. [34] A partir de 2020, Pepper es compatible con los navegadores basados ​​en motores de diseño Chrome, Chromium y Blink, como Opera y Microsoft Edge.

En agosto de 2020, Google anunció que la compatibilidad con PPAPI se eliminaría de Google Chrome y Chromium en junio de 2022. [35]

PPAPI en Firefox

Los desarrolladores de Firefox declararon en 2014 que no admitirían Pepper, ya que no había una especificación completa de la API más allá de su implementación en Chrome, que a su vez estaba diseñado para usarse solo con el motor de diseño Blink , y tenía API privadas específicas para el complemento Flash Player que no estaban documentados. [36] En octubre de 2016, Mozilla anunció que había reconsiderado y estaba explorando si incorporar Pepper API y PDFium en futuras versiones de Firefox, [37] sin embargo, no se tomaron tales medidas. En julio de 2017, Adobe dejó de utilizar Flash y anunció su fin de vida útil a finales de 2020. [38] En enero de 2021, Adobe Flash Player, Google Chrome, Firefox, Safari y Windows [39] recibieron actualizaciones que desactivaban o eliminaban por completo Destello.

Aplicaciones

Un sitio web [40] utilizó NaCL en el servidor para permitir a los usuarios experimentar con el lenguaje de programación Go desde sus navegadores. [41]

Recepción

Algunos grupos de desarrolladores de navegadores apoyaron la tecnología Native Client mientras que otros no.

Partidarios

Chad Austin (de IMVU ) elogió la forma en que Native Client puede llevar aplicaciones de alto rendimiento a la web (con aproximadamente un 5 % de penalización en comparación con el código nativo) de forma segura, al mismo tiempo que acelera la evolución de las aplicaciones del lado del cliente al ofrecer una opción. del lenguaje de programación utilizado (además de JavaScript ). [42]

John D. Carmack de Id Software elogió a Native Client en la QuakeCon 2012 y dijo: "si tienes que hacer algo dentro de un navegador, Native Client es mucho más interesante como algo que comenzó como un truco x86 bastante inteligente en el camino". Curiosamente, podrían aislar todo esto en modo usuario. Ahora es una recompilación dinámica, pero es algo que se programa en C o C++ y se compila hasta algo que no será su nivel de optimización -O4 para código completamente nativo, pero sí bastante cercano. al código nativo. Podrías hacer todas tus persecuciones de punteros malvados y cualquier cosa que quieras hacer como desarrollador de juegos avanzado". [43]

Detractores

Otros profesionales de TI fueron más críticos con esta tecnología de espacio aislado porque tenía problemas de interoperabilidad sustanciales o sustanciales.

El vicepresidente de productos de Mozilla , Jay Sullivan, dijo que Mozilla no tiene planes de ejecutar código nativo dentro del navegador, ya que "estas aplicaciones nativas son simplemente pequeñas cajas negras en una página web. [...] Realmente creemos en HTML, Y aquí es donde queremos centrarnos". [44]

Christopher Blizzard de Mozilla criticó a NaCl, afirmando que el código nativo no puede evolucionar de la misma manera que lo hace la web basada en código fuente. También comparó el NaCl con la tecnología ActiveX de Microsoft , plagada de DLL Hell . [2]

Håkon Wium Lie , director de tecnología de Opera, creía que "NaCl parece estar 'anhelando los viejos tiempos, antes de la web'", y que "Native Client trata de construir una nueva plataforma, o migrar una plataforma antigua a la web [. ..] traerá problemas de complejidad y seguridad, y quitará atención a la plataforma web". [2]

Segunda generación

La segunda generación de sandboxing desarrollada en Google es gVisor . [45] [46] Está destinado a reemplazar el NaCl en Google Cloud , para ser más exactos en Google App Engine . Google también ha estado promocionando WebAssembly . [47]

Ver también

Referencias

  1. ^ "El cliente nativo de Google se activa en Chrome". El registro . 16 de septiembre de 2011 . Consultado el 12 de marzo de 2016 .
  2. ^ abc Metz, Cade (12 de septiembre de 2011). "Google Native Client: ¿La web del futuro o del pasado?". El registro . Consultado el 17 de septiembre de 2011 .
  3. ^ "Arquitectura ZeroVM". Archivado desde el original el 8 de febrero de 2014 . Consultado el 16 de marzo de 2014 .
  4. ^ Rosenblatt, Seth (9 de diciembre de 2011). "Native Client convierte Chrome en una plataforma de juegos de alta gama". CNET. Archivado desde el original el 28 de agosto de 2012 . Consultado el 9 de diciembre de 2011 .
  5. ^ "Blog de Google Code: los juegos, las aplicaciones y los tiempos de ejecución llegan a Native Client". Googlecode.blogspot.com. 9 de diciembre de 2011 . Consultado el 25 de abril de 2012 .
  6. ^ "NaCl y PNaCl".
  7. ^ "Bugs.chromium.org". 12 de octubre de 2016 . Consultado el 12 de octubre de 2016 .
  8. ^ ab "¡Adiós PNaCl, hola WebAssembly!". Blog de cromo . Consultado el 31 de mayo de 2017 .
  9. ^ "Guía de migración de WebAssembly: Google Chrome". desarrollador.chrome.com . Consultado el 20 de diciembre de 2018 .
  10. ^ "Cambios en la línea de tiempo de soporte de la aplicación Chrome". Blog de cromo . 10 de agosto de 2020.
  11. ^ Li, Abner (10 de agosto de 2020). "Google retrasa la desactivación de las aplicaciones de Chrome en todas las plataformas". 9to5Google . Consultado el 2 de octubre de 2021 .
  12. ^ "Cliente nativo de Google en Google Code" . Consultado el 25 de abril de 2012 .
  13. ^ davemichael (3 de octubre de 2020). "GitHub - davemichael/NaCl-Quake: Quake para Native Client (basado en el puerto SDL Quake)". GitHub .
  14. ^ "La batalla por Wesnoth".
  15. ^ "Índice de /".
  16. ^ "Chrome Web Store: Lara Croft y la guardiana de la luz". Archivado desde el original el 8 de diciembre de 2013 . Consultado el 26 de noviembre de 2013 .
  17. ^ "Del polvo". Archivado desde el original el 12 de marzo de 2016 . Consultado el 24 de febrero de 2016 .
  18. ^ Chen, Brad (8 de diciembre de 2008). "Cliente nativo: una tecnología para ejecutar código nativo en la Web". Google-code-updates.blogspot.com . Consultado el 25 de abril de 2012 .
  19. ^ "The Chromium Blog: Native Client incorpora código nativo en espacio aislado a las aplicaciones de Chrome Web Store". Blog.chromium.org. 18 de agosto de 2011 . Consultado el 25 de abril de 2012 .
  20. ^ "Blog de código de Google: cliente nativo portátil: el" pináculo "de la velocidad, la seguridad y la portabilidad". blog.chromium.org. 12 de noviembre de 2013 . Consultado el 16 de marzo de 2014 .
  21. ^ "El cliente nativo de Google va más allá de ARM". El H. 18 de marzo de 2010 . Consultado el 19 de mayo de 2010 .
  22. ^ "PNaCl: ejecutables de cliente nativo portátiles" (PDF) . Archivado desde el original (PDF) el 2 de mayo de 2012 . Consultado el 25 de abril de 2012 .
  23. ^ Sehr, David; Muth, Robert; Biffle, acantilado L.; Khimenko, Víctor; Pasko, Egor; Sí, Bennet; Schimpf, Karl; Chen, Brad (2010). "Adaptación del aislamiento de fallas de software a las arquitecturas de CPU contemporáneas". 19º Simposio de Seguridad USENIX . Consultado el 31 de julio de 2011 .
  24. ^ ab Sí, Bennet; Sehr, David; Dardyk, Greg; Chen, Brad; Muth, Robert; Ormandía, Tavis; Okasaka, Shiki; Narula, Neha; Fullagar, Nicolás (2009). "Cliente nativo: un entorno limitado para código nativo x86 portátil y no confiable". Simposio IEEE sobre seguridad y privacidad (Oakland'09) . Consultado el 31 de julio de 2011 .
  25. ^ "Cliente nativo: edificio". desarrollador.chrome.com . Consultado el 16 de marzo de 2014 .
  26. ^ "Descripción técnica".
  27. ^ "Proyecto API del complemento Pepper en" . Consultado el 25 de abril de 2012 .
  28. ^ "Fuente de Chrome: índice de /trunk/src/ppapi". Src.chromium.org . Consultado el 25 de abril de 2012 .
  29. ^ "El camino hacia un Flash más seguro, estable y llamativo". 8 de agosto de 2012 . Consultado el 10 de agosto de 2013 .
  30. ^ Metz, Cade (18 de junio de 2010). "Google abraza más a Adobe con la combinación Chrome-PDF". El registro . Consultado el 25 de abril de 2012 .
  31. ^ "Primeros pasos: antecedentes y conceptos básicos: los proyectos Chromium". Cromo.org . Consultado el 25 de abril de 2012 .
  32. ^ "Pepper.wiki". 24 de febrero de 2012 . Consultado el 25 de abril de 2012 .
  33. ^ "Notas de la versión".
  34. ^ Metz, Cade (13 de mayo de 2010). "Google calienta el código nativo para Chrome OS". Theregister.co.uk . Consultado el 25 de abril de 2012 .
  35. ^ Anthony Laforge (10 de agosto de 2020). "Cambios en la línea de tiempo de soporte de la aplicación Chrome". Blog de cromo .
  36. ^ Zbarsky, Boris. "Error 729481: compatibilidad con la API del complemento" Pepper "" . Consultado el 15 de abril de 2016 .
  37. ^ Metz, Cade (3 de octubre de 2016). "Proyecto Mortero". Mozilla . Consultado el 30 de octubre de 2016 .
  38. ^ "Flash y el futuro del contenido interactivo". Adobe Inc. 25 de julio de 2017. Archivado desde el original el 2 de diciembre de 2017 . Consultado el 31 de julio de 2023 .
  39. ^ Salter, Jim (4 de mayo de 2021). "Adiós de nuevo, Flash: Microsoft hace obligatoria la eliminación de Windows 10". Ars Técnica . Consultado el 1 de agosto de 2023 .
  40. ^ "El patio de recreo".
  41. ^ "Dentro del Go Playground: el blog de Go". blog.golang.org . Consultado el 27 de agosto de 2016 .
  42. ^ Austin, Chad (8 de enero de 2011). "Chad Austin: en defensa de la democracia lingüística (o: por qué el navegador necesita una máquina virtual)". Chadaustin.me . Consultado el 25 de abril de 2012 .
  43. ^ Carmack, John (3 de agosto de 2012). "QuakeCon 2012". youtube.com . Consultado el 26 de agosto de 2012 .
  44. ^ Metz, Cade (24 de junio de 2010). "Mozilla: nuestro navegador no ejecutará código nativo". El registro . Consultado el 25 de abril de 2012 .
  45. ^ "Lanzamiento beta de PHP 7.2 en el entorno estándar de Google App Engine | Hacker News".
  46. ^ "Google/Gvisor". GitHub . 15 de octubre de 2021.
  47. ^ Avram, Abel (31 de mayo de 2017). "Google eliminará la compatibilidad con PNaCl". InfoQ . Consultado el 1 de agosto de 2020 . Como reemplazo, Google ahora está impulsando WebAssembly.

enlaces externos

Ejemplos