Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Clone this wiki locally
How do I contribute to HHVM?
We are trying to make contributing to HHVM as painless as possible.
What is the HHVM team currently working on?
The HHVM teams is currently working on two primary areas: performance and parity. HHVM performance is a continuous effort given Facebook's scale. Parity and compatibility has become an extremely high priority for the HHVM team. Tactically, parity currently consists of ensuring that HHVM does not fail when running many of the popular PHP frameworks.
I want to port extensions to HHVM. How do I do that?
Where are ported extensions located in the codebase?
What is the process for committing code to HHVM?
Code is committed to HHVM via pull requests. After you provide a pull request, it gets imported into Phabricator and the HHVM team will review the changes and either accept the diff or ask for further updates or clarifications. Once the pull request is accepted, it is pushed and landed into the HHVM source base.
We are looking to see if it is possible to make this process more direct moving forward.
How do I test code that I write for HHVM?
Tests are written in the same format as Zend PHP.
A test is generally put in the
hphp/test/slowdirectory and run with the test runner script
hphp/test/run/ test/slowruns all the tests in the slow directory).
See the test readme for further information.
How to attach GDB to the HHVM Server process?
gdb --argsto your
hhvmstart command, e.g.
$ gdb --args /usr/local/etc/dev/hhvm/hphp/hhvm/hhvm --mode server -vServer.Type=fastcgi -vServer.Port=9000
Where are the technical specifications for the HHVM runtime (e.g., bytecode spec)?
All of the HHVM technical specifications are located in the
hphp/docdirectory. Some specifications of interest are:
I need a feature, but don't know how to implement it? What can I do to get this feature into HHVM?
Please submit an issue. HHVM team or someone else might want to implement it, if the feature is reasonable and the implementation is good enough, it could mostly be merged.