Showing posts with label Articles. Show all posts
Showing posts with label Articles. Show all posts
Saturday, August 30, 2014


Facebook's HHVM is an open-source virtual machine designed for executing programs written in Hack and PHP. HHVM uses a just-in-time (JIT) compilation approach to achieve superior performance while maintaining the development flexibility that PHP provides.

The JIT Compiler

Rather than directly interpret or compile PHP code directly to C++, HHVM compiles Hack and PHP into an intermediate bytecode. This bytecode is then translated into x64 machine code dynamically at runtime by a just-in-time (JIT) compiler. This compilation process allows for all sorts of optimizations that cannot be made in a statically compiled binary, thus enabling higher performance of your Hack and PHP programs.

HHVM is intended to achieve both parity with the Zend Engine features and best possible performances. Facebook claims a 3x to 10x speed boost and 1/2 memory footprint by switching from PHP+APC to HHVM. But that is of course really application dependent (10x being for the FB code base).

Perfomance Optimization with Hack

Hack is an evolution of the PHP language designed to be safer, to enable better performance and to improve developer efficiency. Following are some of the areas where it has improved PHP to give us more performance-wise:

Type Annotations

Hack supports type annotation, which tells the runtime engine explicitly that a value is of a specific type. Run-time enforcement of return types and parameter types help HHVM's JIT produce more efficient code by making it safe to trust type annotations for optimization purposes.

Collections

Collections can hold values of the same type. HHVM can generate native machine code that is optimized for storing and retrieving collection values of a specific type from the collection, thus resulting in better performance.

Friday, August 29, 2014
What is Hack?


Hack is a new programming language based on PHP. It is developed by Facebook and was announced recently on March 20, 2014. The syntax is basically the same as PHP, but underneath the hood there are a lot of features such as static typing, native collections, generics and more which PHP has been lacking. Hack allows programmers to use both dynamic typing as well as static typing. Hack is not PHP, as it runs only on Facebook’s HipHop Virtual Machine (HHVM), a competitor to the traditional PHP Zend Engine.

Why was Hack born?

Much of the internal code of Facebook was first written in PHP, since the language is notoriously easy to learn and use. Also, Facebook uses PHP language largely to attract new talent and increase developers efficiency.

However, PHP could not perform as well at a scale as large as Facebook’s. Reason being that PHP is a loosely typed language and type-related errors are not recognized until runtime. In order to solve this and other such problems, Hack was born. Facebook added strict typing feature and runtime-enforcement of return types to the new language. Strict typing nullifies the need for a lot of type-related unit tests and encourages developers to catch type-related errors sooner in the development process.

New Features

Comparison of PHP and Hack
Hack introduced many new features which are not present in the current PHP version. Some of those features were proposed to PHP over time but they were never accepted. These new features include type annotations, nullable types, generics, collections, lambdas and more. Hack takes advantage of HHVM (HipHop Virtual Machine) to execute the code faster.

Most existing code of PHP will run on Facebook’s HHVM engine. This is necessary because Facebook’s existing codebase is largely existing PHP code.

Hack code can be mixed with regular PHP code. To convert a PHP class to a Hack class, change the leading <?php to <?hh. That’s literally all that is necessary. This allows smooth migration between PHP and Hack code, so you can take advantage of Hack's additional features.