SmartEiffel

SmartEiffelは、プログラミング言語Eiffel用のGNUのFOSSコンパイラであった。関連するツール、ライブラリ、クラスが提供されていた。GNUは新たなプロジェクトであるを通じて、自由ソフトウェアライセンスのEiffelを引き続きサポートしている。コンパイラはEiffelのコードをANSI CまたはJavaバイトコードへ変換するため、ANSI CコンパイラまたはJava仮想マシンが存在するほぼすべてのプラットフォームでプログラムを実行できる。

SmartEiffelは、フランス国立情報学自動制御研究所（INRIA）に所属するロレーヌ情報技術応用研究所（LORIA）において、ロレーヌのナンシー大学キャンパス内で開発された。SmartEiffelは学術分野で広く利用されていた。

歴史
プロジェクトは1994年にフランスの研究者ドミニク・コルネ（Dominique Colnet）によって開始された。当初、コンパイラはSmallEiffelと呼ばれていた。これはSmalltalkに由来する。1995年にコンパイラは初めてセルフホスティングを達成した。1998年、リチャード・ストールマンがLORIAを訪問した際に、プロジェクトはGNUプロジェクトの一部となった。2002年12月、プロジェクトはSmartEiffelと改名され、バージョン1.0に達した。2004年9月、SmartEiffelはバージョン2.0に達した。

2005年5月、Eiffelの標準化を行うグループとの意見の相違を受け、SmartEiffelプロジェクトはECMA TC39-TG4規格を実装しないことを発表した。

バージョン2.2(2006年)の時点で、プロジェクトはそのWiki上で次のように発表した。「我々SmartEiffelプロジェクトは、現在のEiffelがほぼすべての望ましい機能を備えていると考える。したがって、SmartEiffelのバージョン2.2は新たな安定性の段階の始まりを示し、我々が真のEiffelと見なすものに対応する。」この声明は、後継プロジェクトであるのWiki上で基礎的な記録として公開され続けている。

Debianパッケージは同時期に削除され、管理者に放置されていたと報告されている。FreeBSDも数年後にSmartEiffelを削除したが、その理由はコードの作者との交流がなかったこと、および一部のアーキテクチャで動作しなかったためであった。しかし、ソフトウェアの保守を引き継ぐことを推奨する意見もあった。

脚注

参考文献
Colnet, D., Marpons, G., Merizen, F. (2006). Reconciling Subtyping and Code Reuse in Object-Oriented Languages: Using inherit and insert in SmartEiffel, the GNU Eiffel Compiler. In: Morisio, M. (eds) Reuse of Off-the-Shelf Components. ICSR 2006. Lecture Notes in Computer Science, vol 4039. Springer, Berlin, Heidelberg. doi 10.1007/11763864_15
Marko van Dooren and Eric Steegmans. 2007. [A higher abstraction level using first-class inheritance relations. In Proceedings of the 21st European conference on Object-Oriented Programming (ECOOP'07). Springer-Verlag, Berlin, Heidelberg, 425–449. doi 10.5555/2394758.2394786

外部リンク
The Grand SmartEiffel Book  – official wiki
  Efficient Dynamic Dispatch without Virtual Function Tables:  The SmallEiffel Compiler; Olivier ZENDRA, Dominique COLNET and Suzanne COLLIN; 1997; Centre de Recherche en Informatique de Nancy Campus Scientifique, Bâtiment LORIA

Category:コンパイラ
Category:GNUプロジェクトのソフトウェア