Subst Rewrite

Updated May 25, 2018

The current implementation of Subst() in SCons yields a recursive exponential runtime due to its implementation details.

The rewrite would address these issues by: a) Pre-Tokenizing strings when they are set b) Caching resulting generated strings if appropriate b) Always calculating all versions of the generated string/lists (For signature, Raw, and for command line)