Saturday, April 4, 2009

March Madness

March has come and gone. and rphp advanced a little more.

LLVM 2.5, released in early March, is now supported. As we ended up in the release notes (thanks Chris!), a few people were interested in trying to compile an early version. To make this easier, we switched to using environment variables so that rphp can find its library files, and updated the docs on the wiki.

A new rphp specific test suite was also added. This is based on the pcc (classic) testsuite. It only contains two tests so far, but does test both JIT interpreted and native compiled binaries. This will help prevent regressions as the code undergoes heavy development.

The biggest item that made it in to code generation was basic user defined functions. These now work up to arity 5 (excluding passing by reference, type hints, defaults... ).

Attention also turned back to the runtime. Hash tables now take unicode keys. We switched back to using the ICU UnicodeString as the main unicode string object in the runtime. The header files went through a large cleanup, and received some much needed documentation (more left to do here). Some basic benchmarks were added to examine the speed of runtime variable creation and destruction.

x86-64 is now supported and tested in the build, runtime, and compiler. Both JIT and native compilation work.

Finally, the ASIO networking library headers and a sample HTTP server were added as the base for the microserver and HTTP frontend.

In other news, the unladen-swallow project was announced. This is good news for rphp, as they plan to work on several projects that Roadsend PHP can benefit from, including a new garbage collector and thread-safe code generation in LLVM.