- Add ReqBindJmp, and ReqBindJmpCond instructions which emit service
requests.
- GuardLoc/GuardStk always imply cross-trace control flow
- New CheckLoc/CheckStk instructions imply inside-of-trace
control flow.
- Renamed GuardType to CheckType to match this convention (we were
loosly following it in the api to irtranslator, so I spread it
through everything)
- Check{Loc,Stk} can be optimized into SideExitGuard{Stk,Loc}
- Reimplement jumpopts using this:
- Check{Loc,Stk} branching to a "normal exit" can turn into
a SyncABIRegs; SideExitGuard{Loc,Stk}.
- A conditional jump to a normal exit followed by another normal
exit turns into SyncABIRegs; ReqBindJmpFoo.
- Remove the ExitTraceFoo instructions.
- Remove IRInstruction::{get,set}TCA.
- Remove order dependence in the ir.h enum. (bsimmers has some
ideas about generic branch fusion that would reduce the
duplication there wrt this new set of similar op names; we
discussed it and for now it seemed ok to have a whole ReqBindJmp*
family, though.)
- Fix the creation of unused REQ_BIND_JMPs in astubs. I think there
was also unused dead jumps-to-fallbacks in astubs due to the (now
unneeded) guard-hoisting optimizations, but I haven't verified.
- Some random cleanup along the way (adding consts to members,
comments, removed some weird functions in codegen, etc).
HipHop VM for PHP 
HipHop VM (HHVM) is a new 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 that PHP developers are accustomed to. HipHop VM (and before it HPHPc) has realized > 5x increase in throughput for Facebook compared with Zend PHP 5.2.
HipHop is most commonly run as a standalone server, replacing both Apache and modphp.
Installing
You can install a prebuilt package or compile from source.
Running
You can run standalone programs just by passing them to hhvm: hhvm my_script.php.
HipHop bundles in a webserver. So if you want to run on port 80 with document root /var/www:
sudo hhvm -m server /var/www
For anything more complicated, you'll want to make a config.hdf and run sudo hhvm -m server -c config.hdf.
Contributing
We'd love to have your help in making HipHop better. If you run into problems, please open an issue, or better yet, fork us and send a pull request.
If you want to help but don't know where to start, try fixing some of the Zend tests that don't pass. You can run them with hphp/test/run. When they work, move them to zend/good and send a pull request.
Before changes can be accepted a Contributors Licensing Agreement must be signed.
Licence
HipHop VM is licensed under the PHP and Zend licenses except as otherwise noted.