HipHop Virtual Machine ( HHVM ) es una máquina virtual de código abierto basada en compilación justo a tiempo (JIT) que funciona como motor de ejecución para el lenguaje de programación Hack . Mediante el principio de compilación JIT, el código Hack se transforma primero en bytecode intermedio HipHop ( HHBC ), que luego se traduce dinámicamente a código máquina x86-64 , se optimiza y se ejecuta de forma nativa. [ 7 ] [ 8 ] Esto contrasta con la ejecución interpretada habitual de PHP , en la que Zend Engine transforma el código fuente de PHP en opcodes que funcionan como una forma de bytecode y ejecuta los opcodes directamente en la CPU virtual de Zend Engine . [ 9 ]
HHVM es desarrollado por Meta , con el código fuente del proyecto alojado en GitHub ; [ 10 ] está licenciado bajo los términos de la Licencia PHP y la Licencia Zend . [ 1 ] [ 6 ]
Descripción general
HHVM se creó como sucesor del motor de ejecución de PHP HipHop for PHP (HPHPc), que es un transpilador de PHP a C++ también creado por Facebook. [ 11 ] [ 12 ] Basándose en la experiencia adquirida y con el objetivo de resolver los problemas introducidos por HPHPc, Meta decidió a principios de 2010 crear una máquina virtual de PHP basada en JIT . Los problemas asociados con HPHPc incluían alcanzar un estancamiento para mayores mejoras de rendimiento, una incapacidad fundamental para admitir todas las características del lenguaje PHP y dificultades derivadas de procesos de desarrollo e implementación específicos que consumían tiempo y recursos. [ 11 ] 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 ejecutado en un lenguaje intermedio , el código de bytes de alto nivel HHBC. HHBC es un formato de código de bytes creado específicamente para HHVM, adecuado para su uso tanto por intérpretes como por compiladores justo a tiempo. A continuación, HHVM traduce dinámicamente ("justo a tiempo") el HHBC a código máquina x86-64, optimizado mediante el análisis dinámico del código de bytes traducido. Finalmente, ejecuta el código máquina x86-64. [ 1 ] [ 11 ] [ 13 ] Como resultado, HHVM tiene ciertas similitudes con las máquinas virtuales utilizadas por otros lenguajes de programación, incluyendo Common Language Runtime (CLR, para el lenguaje C# ) y la máquina virtual de Java (JVM, para el lenguaje Java ).
HHVM ofrece muchas ventajas en comparación con HPHPc. HHVM utiliza el mismo motor de ejecución tanto en entornos de producción como de desarrollo, y admite la integración entre el motor de ejecución y el depurador HPHPd en ambos tipos de entornos; como resultado, ya no es necesario mantener HPHPi (intérprete de HipHop) por separado como una utilidad de desarrollo, como ocurría con HPHPc. HHVM también elimina las largas compilaciones que requería HPHPc para ejecutar programas, lo que resulta en procesos de desarrollo e implementación mucho más sencillos que con HPHPc. [ 1 ] Finalmente, las versiones de HHVM anteriores a la 4.0 tienen soporte casi completo para todo el lenguaje PHP (tal como lo define la implementación oficial de PHP versión 5.4), incluido el soporte para las construcciones y , lo cual era imposible con HPHPc. [ 14 ] [ 15 ]create_function()eval()
Junto con HHVM 3.0, [ 16 ] Meta también lanzó Hack , un derivado de PHP [ 17 ] [ 18 ] que permite a los programadores usar tanto tipado dinámico como tipado estático (un concepto también conocido como tipado gradual ), y permite especificar tipos para argumentos de funciones , valores de retorno de funciones y propiedades de clases . Sin embargo, Hack no proporciona compatibilidad retroactiva completa ya que elimina varias características de PHP, como la instrucción y los nombres de variables dinámicos . [ 19 ] [ 20 ] [ 21 ] [ 22 ]goto
En septiembre de 2017, se anunció que la versión 3.30 sería la última versión de HHVM en admitir oficialmente PHP, y que HHVM solo admitiría Hack en adelante. [ 23 ] Esto se debió a diferencias e incompatibilidades en PHP 7. [ 24 ] HHVM 4.0, lanzado en febrero de 2019, fue la primera versión sin soporte para PHP. [ 25 ]
Actuación
Como máquina virtual de procesos que proporciona el entorno de ejecución, HHVM tiene la capacidad de usar información de tipos en vivo para producir código nativo más eficiente , lo que resulta en 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 alcanzó la paridad de rendimiento con HPHPc, [ 11 ] y en diciembre de 2013 HPHPc incluso fue superado en aproximadamente un 15%. [ 26 ]
Véase también
Notas
- ↑ Solo las utilidades de línea de comandos y demonios de verificación de tipos ( hh_server y hh_client ) y formateo de código ( hh_format )de Hack , agrupados con la máquina virtual HipHop, están escritos en OCaml .
Referencias
- 1 2 3 4 Jason Evans (9 de diciembre de 2011). "La máquina virtual del hip hop" . Meta Platforms . Recuperado el 2 de agosto de 2014 .
- ↑ "Versión 3.15.0" . 28 de septiembre de 2016. Consultado el 13 de marzo de 2018 .
- ↑ "Compilación e instalación de HHVM en CentOS 7.x" . github.com . Meta Platforms . 26 de mayo de 2015. Consultado el 12 de junio de 2015 .
- ↑ "Construyendo el verificador de tipos Hack" . github.com . Meta. 10 de septiembre de 2014. Consultado el 12 de junio de 2015 .
- ↑ "HHVM de Facebook comienza a recibir una reescritura en Rust - Phoronix" . Consultado el 29 de agosto de 2019 .
- 1 2 "facebook/hhvm: Licencia" . github.com . Facebook, Inc. Recuperado el 2 de agosto de 2014 .
- ↑ Ottoni, Guilherme (20 de junio de 2018). "HHVM JIT: Un compilador basado en regiones y 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 .
- ↑ "facebook/hhvm" . github.com . Meta Platforms . Consultado el 2 de agosto de 2014 .
- ↑ Kaushik Pal (28 de abril de 2014). "PHP y Zend Engine Internals" . phpbuilder.com . Archivado del original el 15 de septiembre de 2014. Consultado el 23 de septiembre de 2014 .
- ↑ Código fuente de HHVM en GitHub
- 1 2 3 4 Drew Paroski (29 de noviembre de 2012). "Acelerando el desarrollo basado en PHP con HHVM" . Meta Platforms . Recuperado el 2 de agosto de 2014 .
- ↑ "Anuncio en GitHub sobre la eliminación del soporte para HPHPc" . github.com . Meta Platforms . 19 de febrero de 2013. Consultado el 24 de mayo de 2013 .
- ↑ "HipHop Bytecode v1 revisión 18" . github.com . Meta Platforms . 31 de julio de 2014. Consultado el 24 de mayo de 2013 .
- ↑ "facebook/hhvm: Acerca de la actualización al motor PHP 5.4" . github.com . Mayo de 2013. Consultado el 2 de agosto de 2014 .
- ↑ "facebook/hhvm: Inicio" . github.com . Meta Platforms . 8 de mayo de 2014. Consultado el 2 de agosto de 2014 .
- ↑ Paul Tarjan (28 de marzo de 2014). "HHVM 3.0.0" . Facebook . Consultado el 26 de diciembre de 2022 .
- ↑ Cade Metz (20 de marzo de 2014). "Facebook presenta 'Hack', el lenguaje de programación del futuro" . Wired . Consultado el 15 de abril de 2014 .
- ↑ 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 .
- ↑ Josh Lockhart (3 de abril de 2014). "El hackeo de Facebook, HHVM y el futuro de PHP" . O'Reilly Media . Consultado el 2 de agosto de 2014 .
- ↑ "Hack y HHVM: Anotaciones de tipo (Manual de Hack)" . docs.hhvm.com . Consultado el 25 de marzo de 2014 .
- ↑ "Hack y HHVM: Inferencia de tipos (Manual de Hack)" . docs.hhvm.com . Archivado del original el 26 de marzo de 2014. Consultado el 25 de marzo de 2014 .
- ↑ "Hack y HHVM: Funcionalidades de PHP no compatibles en Hack (Manual de Hack)" . docs.hhvm.com . Archivado del original el 4 de noviembre de 2015. Consultado el 2 de abril de 2014 .
- ↑ Fred Emmott (12 de septiembre de 2018). "Fin del soporte para PHP y el futuro de Hack" . Consultado el 26 de diciembre de 2022 .
- ↑ Krill, Paul (20 de septiembre de 2017). "¡Olvídate de PHP! El motor HHVM de Facebook se cambia a Hack" . InfoWorld . Consultado el 6 de febrero de 2019 .
- ↑ Fred Emmott (11 de febrero de 2019). "HHVM 4.0.0" . Consultado el 26 de diciembre de 2022 .
- ↑ "Somos el 98,5% (y el 16%)" . hhvm.com . 19 de diciembre de 2013. Consultado el 2 de agosto de 2014 .
Enlaces externos
- Software de 2011
- Software libre programado en C++
- Software libre programado en Rust.
- Software de Facebook
- Compiladores libres y de código abierto
- Software libre programado en OCaml
- Software libre programado en PHP
- Software que utiliza la licencia PHP.
- Máquinas virtuales basadas en pila