Many current software systems are built from extremely large and carefully optimised domain-specific libraries. Very often, the very large number of functions provided effectively represents a collection of specialised instances of more generic functions that have been optimised with respect to a particular calling context. Writing such libraries requires heroic efforts from implementors. We are interested in characterising to what extent the specialisation and optimisation work that is carried out when building large domain-specific libraries can be captured as independent, separate concerns in the form of "optimisation components" that can be applied to generic functions to produce instances that are optimised with respect to platform, calling context and parameters.
We are planning to use the TaskGraph Library as a tool for this research programme. The TaskGraph library is a C++ library for dynamic code generation, which combines specialisation with dependence analysis and restructuring optimisation. The TaskGraph Library is implemented purely in C++, and the internal representation used for representing generated code is SUIF-1. This talk will also describe how our understanding of such a metaprogramming tool has been influenced by the work of members of WG 2.11.