Eiffelのコンパイラや開発環境 - プラットフォーム別

# はじめに

恒例のお断りですが、この文章の内容は、筆者が所属している会社・団体とは一切関わりがありません。いわゆる「自主的な研究の成果の発表」というものです。

[Eiffelのコンパイラや開発環境](https://qiita.com/koizumistr/items/29d1bb574bce8627c796)にあるように現役のEiffelコンパイラ/開発環境は3つですから、（著名な）プラットフォーム別に利用可能なEiffelコンパイラ/開発環境をまとめておくとちょっと便利かな、と。

で、早速まとめです。

|プラットフォーム|EiffelStudio|Gobo Eiffel Compiler|Liberty Eiffel|
|:-:|:-:|:-:|:-:|
| Windows | x86_64 | x86_64 | CYGWIN |
| UNIX | x86_64、Arm64、Armv7 | x86_64 | いろいろ |
| Mac  | x86_64、M1、M2 | x86_64 | ○ |

以上、なのですが、これだけだと分かる人にしか分からないと思いますので、プラットフォーム別に少々解説を。

あと、そもそもEiffelは、Eiffelで書かれたプログラムをいったんCに変換して各プラットフォームのCコンパイラを利用して最終的なバイナリを生成していますので、システムにすでにCコンパイラがインストールされていることが前提となっています。（EiffelStudioで.Net向けにコンパイルする場合は別でしょうけど。）ですので、コンパイラを（ある程度）Cで書いておけば、ブートストラップができますね。

本家サイトにリンクを張って置けば便利だとは思いますが、この書き方で張ろうとすると面倒なので、そういうのが必要な方は[Eiffelのコンパイラや開発環境](https://qiita.com/koizumistr/items/29d1bb574bce8627c796)を見てください。

あと、Liberty Eiffelについては、tarボールで提供されている最新版（バージョンbell）ではなく、基本的にはgitでsavannahもしくはGitHubから取得できる最新版について記載しています。

# Windows向け
さすがにArm版はここでは対象としていません。

## EiffelStudio
対応しています[^32bit]。

[^32bit]: 以前は32ビットにも対応していたのですが、もうあえてそういうことを書くような時代でもないでしょう。

## Gobo Eiffel Compiler
表は64ビットで動作確認をしている、という意味であって、64ビットのWindowsでしか動作しない、という意味ではありません。Cコンパイラがインストールされていれば、32ビットでも（さらにはARM版でも？）コンパイラが作れるのではないかと思います。

## Liberty Eiffel
基本的にはUNIXにのみ対応してますので、Windowsで動かしたければ、ひと工夫必要です。インストール用のスクリプトを見ると、CYGWINとありますので、CYGWIN上でコンパイラを作れそうです。

最近まで、上記のような状況だったのですが、[tcc](https://bellard.org/tcc/)に対応したようなので、CYGWINなしでも行けるのではないでしょうか（試してません）。

# UNIX向け
以下ではLinuxとFreeBSDを取り上げていますけど、上に書いたように「システムにすでにCコンパイラがインストールされていることが前提となっています。ですので、コンパイラを（ある程度）Cで書いておけば、ブートストラップができます」なので、UNIX系のOSだったら結構広い範囲で行けるのではないかと思います。

## Linux
### EiffelStudio
ダウンロードできるファイルにx86_64、Arm64、Armv7の3種類ありますので、それぞれのアーキテクチャ上で動作するのだと思います。ただ、x86_64は分かるのですが、Arm64とArmv7の違いはよく分かりません。LinuxでEiffelStudioを使っている方、ぜひご教示ください。

### Gobo Eiffel Compiler
x86_64で動作確認をしているというのは表のとおりですが、Debian・UbuntuとCentOSで確認しています。なので、「Linuxであればコンパイラが作れる」と期待して良いのではないでしょうか。

### Liberty Eiffel
インストール用のスクリプトには「Linux」とありますので、対応しています。Debian系とかRedHat系とか細かいことは気にしないのではないでしょうか。私も、Rocky Linuxでコンパイラが作れることを確認したような、、、

## FreeBSD
### EiffelStudio
対応しています。[^2405]
[^2405]: 一つ前のバージョン（24.05）では対応していなかったと思います。需要が復活した？

バージョンが古くても構わなければパッケージに入っていますので、そちらを使うのが一番手軽なのではないでしょうか。
~~~
$pkg search eiffel
eiffelstudio-5.7_8             Complete Integrated Development Environment for Eiffel
~~~
（EiffelStudioに一時期オープンソース版がありまして、それをパッケージにしたのだと思います。現在、EiffelStudioにオープンソース版なるものはないようですので、パッケージのバージョンが今後更新されることはないでしょう。）

### Gobo Eiffel Compiler
UNIXの1つとして対応しているのではないでしょうか。

### Liberty Eiffel
最新版にて対応[^mypatch][^mypatch2]しています。
なぜ知っているかと言えば、私がコミットした改善対応パッチ2つがマージされたからです。
[^mypatch]: 以前は私の提供したパッチ第1弾が適用されて、「『コンパイラに同梱されているすべてのコマンドがコンパイルされるわけではない』という制限事項がつきますが、コンパイラ（およびコンパイルに必要なコマンドは一通り）は作成されます。」という状況でした。
[^mypatch2]: 私の提供したパッチ第2弾が適用されて、FreeBSDでもコンパイラに同梱されているすべてのコマンドがコンパイルされるようになりました。

## それ以外

### EiffelStudio
ないようです。

### Gobo Eiffel Compiler
UNIXでコンパイルできるはずなので、どんと来い、だと思います。

### Liberty Eiffel
インストール用のスクリプトにはLinux、FreeBSD以外にNetBSD[^mynetpatch]、OpenBSD[^myopenpatch]、Solarisとあります。ただ、それ以外の場合でも、汎用的な設定でコンパイラの作成を試みますので、基本的にはコンパイラは作成されるのではないかと思います。（ただし、「汎用的な設定」ですので、例えばガベージコレクションが機能しないとか制限がつく可能性はあります。）

[^mynetpatch]: 最新版では、複数のCPUを（正しく）活用する形に修正してあります。なぜ知っているかというと、その辺のパッチを私が提供したからです。
[^myopenpatch]: はい、これは最近対応したものです（FreeBSDとほぼ同じだったので）。なぜ知っているかというと（以下同文）

# Mac向け
## EiffelStudio
CPUがインテル製のもの向け、Apple独自のもの（M1、M2）向け、それぞれあります。M1、M2向けにはファイル名にArm6vとあるものをダウンロードすることになりそうですが、これでいいのでしょうか。
M1、M2で動作することは間違いないのですが（リリースノートとかにそういう記載がありましたので）、M1、M2ってArm6vなんでしょうか、、、誰か教えて、偉い人。

## Gobo Eiffel Compiler
「UNIXの1つ」として対応しているのではないでしょうか。

## Liberty Eiffel
対応しています。最近のmacOSであればCPU関係なく行けるのではないかと思います。（Homebrewでboehm-gcをインストールしておく前提付き、M2でしか確認してませんが。）
なぜ知っているかと言えば、Macで動かすための修正パッチを私が提供して、本家に取り込まれたからです。