April 6 '95 Seminar Minutes


About 25 people attended the seminar.

10:00 Olin Shivers, scsh: a Scheme shell

Unix shells, such as sh or csh, are real programming languages. They have variables, if/then conditionals, and loops. But they are terrible programming languages: clumsy, limited, awkward and inefficient. However, a shell does have one major redeeming feature: its compact and powerful notation for controlling processes.

I have designed and implemented a new shell, scsh, that provides the same convenient process-control notation expected of shells. However, as scsh is embedded completely within the programming language Scheme, it is a far more powerful language for writing shell scripts. Being embedded in an industrial-strength programming language allows scsh to simultaneously offer both the high-level process control typically associated with Unix shells, and the full, low-level access to the kernel typically associated with languages such as C. Scsh's ability to span this abstraction spectrum is due entirely to its being realised within the Scheme framework.

In the talk, I will describe scsh, discuss its design principles, show how the various features of Scheme affected the design of the system, and discuss how different languages, such as Common Lisp or ML, might have affected the design in different ways.

11:30 Andrew Wright, Polymorphic Flow Analysis

We describe a simple program analysis framework for computing control-flow in untyped higher-order languages. The framework supports a novel approximation method called polymorphic splitting that uses let-expressions as syntactic clues to control precision. Unlike call-string based approximations, information about polymorphic procedures is preserved regardless of the structure of the dynamic call chain linking a procedure's definition to its use. Initial experimental results indicate that polymorphic splitting has relatively low computational overhead, and typically leads to more precision than practical call-string approximations. We present preliminary results derived from an implementation of the analysis for Scheme.

This is joint work with Suresh Jagannathan.

2:00 John H. Reppy, eXene -- A Multi-threaded User Interface Toolkit

User interfaces and interactive applications have a natural concurrent structure, but unfortunately, most conventional UI toolkits do not adequately address this concurrency. For a number of years, we have been experimenting with a multi-threaded toolkit for the X Window System. This toolkit, called eXene, is designed from the ground up to both support and exploit the natural concurrency that arises in interactive applications. EXene is implemented directly on top of the X Protocol using the higher-order concurrent language CML (Concurrent ML). This talk will describe the architecture of eXene, and give examples of the use of concurrency in eXene's implementation and in applications built on top of eXene.

This is joint work with Emden Gansner.