23rd, 2009 and Last commit Jan 21st, 2015 (~ 6 years) for PHP 5.6 First release by tag 1.0.1 at Aug 20th, 2009, and last release by tag 1.6.0 XHP Class Library at repo: https://github.com/facebook/xhp-lib Wiki: https://github.com/facebook/xhp-lib/wiki/
version by tag 1.7.1 Compilable Zend Engine v3.0.0 and Syntax supported to PHP 7.0 Scanner and Parser decouple, create new function xhp_token_get_all and xhp_token_name Enabled by using <?hh Production already used at http://www.liputan6.com
PHP lexer using re2c, but XHP using flex Both PHP and XHP parser using bison Text concatenation using __gnu_cxx rope algorithm (non-generic STL alternate of std::string) PHP XHP Extension that hooks the zend API zend_compile_file and use XHP Preprocess that convert XHP syntax into valid PHP syntax.
(array(‘href’ => “m.liputan6.com”), array( xhp_children ’Liputan6’ ( [T_XHP_TAG_LT] < [/] [T_XHP_LABEL] a [T_XHP_TAG_GT] >) -> xhp_tag_close (validate if close tag match ‘a’)
Other compiler like Clang ( Apple), and VC (Microsoft) should use std::string which may degrade performance, see: https://gist.github.com/josephg/3474848 Refer to C++ FQA http://yosefk.com/c++fqa/ it may be better to use C as PHP source and its extension also in C. Prefer re2c than flex which may help developer to learn both PHP and XHP lexer faster. Use ZendMM API instead C/C++ default malloc or __gnu_cxx::__pool_alloc<char> The output and input line number __LINE__ should be equal to help debugging. Thanks. --