wiki:PythonPort
Last modified 11 years ago Last modified on 07/27/09 14:00:03

Boost.Build V2 python port

This page describes porting of Boost.Build to Python. This page is only of interest of developers willing to help with the port.

Why?

Boost.Build V2 is mostly implemented in the interpreted language of the underlying build tool, and it has a number of problems:

  • No user knows that language, making it hard to extend Boost.Build or become new developer.
  • The language is strange at times, and not very nicely documented.
  • There's no standard libraries, so every new functionality should be implemented from scratch
  • The only data structure in the language is list of strings. This makes many tests cumbersome, and leads to excessive memory consumption and poor performance on some workloads.

How?

The Python port is mostly 1:1 translation, with only mechanical changes. The language used to describe targets will not change, and the Boost.Build testsuite won't be altered. The port will be declared complete when all files are ported, and all tests pass using ported version.

Hacking and trying

The Python port is in Boost SVN, in the same location where the rest of Boost.Build is: http://svn.boost.org/svn/boost/trunk/tools/build/v2. Python files are located alongside the corresponding jam files. If you're a Boost developer, for read-write checkout, use the "https" scheme when checking out the source.

See PythonPort/Quickstart for getting up and running.

The PythonPort/Design page documents the design decision specific to the python port, as well as important parts of pre-existing design.

The PythonPort/Process documents how the porting is performed.

The PythonPort/Status has high-level status overview.

Help with this project is most appreciated. If you would like to help, glance on the above documents, pick a module that's not ported yet, and join the fun.