A Low-level Approach to Reuse
To implement new programming languages for current machines---or current languages for new machines---requires expensive infrastructure. Ideally, such infrastructure would be reused, but existing designs present major obstacles to reuse: In high-level infrastructures, many important features are built in and can't be changed, forcing some clients to pay unacceptable costs. In low- level infrastructures, it is hard to support important features that demand *run-time* services, such as garbage collection, exceptions, and so on.
My students and I have pioneered a new approach: for reuse with many languages, an infrastructure needs *two* low-level interfaces: a compile-time interface and a *run-time* interface. By providing appropriate mechanisms, these interfaces enable a client of the infrastructure to implement high-level features in many different ways, giving the client the power to choose the semantics and costs of those features.
This talk will illustrate these ideas with a case study drawn from the infrastructure we have built: the C-- language infrastructure. I will focus on exception dispatch and the mechanisms that make it possible for you to choose the semantics and costs you want. These mechanisms are drawn from both compile-time and run-time interfaces, and together they can be reused to implement exceptions under any known cost model. Each mechanism is also reusable in other contexts. Finally, I will sketch how this research fits into a long- term program of developing asubstantial infrastructure that will help make it possible to run anylanguage efficiently on any machine.
Norman Ramsey began his research career in physics, a field in which he spent several years before deciding that engineering was more fun than science. After earning his PhD from Princeton in 1993, he spent several years in ``industrial research'' before returning to academia. He is currently Associate Professor of Computer Science at Harvard University. His research interests lie in compilers, languages, and tools for programmers. He has worked on a significant number of software tools, most recently the Quick C-- compiler, but he may be best known for his literate-programming tool ``Noweb.''