以前から興味があったので、今日からMoshのソースコードを読みます。コンパイラに興味がある人や、Moshに興味がある人の参考になれば幸いです。誤解がないように、初めに断っておきますが、この日記はあくまでも私の感想を書いたものなので、正確なものではありません。
MoshとはScheme言語の処理系の一つで、作者はひげぽんさんです。R6RS準拠で、FFIやソケットなどを拡張しているのが特徴です。公式ホームページは
http://code.google.com/p/mosh-scheme/です。興味がある人はチェックして下さい。前置きはこれぐらいにして、日記を始めます。
本日は、朝マックならぬ朝Moshをしました。ダウンロードして直ぐに展開し、迷わずソースコードをチェックしました。普通はドキュメントを読むべきなのでしょうが、ときめきを抑えきれずソースへ直行です!
色々読みたいところがあるのですが、初めてなのでヘッダファイルとmainを眺める事にしました。ヘッダファイルは、綺麗に整理されており、中々読みやすそうです。Arithmetic.hとArithmeticProcedures.hのように綺麗に分割されており、後で調べたい時に便利だと感じました。他にも、Unicodeのサポートの充実ぶりや、InputとOutput関係のヘッダが多い事などが目を引きました。後でじっくり調べよう。
ヘッダファイルをざっと読んだ後は、お決まりコースのmainメソッドを読んでみました。コンパイラは複雑なので、正直言って「いきなり読んで大丈夫か?」と不安だったのですが、Moshは綺麗に整頓されていました。色々せずに、指定されたコンパイラオプションのチェックおよび、仮想マシンのセットアップ処理をしていました。
main.cppをざっくり見て分かったのですが、どうやらMoshの仮想マシンはポートでやり取りをする様です。UNIX思想を感じます。この考えは、Moshを強力な梃子にするでしょう。ただし、標準ポートを共有するとバッファの問題が起きるので、標準ポートは共有していないそうです。
mainメソッドをざっくりと読んだ後は、なんとなくWindows上でビルドをしてみる事にしました。MoshはCMakeでビルドをします。マルチプラットフォームは大変ですね。リリースマネージメントをしておられるmjtさんの大変さが伺えます。CMakeはまだ使った事がないので、色々なホームページを見ながらやってみました。えいや!うごけー!うぉぉ~・・・!?・・・おや?失敗したぞ。
エラーメッセージを読んで分かったのですが、Moshは鬼車とGMPを使用しているようです。おお!想像通りMoshは本格的だ。やはり、初めからドキュメント読むべきでした。鬼車をコンパイルして、GMPを・・・う~ん、難しい。GMPをソースからコンパイルするのが難しいです。仕方がないので色々調べたところ、WindowsではMPIRがよいそうです。。。。あれ?MPIRもビルドするのが難しいぞ。どうなっているんだ?
ここで、9時前になったので朝Mosh終了しました。MPIRをWindowsへインストールするいい方法はないものか。今夜調べよう。
テーマ : プログラミング
ジャンル : コンピュータ