-
Notifications
You must be signed in to change notification settings - Fork 3k
FAQ
This FAQ is for contributors. The HHVM general and user FAQ are on the official Hack and HHVM docs site.
We are trying to make contributing to HHVM as painless as possible.
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.
Depending on whether the extensions are written in C++ or PHP, ported extensions can be found in
/hphp/runtime/ext
orhphp/system/php
, respectively.
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.
Tests are written in the same format as Zend PHP.
A test is generally put in the
hphp/test/slow
directory and run with the test runner scripthphp/test/run
(e.g.,hphp/test/run/ test/slow
runs all the tests in the slow directory).
See the test readme for further information.
Prepend
gdb --args
to yourhhvm
start command, e.g.
$ gdb --args /usr/local/etc/dev/hhvm/hphp/hhvm/hhvm --mode server -vServer.Type=fastcgi -vServer.Port=9000
All of the HHVM technical specifications are located in the
hphp/doc
directory. Some specifications of interest are:
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.