De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

HipHop Virtual Machine ( HHVM ) es una máquina virtual de código abierto basada en la compilación Just-In-Time (JIT) que sirve como motor de ejecución para el lenguaje de programación Hack y se utiliza para admitir la ejecución de PHP antes del lanzamiento de la versión 4 de HHVM. [ 7] Mediante el uso del principio de compilación JIT, el código Hack se transforma primero en un código de bytes HipHop intermedio ( HHBC ), que luego se traduce dinámicamente a código de máquina x86-64 , se optimiza y se ejecuta de forma nativa. [8] [9] Esto contrasta con la interpretación habitual de PHPejecución, en la que Zend Engine transforma el código fuente PHP en códigos de operación que sirven como una forma de código de bytes , y ejecuta los códigos de operación directamente en la CPU virtual de Zend Engine . [10]

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

Resumen [ editar ]

HHVM fue creado como el sucesor del motor de ejecución PHP HipHop para PHP (HPHPc), que es un transpilador de PHP a C ++ también creado por Facebook. [12] [13] Basado en la experiencia adquirida y con el objetivo de resolver los problemas introducidos por HPHPc, Facebook decidió a principios de 2010 crear una máquina virtual PHP basada en JIT . Los problemas asociados con HPHPc incluyeron su alcance de una meseta para mejoras de rendimiento adicionales, la falta de soporte completo para todas las características del lenguaje PHP y las dificultades que surgen de procesos específicos de desarrollo e implementación que consumen tiempo y recursos necesarios para proyectos PHP que utilizan HPHPc. [12] En el primer trimestre de 2013, la versión de producción del sitio web facebook.com dejó de usar HPHPc y cambió a HHVM.

