-----Original Message----- From: wikitech-l-bounces@lists.wikimedia.org [mailto:wikitech-l-bounces@lists.wikimedia.org] On Behalf Of Domas Mituzas Sent: 01 March 2010 10:11 To: Wikimedia developers Subject: [Wikitech-l] hiphop progress
Howdy,
Most of the code in MediaWiki works just fine with it
(since most of
it is mundane) but things like dynamically including certain
files,
declaring classes, eval() and so on are all out.
There're two types of includes in MediaWiki, ones I fixed for AutoLoader and ones I didn't - HPHP has all classes loaded, so AutoLoader is redundant. Generally, every include that just defines classes/functions is fine with HPHP, it is just some of MediaWiki's startup logic (Setup/WebStart) that depends on files included in certain order, so we have to make sure HipHop understands those includes. There was some different behavior with file including - in Zend you can say require("File.php"), and it will try current script's directory, but if you do require("../File.php") - it will
We don't have any eval() at the moment, and actually there's a mode when eval() works, people are just scared too much of it. We had some double class definitions (depending on whether certain components are available), as well as double function definitions ( ProfilerStub vs Profiler )
One of major problems is simply still not complete function set, that we'd need:
- session - though we could sure work around it by setting up
our own Session abstraction, team at facebook is already busy implementing full support
- xdiff, mhash - the only two calls to it are from
DiffHistoryBlob - so getting the feature to work is mandatory for production, not needed for testing :)
Mhash been obsoleted by the hash extension, and HipHop has the hash extension (looking at the src).
I think mhash is implemented as a wrapper onto the hash extension for a while. (http://svn.php.net/viewvc?view=revision&revision=269961)
assert(hash('adler32', 'foo', true) === mhash(MHASH_ADLER32, 'foo'));
Jared