Tuesday, December 2, 2008

Project Raven

We've been working for a few months now on a project that we're ready to take the wraps off of a bit. It's ambitious, but Roadsend PHP always has been.

We've started a complete rewrite of Roadsend PHP. The rewrite will address some of the problems we've had with the old code base, and hopefully open up the project to a wider range of programmers who would like to contribute.

The new code base is written in C++ and uses LLVM for code generation. LLVM stands for Low Level Vritual Machine and provides a complete set of tools that allow us to implement a highly optimized code generator, JIT and static (native) compiler. For more information, see the LLVM website.

We're also relying on the Boost C++ libraries. These are well know, portable, peer-reviewed libraries providing lots of the low level functionality needed for the runtime. See the Boost website for details.

Rounding out the major third-party libraries we've chosen is ICU: International Components for Unicode. This library provides all the necessary tools for full unicode and internationalization support.

Some of the goals of this rewrite include:
  • Highly optimized code generation
  • Full unicode support
  • Latest PHP language features (namespaces, lamda functions, etc)
  • Clean, easy runtime API
  • Portability
In the current codebase, most of the major components are in place. Simple scripts can be compiled statically (native binaries) or run through the JIT. Full unicode parsing is in place. Most major runtime components have been started.

You can checkout or browse the codebase at the new development site:
http://code.roadsend.com/rphp

We're looking for contributors so if you'd like to help, please speak up! You can find us in #roadsend on FreeNode IRC.