IMP: The IDE Meta-Tooling Platform


Building a state-of-the-art Eclipse IDE for a new programming language is a difficult undertaking. Although much of this work is inevitable and requires an in-depth understanding of the language structure and semantics, a significant portion embodies common themes and code structures, and requires extensive knowledge of Eclipse API's, which represent a great opportunity for code and knowledge reuse in the form of a meta-tooling framework for IDE development.

IMP is an ongoing project, begun at IBM Watson Research, to develop such meta-tooling for Eclipse. The goal of the project is to ease the development of commercial-quality IDE support for new programming languages, including the following features:


We accomplish this by a mixture of language service-creation wizards, class libraries to encapsulate common language-processing infrastructure, and code skeletons to get the language service-implementer started. Moreover, the IMP framework has been engineered to support the incremental specification and implementation of language services for languages that derive from an existing base language, as for example our X10 concurrent programming language does from Java. In this way, IDE's built using IMP are themselves extensible.

IMP has been driven in part from the need to produce full-featured IDE's for several language research activities at IBM Research, including:

IMP is also in part self-hosting: we are using IMP to create and support DSLs (domain-specific languages) for various aspects of IDE development, for example:


IMP also supports the use of LPG for the definition of languages for which IDEs are to be built.

The LPG, PrefSpecs, and Box IDEs are included in the IMP release; the X10 IDE is available (with other X10 software) from http://x10.sourceforge.net/x10home.shtml.


IMP News

IMP is now fully available through Eclipse.org. That includes

The latest IMP release is targeted to work with Eclipse versions 3.2, 3.3, and 3.4 up to M5. Please let us know if you have any problems, especially with the later versions of Eclipse.

Incubation
Incubation