The GNU Eiffel Compiler, Tools and Libraries

SmartEiffel logo

News & Events

  • 2007/4/25 - A logo was chosen! The swan wins. We, too, now have a bird as a mascot.

Eiffel is a pure object-oriented language aimed at the writing of software components that are easy to read, maintain, test, extend and reuse. Its emphasis on the collaborative aspects of software development, as communication and documentation, makes Eiffel a well suited language to large and very large projects. At the same time, its simplicity and careful choice of features make it ideal for learning object-orientation concepts and developing analysis and design skills. Of course, the security aspect is also one of our primary concerns. Moreover, as for the software engineering aspect, we propose to set the bar even higher: to put forth a language capable of fully exploiting all machine resources, a language and set of tools to truly generate high performance programs.

SmartEiffel is a research and free software project that provides the Eiffel community with:

As the compiler translates Eiffel code either to C or Java bytecode, it can be used to write programs that run on virtually any platform for which an ANSI C compiler or a Java virtual machine exist. The compiler and all the accompanying tools are fully written in Eiffel, so they can be used in all these platforms.

SmartEiffel extends traditional Eiffel care about reliability and good software engineering practises with a specific concern about runtime performance and tiny memory footprint. You can get a measure of the success of the project on that area at The Computer Language Shootout Benchmarks.

The language

All the traditional Eiffel features are implemented in SmartEiffel:

  • Design by Contract: including disciplined exceptions and optional assertion execution (on a by-cluster basis)
  • Multiple inheritance and genericity
  • Static typing
  • Uniform type system
  • Automatic garbage collection
  • .ace configuration files

In addition, some more recently proposed improvements have also been incorporated:

  • Tuples and agents
  • Multiple insertion (implementation-only inheritance)
  • A plug-in mechanism for better interoperability with other languages
  • Limited introspection capabilities

The language has entered a stability period where only minor changes will be added. All future modifications must prove to represent a real gain from the point of view of software engineering, and they can not spoil run-time efficiency.

The SmartEiffel project is not interested in implementing a compiler compliant with the ECMA Eiffel standard of 21st June 2005 (ECMA-367). This norm describes a different language that breaks the traditional Eiffel taste for simplicity and imposes a run-time model incompatible with our performance aspirations. As other Eiffel compiler writers declare to be compromised with this standard (although it is far from being implemented at time being), writing portable across Eiffel compilers code is going to be increasingly difficult.

Research project

Amongst other things, SmartEiffel features an innovative strategy involving whole system analysis which allows compilation to be often faster than the incremental compilation of traditional compilers.

It is the result of a research project of the LORIA lab, a join computer science research centre in Nancy, France, involving:

  • INRIA: Institut National de Recherche en Informatique et Automatique, or French National Institute for Research in Computer Science and Control
  • CNRS: Centre National de la Recherche Scientifique, or French National Centre for Scientific Research
  • University Henri Poincaré, Nancy 1
  • University of Nancy 2
  • INPL: Institut National Polytechnique de Lorraine

SmartEiffel has been developed by Dominique Colnet and the SmartEiffel group.

This project began in 1994 under the name "SmallEiffel", and since the very first public release in September 1995, the project has been used worldwide by increasingly numerous Individuals, Universities and Corporations.

Related projects