Dynamic Specialization in the Fabius System Mark Leone and Peter Lee ACM Computing Surveys, Vol. 30, No. 3es 1998 Symposium on Partial Evaluation Edited by Olivier Danvy, Robert Gluck, and Peter Thiemann Opportunities for specialization abound during program execution. Dynamic specialization exploits run-time values that are not available at compile time, yielding code that is often superior to statically optimal code. This paper surveys the design of the Fabius compiler, which achieves dynamic specialization with low overhead through the use of generating extensions that create native residual code. One novel aspect of Fabius is its ability to achieve multiple stages of dynamic specialization: the execution of dynamically specialized code yields values that can be used in successive rounds of specialization. We demonstrate that decoupling binding times at procedure call boundaries allows multi-stage specialization to be expressed in a two-level language.