HHVM is a an open-source virtual machine designed for executing programs written in PHP. HHVM uses a just-in-time compilation approach to achieve superior performance while maintaining the flexibility and ease of use that PHP developers are accustomed to (dynamic features like eval(), rapid run-edit-debug cycle, etc).
HHVM is used by Facebook to serve billions of web requests per day. To date, HHVM has realized over a 9x increase in web request throughput and over a 5x reduction in memory consumption for Facebook compared with the Zend PHP 5.2 engine + APC.
You can learn more going through our wiki.
The overarching goal of this project is to make HHVM more compatible with existing PHP codebases. The main focus will be on popular PHP frameworks. A good way to start is to fix exiting issues that other people have ran into. You can focus on just Zend incompatibilities or look at all our open issues. We have a framework test script that you can run to see unit test passing rates for each framework. Check the HHVM blog on how to use it or ask us in IRC.
The project is written in C++ sprinkled with x86 assembly and PHP. If you are writing extention code, you will be working in PHP and C++ mostly, it is only if you do code-generation that assembly will come up.
More information on getting started is available here.
Students will be getting continuos feedback in the form of code review and discussions with the mentor(s). We all hang out on IRC in #hhvm on freenode.
The primary evaluation criteria:
- Do new unit tests pass that didn't pass before?
- Do new frameworks work and install that didn't before?
- Are some PHP APIs supported that wern't before?
- Is some language feature more compliant in HHVM than it was before?
- Does HHVM not segfault in some case it did before?