Siguiendo el principio de compilación JIT, HHVM primero convierte el código PHP o Hack ejecutado en un alto nivel de código de bytes , HHBC, que también se conoce como un lenguaje intermedio . HHBC es un formato de código de bytes creado específicamente para HHVM, en un formato que es apropiado para el consumo tanto de los intérpretes como de los compiladores just-in-time. Como los siguientes pasos en la ejecución, HHVM traduce dinámicamente ("justo a tiempo") el código de bytes HHBC en código de máquina x86-64, realiza sus optimizaciones adicionales a través de un análisis dinámico del código de bytes traducido y ejecuta el código de máquina x86-64 . [1] [12] [14] Como resultado, HHVM tiene ciertas similitudes con las máquinas virtuales utilizadas por otros lenguajes de programación, incluido Common Language Runtime (CLR, para el lenguaje C # ) y la máquina virtual Java (JVM, para el lenguaje Java ).

HHVM ofrece muchos beneficios en comparación con HPHPc, y uno de ellos es el soporte casi completo para todo el lenguaje PHP según lo definido por la implementación oficial de la versión 5.4 de PHP, incluido el soporte create_function()y las eval()construcciones de HHVM . [15] [16] Además, HHVM utiliza el mismo motor de ejecución cuando se implementa en entornos de producción y desarrollo, mientras que admite la integración entre el motor de ejecución y el depurador HPHPd en ambos tipos de entornos; como resultado, mantener HPHPi (intérprete de HipHop) por separado como una utilidad de desarrollo ya no es necesario como era el caso de HPHPc. HHVM también elimina las construcciones largasrequerido por HPHPc para ejecutar programas PHP, lo que resulta en procesos de implementación y desarrollo mucho más simples que en el caso de HPHPc. [1]

Junto con HHVM, Facebook también lanzó Hack , un derivado de PHP [17] [18] que permite a los programadores utilizar tanto la escritura dinámica como la escritura estática , que es un concepto también conocido como escritura gradual , y permite especificar tipos para argumentos de función. , valores de retorno de funciones y propiedades de clase ; sin embargo, no se pueden especificar tipos de variables locales . Al mismo tiempo, Hack no proporciona una compatibilidad retroactiva completa al no llevar a cabo algunas de las funciones de PHP, como la declaración y la dinámicagotonombres de variables . [19] [20] [21] [22]

En septiembre de 2017, se anunció que la versión 3.24 sería la última versión de HHVM en admitir oficialmente PHP, y que HHVM solo admitirá Hack en el futuro, citando diferencias e incompatibilidades en PHP 7. [23]

Rendimiento [ editar ]

Como máquina virtual de proceso que proporciona el entorno de ejecución, HHVM tiene la capacidad de utilizar información de tipo en vivo para producir un código nativo más eficiente , lo que lleva a un mayor rendimiento del servidor web y una menor latencia . En el cuarto trimestre de 2012, la ejecución del código fuente de facebook.com en HHVM logró la paridad de rendimiento con HPHPc, [12] y en diciembre de 2013 HPHPc fue incluso superada en alrededor de un 15%. [24]

Ver también [ editar ]

  • LLVM
  • Máquina virtual Parrot
  • Falangero

Notas [ editar ]

  1. ^ Sólo el Hack 's tipo -Comprobación ( hh_server y hh_client ) y el formato de código ( hh_format ) utilidades de línea de comandos y demonios en paquete junto con la máquina virtual de HipHop están escritos en OCaml .

Referencias [ editar ]

  1. ↑ a b c d Jason Evans (9 de diciembre de 2011). "La máquina virtual HipHop" . Facebook . Consultado el 2 de agosto de 2014 .
  2. ^ "Lanzamientos · facebook / hhvm" . Facebook. El 15 de agosto de 2018 . Consultado el 19 de noviembre de 2019 .
  3. ^ "Construyendo e instalando HHVM en CentOS 7.x" . github.com . Facebook . 26 de mayo de 2015 . Consultado el 12 de junio de 2015 .
  4. ^ "Construyendo el typechecker de Hack" . github.com . Facebook. 10 de septiembre de 2014 . Consultado el 12 de junio de 2015 .
  5. ^ "HHVM de Facebook comienza a ver la reescritura de óxido - Phoronix" . Consultado el 29 de agosto de 2019 .
  6. ^ a b "facebook / hhvm: Licencia" . github.com . Facebook, Inc. Consultado el 2 de agosto de 2014 .
  7. ^ https://hhvm.com/blog/2019/02/11/hhvm-4.0.0.html
  8. ^ Ottoni, Guilherme (20 de junio de 2018). "HHVM JIT: un compilador basado en regiones, guiado por perfiles para PHP y Hack" . Actas de la 39ª Conferencia ACM SIGPLAN sobre diseño e implementación de lenguajes de programación (PLDI) . ACM . págs. 151-165.
  9. ^ "facebook / hhvm" . github.com . Facebook . Consultado el 2 de agosto de 2014 .
  10. ^ Kaushik Pal (28 de abril de 2014). "Internos del motor PHP y Zend" . phpbuilder.com . Archivado desde el original el 15 de septiembre de 2014 . Consultado el 23 de septiembre de 2014 .
  11. ^ Código fuente de HHVM en GitHub
  12. ↑ a b c d Drew Paroski (29 de noviembre de 2012). "Acelerando el desarrollo basado en PHP con HHVM" . Facebook . Consultado el 2 de agosto de 2014 .
  13. ^ "Anuncio sobre GitHub eliminando el soporte HPHPc" . github.com . Facebook . 19 de febrero de 2013 . Consultado el 24 de mayo de 2013 .
  14. ^ "HipHop Bytecode v1 revisión 18" . github.com . Facebook . 31 de julio de 2014 . Consultado el 24 de mayo de 2013 .
  15. ^ "facebook / hhvm: Acerca de la actualización al motor PHP 5.4" . github.com . Mayo de 2013 . Consultado el 2 de agosto de 2014 .
  16. ^ "facebook / hhvm: Inicio" . github.com . Facebook . 8 de mayo de 2014 . Consultado el 2 de agosto de 2014 .
  17. ^ Cade Metz (20 de marzo de 2014). "Facebook presenta 'Hack', el lenguaje de programación del futuro" . Cableado . Consultado el 15 de abril de 2014 .
  18. ^ Julien Verlaguet; Alok Menghrajani (abril de 2014). "Hack: un nuevo lenguaje de programación para HHVM" . code.facebook.com . Facebook . Consultado el 23 de marzo de 2014 .
  19. ^ Josh Lockhart (3 de abril de 2014). "Hack de Facebook, HHVM y el futuro de PHP" . O'Reilly Media . Consultado el 2 de agosto de 2014 .
  20. ^ "Hack y HHVM: Escriba anotaciones (Manual de Hack)" . docs.hhvm.com . Consultado el 25 de marzo de 2014 .
  21. ^ "Hack y HHVM: Type Inference (Hack Manual)" . docs.hhvm.com . Archivado desde el original el 26 de marzo de 2014 . Consultado el 25 de marzo de 2014 .
  22. ^ "Hack y HHVM: Funciones PHP no compatibles en Hack (Hack Manual)" . docs.hhvm.com . Consultado el 2 de abril de 2014 .
  23. ^ Krill, Paul (20 de septiembre de 2017). "¡Olvídese de PHP! El motor HHVM de Facebook cambia a Hack" . InfoWorld . Consultado el 6 de febrero de 2019 .
  24. ^ "Somos el 98,5% (y el 16%)" . hhvm.com . 19 de diciembre de 2013 . Consultado el 2 de agosto de 2014 .

Enlaces externos [ editar ]

  • Página web oficial