Thursday, December 22, 2011

They call me GNU-Eiffel

We are continuing the development of the academic project that acquired in 1998 the status of "Gnu Eiffel compiler". As I wrote in the beginning article of this blog Dominique Colnet is focusing his academic interests on other aspects of Information Technology. Cyril - a member of the former core team of developers - and me still believe that this language has still to a useful role as a free-as-in-freedom project.
We thought to use the existing compiler - SmartEiffel - to bootstrap another one - LibertyEiffel, but we soon realized that it may be evolved into something more modular, more scalable. The only prerequisite to the latter approach is an extensive knowledge of the inner design of the compiler: Cyril has done a good work cleaning it up and know it seems easier to grasp it all. So Liberty design ended up becoming part of our improvements toSmartEiffel.
SmartEiffel also does not implement ECMA-Eiffel, trying to be follow the original design and spirit of the language that wanted to be simple yet powerful. ECMA-Eiffel is quite a different language and more complex: the original definition of Eiffel was under 50 pages, current ECMA is quite bigger.
All those considerations are pushing me to call the language and the tools implementing it GNU-Eiffel.


  1. The original specification of Eiffel is in the book Eiffel The Language and does not fit in 50 pages (it is actually 500 pages). The ECMA Eiffel specification is actually very simple and more concise (less than 200 pages). I think you should reread it to realize that it is no different than the first iteration of the language.

    I also think that you should drop the GNU-Eiffel name and choose a name that does not involve `Eiffel' in it if you are deliberately departing from Bertrand Meyer's Eiffel language.

  2. I usually don't answer anonymous comments; in this case thought it is useful to make an exception because your complains are often recurring.
    Meyer wrote the first "definition" of the language in Object Oriented Software Construction 1st edition in 1988 (ISBN 0136290493) while "Eiffel The Language" (ISBN 10: 0132479257) has been published in 1992 (4 years later).
    I have read the second edition of both books so I cannot be sure but my educated guess is that they describe (pratically) the same language.
    They are both lengthy books because the language is described and explained to the people and not specified formally.
    You may read an "almost" formal definition of Eiffel 1 or 2 at that naively printed with Firefox gives me 66 pages, converting into a 180kb plain text.
    The ECMA standard, expunging all indexes and table of contents, translates into plain text of 444k.
    Both ECMA-Eiffel and GNU|Smart Eiffel share quite a few features not present in ETL2: agents, non conforming inheritance.
    ECMA has good features that Smart still don't have, like converting features and quite a few that are either unnecessary syntactic sugar that makes the definition of the language unnecessary comples, like "coupled" getter/setter to hide information hiding, so people coming from other languages can still write "foo.x := 12" instead of "foo.set_x(12)".
    Both camps (Meyer's ISE-Eiffel and Colnet's SmartEiffel) implemented ETL 2nd edition in a (mostly) compatible way.
    The ECMA standard have been the stumbling-block as their ideas of the evolution of the language diverged. Both says they are the true Eiffel. ISE/ECMA because they "have the standard", SmartEiffel because (I'm citing their website) "In reality, the language described by the ECMA TC39-TG4 working group clearly diverges from what is conventionally called Eiffel. ECMA-Eiffel is a very different language, and above all, not yet experimented. The SmartEiffel team will never implement ECMA TC39-TG4." (at I *updated the link in the post*).
    So, trying to be really honest and fair *both* camp forked the language because a program written for either ECMA-Eiffel and current SmartEiffel is not correct Eiffel, version 1 or 2.
    All the details and design considerations that are not agreed upon have been extensively discussed in public mailing lists and you may directly ask people involved on it.
    So I don't think I will stop using naming it [GNU|Smart|Liberty]Eiffel the same way Pascal diverged into several dialects, each one calling themselves "xx-Pascal" (see ); I cannot avoid to note that the most "commercially successful" Pascal dialects (TurboPascal and Delphi) weren't backed by Wirth...
    I bear no resentment toward all people at ISE and I still wish we will rejoin efforts in future; it only happened that we didn't agree on too many details to keep saying we are using the same language. That's why I use Eiffel for the language defined in ETL2 and OOSC2 and ECMA-Eiffel and SmartEiffel (or GNU-Eiffel or LibertyEiffel) for the two "trunks" that sprouted.

  3. I fully agree with Paolos comment. Bertrand Meyer is the inventor of Eiffel. But since there are different ideas on how to evolve Eiffel it is clear that different versions of these language exist. I have made the experience that Bertrand and co. are not willing to discuss the evolution of Eiffel with outsiders. Therefore he and his team are responsible for having different versions of Eiffel.

    And since "Eiffel" is not a registered trademark, there is no exclusive right to use this name.

  4. I completely agree with Paolo and Helmut, though being new to Eiffel as of last year, I'm not personally acquainted with "Bertrand and co."'s willingness to discuss the evolution of Eiffel with outsiders.

    It's entirely natural use of language that "GNU Eiffel" or "Liberty Eiffel" or "Smart Eiffel" are possible names of a variant of Eiffel or of compilers of such a variant.

    This works whether you regard "Eiffel" unqualified by any other text as being the Eiffel of Meyer's "Eiffel The Language" or that of the ECMA standard.

    I found Eiffel in Meyer's 1992 book interesting for its high power-to-complexity-ratio, and found myself looking at both ECMA Eiffel and Colbert's SmartEiffel.

    The spirit of Occam's Razor lead me immediately to choose the latter development of the Eiffel language, and thus to this blog. The ECMAte's anonymous remarks on language complexity don't make sense with even casual inspection of the two.

    I'd heard about Agents and one or two other post-1992 ideas and I was hoping that the ECMA standard would provide minimal and well-integrated extensions implementing these notions, as well as a compact definition of Eiffel. I was disappointed, to say the least, so I started to look elsewhere.

    Personally I think "GNU Eiffel" is a good name for the project and the language branch, and Liberty-Eiffel is a good name for the successor compiler to the Smart-Eiffel compiler.