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
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.