archives

SSA vs. CPS (and ANF?)

If SSA and CPS (and ANF?) are provably equivalent, why does SSA seem much more popular than CPS in current language compiler implementation?

Any info, history, background, pointers to other discussions, etc. greatly appreciated.

Also, what is the current "state of the art" for CPS conversion? I think my resources - "Compiling with Continuations" and a 90's edition of EOPL - are quite dated. Moreover, I'd *love* to study a good treatment of CPS conversion and optimization that handles assignment.

Many thanks.

Fully-parameterized, first-class modules with hygienic macros

Fully-parameterized, first-class modules with hygienic macros, dissertation by Martin Gasbichler, 2006.

It is possible to define a formal semantics for configuration, elaboration, linking, and evaluation of fully-parameterized first-class modules with hygienic macros, independent compilation, and code sharing. This dissertation defines such a semantics making use of explicit substitution to formalize hygienic expansion and linking. In the module system, interfaces define the static semantics of modules and include the definitions of exported macros. This enables full parameterization and independent compilation of modules even in the presence of macros. Thus modules are truly exchangeable components of the program. The basis for the module system is an operational semantics for hygienic macro expansion - computational macros as well as rewriting-based macros. The macro semantics provides deep insight into the nature of hygienic macro expansion through the use of explicit substitutions instead of conventional renaming techniques. The semantics also includes the formal description of Macro Scheme, the meta-language used for evaluating computational macros.

A very readable, interesting, and useful work.