IU Programming Languages Research

Current programming language research at IU explores a variety of semantic and pragmatic issues and their relation to other areas of theory and application.

The work of Kent Dybvig, Dan Friedman, Amr Sabry, and Chris Haynes focuses on functional, object-oriented, dynamic, and symbolic programming mechanisms, often expressed via extensions and derivatives of the Scheme programming language. This work often involves formal methods of static program analysis, such as partial evaluation, abstract interpretation, and type systems. Through such methods, and imaginative engineering, one hopes to combine expressive abstraction mechanisms and efficient execution. A number of faculty have interests that tie programming language research with other areas of research.

Books

The Scheme Programming Language, Third Edition
The entire text, online.

Essentials of Programming Languages
Information, errata, and other materials related to this book.

Scheme and the Art of Programming
The code given in the book is available via anonymous FTP.

Projects

Syntactic abstraction
We have developed a powerful syntactactic abstraction system for Scheme that is compatible with the high-level macro system in the Revised^4 Report on Scheme. The article Syntactic abstraction in Scheme (LASC, 5(4), 1993) justifies the system and places it in perspective with other existing macro systems. Documentation can be found in either The Scheme Programming Language or The Chez Scheme User's Guide. The technical report Writing hygienic macros using syntax-case also describes the system. We have extended the system to support modules; this work is described in the paper Extending the Scope of Syntactic Abstraction. A portable implementation, based on the implementation used in Chez Scheme is also available.

Educational infrastructure (EI) project
This project involves developing software tools and pedagogy for using Scheme in the undergraduate curriculum. This project supported, among other things, the development of the Scheme Widget Library.

Scheme Widget Library
The Scheme Widget Library is a windowing and graphics library for Scheme supported by NSF through EI project. The most recent version can be downloaded from this page.

Memory management
This includes garbage collection, but more generally this encompasses all aspects of managing memory in run-time systems that dynamically allocate heap storage. There is a technical report that describes our system.

We also have a paper on guardians which is a language feature that allows objects to be saved from automatic deallocation so that clean-up or other actions can be performed on them.

Scheme implementation
In addition to our work on memory management and syntactic abstraction, we are continually investigating other facets of Scheme implementation. Some papers on our work include

Kent Dybvig is also the principal developer of the commercial Chez Scheme implementation of Scheme. Many of his students have contributed to its development. More information, including the complete text for the Chez Scheme User's Guide and a download area for Petite Chez Scheme, a free interpreter-based version of Chez Scheme, can be found at this page.

Dynamo
A compiler architecture for dynamically optimizing stand-alone programs. Dynamic optimization uses run-time values and invariants to improve code as it executes, yielding performance that is often superior to that of statically optimal code.

The Scheme repository
IU maintains the Scheme Repository that used to be at York University. There is a list of its latest additions.

Integrated parallel Scheme architecture
A scalable multiprocessor architecture for efficient execution of applicative languages.

Infer
Infer is a statically-typed dialect of Scheme.

pC++/Sage++
pC++ is a portable parallel C++ for high performance computers. It is a language extension to C++. Sage++ is an object-oriented compiler preprocessor toolkit.

Personnel

Faculty
Students
Graduates