On 06/12/2014 02:31 PM, Dicebot wrote:
Compiler can cache return value of function that get called from inside
mixin statement (for a given argument set). As CTFE is implicitly pure
(no global state at compile-time) later generated code can be simply
re-used for same argument set.
Re-using it between compiler invocations is more tricky because it is
only legal if generator function and all stuff they indirectly use have
not changed too. Ignoring this requirement can result in nasty build
issues that are only fixed by clean build. Too harmful in my opinion.
Clearly, nirvana is continuous compilation, where the compiler performs
explicit dependency management at the level of nodes in the syntax tree.