Quick Tour

The Programming Language Keris
 1  Overview
The experimental programming language Keris extends Java with explicit support for software evolution. Keris introduces extensible modules as the basic building blocks for software. Modules are composed hierarchically revealing explicitly the architecture of systems. A distinct feature of the module design is that modules do not get linked manually. Instead, the wiring of modules gets infered. The module assembly and refinement mechanism of Keris is not restricted to the unanticipated extensibility of atomic modules. It also allows to extend fully linked systems by replacing selected submodules with compatible versions without needing to relink the full system. Extensibility is type-safe and non-invasive; i.e. the extension of a module preserves the original version and does not require access to source code.

 2  Quick Tour
A quick tour through the main features of Keris is available. It briefly explains how systems are developed and evolved using Keris' extensible modules.

 3  Documentation
The following selection of papers describe the motivation, the design, and the implementation of Keris, as well as technical background information on related topics.

Programming Language Abstractions for Extensible Software Components
Matthias Zenger.
PhD Thesis, No. 2930, EPFL, Switzerland, March 2004.
[PDF Version]

A Nominal Theory of Objects with Dependent Types
Martin Odersky, Vincent Cremet, Christine Röckl, Matthias Zenger.
European Conference on Object-Oriented Programming, Darmstadt, Germany, July 2003.
© Springer-Verlag (LNCS series).
Workshop on Foundations of Object-Oriented Languages, New Orleans, January 2003.
Technical Report IC/2002/070.
[PDF Conference] [PDF Workshop] [PDF Technical Report]

Evolving Software with Extensible Modules
Matthias Zenger.
International Workshop on Unanticipated Software Evolution, Málaga, Spain, June 2002.
Extended version accepted for publication in Software Maintenance and Evolution: Research and Practice (Special Issue on Unanticipated Software Evolution).
[PDF Workshop] [PDF Journal]

Type-Safe Prototype-Based Component Evolution
Matthias Zenger.
European Conference on Object-Oriented Programming, Málaga, Spain, June 2002.
© Springer-Verlag (LNCS series).
Technical Report IC/2002/014, EPFL, April 2002.
[PDF Conference] [PDF Technical Report]

 4  Implementation
You can download a beta version of the Keris compiler KeCo together with the extensible Java compiler JaCo here:
Keris Binary Distribution, Version 0.6.1, March 2004

The Keris compiler is implemented as an extension of the extensible Java compiler JaCo (a reimplementation of the compiler available here). Both, JaCo and its extension KeCo are implemented in Keris. The source code for both systems is available for download. It consists of approximately 55000 lines of code split up into 120 source files occupying 3.2MB. Jakarta Ant is required for executing the build script which bootstraps the compiler.
Keris Source Distribution, Version 0.6.1, March 2004

Keris is a conservative extension of Java 2. Keris modules are compiled to standard Java classfiles. The execution of Keris modules does not require a special runtime system, nor does it rely on a custom class-loader. For running the compiler or for executing Keris modules, only a Java Runtime Environment of at least version 1.3 is required.

 5  About the Name Keris
A Keris is a double edged dagger originating in the Javanese culture. It was considered a magical weapon, filled with great spiritual power. Today it is an object of reverence and respect, symbolizing strength and safety. You can read more about it here.

 6  Contact
Please contact Matthias Zenger by e-mail for comments or further questions.