HHVM

De Wikipedia, la enciclopedia libre
Ir a la navegación Ir a la búsqueda
HHVM
hhvm.com
HHVM logo.svg
Información general
Modelo de desarrollo Código abierto
Desarrollador(es) Facebook, Inc.
Programado en C++, C y Ocaml
Licencia Licencia PHP
Reemplaza a HipHop for PHP

HHVM (conocido como HipHop Virtual Machine) es una máquina virtual de código abierto basado en compilador Just-in-Time (JIT), el cual sirve como un motor de ejecución para los lenguajes PHP y Hack. Usando el principio del compilador JIT, ejecuta código PHP o Hack en código Bytecode HipHop intermedio, el cual es entonces traducido en código máquina, optimizado, y ejecutado nativamente.[1][2]​ Esto contrasta con la ejecución interpretada usual de PHP, cuyo Motor Zend transforma código fuente PHP en opcode (forma de bytecode), que el Zend Engine's virtual CPU se encarga de ejecutar.[3]

HHVM es desarrollado por Facebook, y el código fuente del proyecto está disponible en GitHub; es licenciado bajo los términos de la Licencia PHP y la Licencia Zend.[1][4]

Visión general[editar]

HHVM fue creado como el sucesor de la máquina de ejecución HipHop for PHP, el cual es un transcompilador de PHP-a-C++, también creado por Facebook.[5][6]​ Basado en la experiencia ganada a resolver los problemas introducidos por HPHPc, Facebook decidió crear una máquina virtual PHP basada en JIT a comienzos del 2010.[7]​ Los problemas con HPHPc incluyeron su reacción al efecto plateau para mejoras en el rendimiento, falta de soporte para todas las características del lenguaje PHP, y las dificultades derivadas del desarrollo y despliegue de procesos requeridos por los proyectos que utilizan HPHPc, los cuales consumen tiempo y recursos.[5]​ En Q1 2013, el servidor de producción de Facebook dejó de usar HPHPc, dando paso a HHVM.

