Abstract, The program transformation principle called partial evaluation has interesting applications in compilation and compiler generation. Self-applicable partial evaluators may be used for transforming interpreters into corresponding compilers and even for the generation of compiler generators. This is useful because interpreters are significantly easier to write than compilers, but run much slower than compiled code. A major difficulty in writing compilers (and compiler generators) is the thinking in terms of distinct binding times: run time and compile time (and compiler generation time). The paper gives an introduction to partial evaluation and describes a fully automatic though experimental partial evaluator, called mix, able to generate stand-alone compilers as well as a compiler generator. Mix partially evaluates programs written in Mixwell, essentially a first-order subset of statically scoped pure Lisp. For compiler generation purposes it is necessary that the partial evaluator be self-applicable. Even though the potential utility of a self-applicable partial evaluator has been recognized since 1971, a 1984 version of mix appears to be the first successful implementation. The overall structure of mix and the basic ideas behind its way of working are sketched. Finally, some results of using a version of mix are reported.Since the early 1970s it has been k n o w n that in theory, the p r o g r a m transformation principle called partial evaluation can be used for compiling and compiler generation, and even for the a u t o m a t i c generation o f a compiler generator. A partial evaluator able to generate stand-alone compilers and compiler generators had not, however, been successfully implemented before 1984 when the first mix system was brought to work at the University o f Copenhagen.In this paper we discuss partial evaluation and its applications to compiler generation and sketch the partial evaluator we developed, called the mix system. The results we report are sufficiently r e m a r k a b l e to justify further research into using partial evaluation for compiler generation purposes. We also mention other applications. The description here is essentially a snapshot of the mix system and its applications as of early 1987.A partial evaluator m a y be thought of as a " s m a r t interpreter." If an ordinary interpreter is given a p r o g r a m and only part o f this p r o g r a m ' s input data, it will leave * Current address: