HipHop Virtual Machine ( HHVM) is an open-source virtual machine based on just-in-time (JIT) compilation that serves as an execution engine for the Hack programming language. By using the principle of JIT compilation, Hack code is first transformed into intermediate HipHop bytecode ( HHBC), which is then dynamically translated into x86-64 machine code, optimized, and natively executed. This contrasts with PHP's usual interpreted execution, in which the Zend Engine transforms PHP source code into that serve as a form of bytecode, and executes the opcodes directly on the Zend Engine's virtual CPU.
HHVM is developed by Meta Platforms, with the project's source code hosted on GitHub; HHVM source code on GitHub it is licensed under the terms of the PHP License and Zend License.
Following the JIT compilation principle, HHVM first converts the executed code into an intermediate language, the high-level bytecode HHBC. HHBC is a bytecode format created specifically for HHVM, appropriate for consumption by both interpreters and just-in-time compilers. Next, HHVM dynamically ("just-in-time") translates the HHBC into x86-64 machine code, optimized through dynamic analysis of the translated bytecode. Finally, it executes the x86-64 machine code. As a result, HHVM has certain similarities to the virtual machines used by other programming languages, including the Common Language Runtime (CLR, for the C# language) and Java virtual machine (JVM, for the Java language).
HHVM brings many benefits in comparison with HPHPc. HHVM uses the same execution engine when deployed in both production and development environments, while supporting integration between the execution engine and the HPHPd debugger in both environment types; as a result, maintaining HPHPi (HipHop interpreter) separately as a development utility is no longer needed as it was the case with HPHPc. HHVM also eliminates the lengthy Software build required by HPHPc to run programs, resulting in much simpler development and deployment processes than it was the case with HPHPc. Finally, versions of HHVM before 4.0 have almost complete support for the entire PHP language (as defined by the official implementation of PHP version 5.4), including the support for the create_function() and eval() constructs, which was impossible with HPHPc.
Together with HHVM 3.0, Meta also released Hack, a derivative of PHP that allows programmers to use both dynamic typing and static typing (a concept also known as gradual typing), and allows Data type to be specified for function arguments, function , and class properties. However, Hack does not provide complete backward compatibility since it removes several PHP features, such as the [[goto]] statement and dynamic variable names.
In September 2017, it was announced that version 3.30 would be the last version of HHVM to officially support PHP, and that HHVM will only support Hack going forward. This was due to differences and incompatibilities in PHP 7. HHVM 4.0, released in February 2019, was the first version without support for PHP.
|
|