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