Siguiendo el principio de la compilación JIT, HHVM primero convierte el código PHP o Hack en bytecode de alto nivel, HHBC, también conocido como lenguaje intermedio. HHBC es un formato de bytecode creado específicamente para HHVM, siendo apropiado para los intérpretes como los compiladores JIT. En el siguiente paso en la ejecución, HHVM traduce dinámicamente el bytecode en código máquina x86-64, realiza las optimizaciones adicionales a través de un análisis dinámico del bytecode traducido,y ejecuta el código máquina resultante.[1][5][8]​ Como resultado, HHVM tiene ciertas similitudes con las máquinas virtuales usadas en otros lenguajes de programación, incluyendo Common Language Runtime (CLR, para el lenguaje de programación C#) y la Java Virtual Machine (JVM para el lenguaje de programación Java).[7]

HHVM trae algunos beneficios en comparación con HPHPc, y uno de ellos es el soporte completo a todo el lenguaje PHP como se ha definido en la implementación oficial de PHP 5.4, incluyendo soporte para los constructores create_function() y eval().[9][10]​ Además, HHVM usa el mismo motor de ejecución cuando es desplegado en entornos de desarrollo y producción, mientras que soporta la integración entre el motor de ejecución y el depurador HPHPd en ambos tipos de entorno; como resultado, mantener el Intérprete HipHop (HPHPi) separado como una utilidad de desarrollo ya no es necesario como lo fue en el caso de HPHPc. HHVM también elimina el largo proceso de construcción del software requerido por HPHPc para correr programas PHP, resultando en un proceso de despliegue y desarrollo más simplificado.[1]

En conjunto con HHVM, Facebook también lanzó Hack, un lenguaje de programación diseñado específicamente para HHVM, el cual se puede considerar una nueva versión de PHP (en estricto rigor, una extensión de PHP).[11][12]​ Hack permite a los programadores usar tipado tanto estático como dinámico, y permite especificar el tipo de dato en los argumentos de las funciones, valores de retorno de funciones, y propiedades de las clases. Al mismo tiempo, HACK no provee compatibilidad hacia atrás completa con PHP, como las declaraciones goto, y las variables variables.[13][14][15][16]

Rendimiento[editar]

Estudios del comportamiento de usuarios finales concluyeron que la falta de velocidad en las operaciones de un sitio web (incluso esperas tan cortas como medio segundo), puede tener un impacto negativo en la experiencia del usuario final y el rendimiento general del sitio web.[17]​ Algunos sitios populares como Friendster sufrieron esos efectos debido a los problemas prolongados de velocidad de respuesta del servidor web.[18]

Como una máquina virtual que proporciona el entorno de ejecución, HHVM posee la habilidad de usar información de tipo directo para producir un código nativo más eficiente, incrementando el rendimiento y reduciendo la latencia de un servidor web. En el Q4 2012,la ejecución del código fuente de facebook.com en HHVM demostró un rendimiento a la par de HPHPc y en diciembre de 2013, HPHPc fue incluso superado en un 15%.[19]

Véase también[editar]

Referencias[editar]

  1. a b c d Error en la cita: Etiqueta <ref> no válida; no se ha definido el contenido de las referencias llamadas initial-release
  2. «facebook/hhvm». github.com. Facebook. Consultado el 2014-08-02 de mdy. 
  3. Kaushik Pal (2014-04-28 de mdy). «PHP and Zend Engine Internals». phpbuilder.com. Archivado desde el original el 15 de septiembre de 2014. Consultado el 2014-09-23 de mdy. 
  4. Error en la cita: Etiqueta <ref> no válida; no se ha definido el contenido de las referencias llamadas license
  5. a b c Drew Paroski (2012-11-29 de mdy). «Speeding up PHP-based development with HHVM». Facebook. Consultado el 2014-08-02 de mdy. 
  6. «Announcement on GitHub removing HPHPc support». github.com. Facebook. 2013-02-19 de mdy. Consultado el 2013-05-24 de mdy. 
  7. a b Cade Metz (2013-06-10 de mdy). «How Three Guys Rebuilt the Foundation of Facebook». Wired. Consultado el 2014-09-28 de mdy. 
  8. «HipHop Bytecode v1 revision 18». github.com. Facebook. 2014-07-31 de mdy. Consultado el 2013-05-24 de mdy. 
  9. «facebook/hhvm: About upgrade to PHP 5.4 engine». github.com. May 2013. Consultado el 2014-08-02 de mdy. 
  10. «facebook/hhvm: Home». github.com. Facebook. 2014-05-08 de mdy. Consultado el 2014-08-02 de mdy. 
  11. Cade Metz (2014-03-20 de mdy). «Facebook Introduces 'Hack,' the Programming Language of the Future». Wired. Consultado el 2014-04-15 de mdy. 
  12. Julien Verlaguet; Alok Menghrajani (April 2014). «Hack: a new programming language for HHVM». code.facebook.com. Facebook. Consultado el 2014-03-23 de mdy. 
  13. Josh Lockhart (2014-04-03 de mdy). «Facebook's Hack, HHVM, and the future of PHP». O'Reilly Media. Consultado el 2014-08-02 de mdy. 
  14. «Hack and HHVM: Type Annotations (Hack Manual)». docs.hhvm.com. Consultado el 2014-03-25 de mdy. 
  15. «Hack and HHVM: Type Inference (Hack Manual)». docs.hhvm.com. Archivado desde el original el 26 de marzo de 2014. Consultado el 2014-03-25 de mdy. 
  16. «Hack and HHVM: Unsupported PHP Features in Hack (Hack Manual)». docs.hhvm.com. Consultado el 2014-04-02 de mdy. 
  17. Brady Forrest (2009-06-23 de mdy). «Bing and Google Agree: Slow Pages Lose Users». O'Reilly Media. Consultado el 2014-09-28 de mdy. 
  18. Gary Rivlin (2006-10-05 de mdy). «Wallflower at the Web Party». The New York Times. Consultado el 2014-09-28 de mdy. 
  19. «We are the 98.5% (and the 16%)». hhvm.com. 2013-12-19 de mdy. Consultado el 2014-08-02 de mdy. 

Enlaces externos[editar]