On 04/05/11 14:07, Daniel Friesen wrote:
> I'm fairly certain myself that his intention was "With HipHop support
> since the C that HipHop compiles PHP to can be extracted and re-used we
> can turn that compiled C into a C library that can be used anywhere by
> abstracting the database calls and what not out of the php version of
> the parser. And because HipHop has better performance we will no longer
> have to worry about parser abstractions slowing down the parser and as a
> result increasing the load on large websites like Wikipedia where they
> are noticeable. So that won't be in the way of adding those abstractions
> anymore."

Yes that's right, more or less. HipHop generates C++ rather than C
though.

Basically you would split the parser into several objects:

* A parser in the traditional sense.
* An output callback object, which would handle generation of HTML or
PDF or syntax trees or whatever.
* A wiki environment interface object, which would handle link
existence checks, template fetching, etc.

Then you would use HipHop to compile:

* The new parser class.
* A few useful output classes, such as HTML.
* A stub environment class which has no dependencies on the rest of
MediaWiki.

Then to top it off, you would add:

* A HipHop extension which provides output and environment classes
which pass their calls through to C-style function pointers.
* A stable C ABI interface to the C++ library.
* Interfaces between various high level languages and the new C
library, such as Python, Ruby and Zend PHP.

Doing this would leverage the MediaWiki development community and the
existing PHP codebase to provide a well-maintained, reusable reference
parser for MediaWiki wikitext.

-- Tim Starling


_______________________________________________
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to