[Scons-dev] Schedule for redesign?

Dirk Bächle tshortik at gmx.de
Sun Oct 27 06:02:38 EDT 2013


Hi,

over the last few days I had another look at SCons' speed and memory
problems. As posted in an earlier email, I am able to reduce the maximum
amount of memory used during runtime (both, clean and update builds) by
up to 50% in large C/CPP projects.
This is reached by freeing infos in the Node class itself, when they
aren't needed anymore after a target is built/visited.

Having identified a set of Node attributes like this, somewhat lends
itself to refactoring them out into its own class (TargetInfo?). There
has always been some rumor about a redesign of the Node classes and the
Taskmaster, which is what this is pretty much about...although not in a
very broad range.

What I'd like to do (and actually already started in a private branch)
is to refactor a few classes and imports, like follows:

- move the GetOption/SetOption/FakeOptionParser stuff out of
SCons.Script.Main into SCons.Options (have this ready)
- move the Task classes (Clean/AlwaysBuild/...) out of the
SCons.Taskmaster into their own module SCons.Tasks (ready, too)
- move the Node attributes mentioned above into their own class
SCons.TargetInfo (tbd)

In effect, funtionality gets shifted to where it belongs conceptually,
and not where it is "needed". This might make access to certain parts a
little more complicated, in the sense that one more often needs to
delegate things or distribute information like option flags to several
places. But it also makes the design overall easier to grasp and
explain...at least in my opinion.

Now my question (see the title): When would this fit into our current
development schedule? Should I just go ahead and propose one (or
several) pull requests, or wait until the Python 2to3 conversion is over
and things have settled. Do you think we need a special deprecation
cycle for this, or maybe even should switch the version number to 3.x then?

Your comments are welcome...

Best regards,

Dirk



More information about the Scons-dev mailing list