Scheme 処理系 「Mosh 0.0.1」 をリリースしました

インタプリタの名前を変更しました
サイボウズ・ラボのブログでも告知しましたがこちらでも。

これは何か?

R6RSという Scheme の新しい言語仕様に準拠することを目指している高速な Scheme インタプリタです。

何が出来るの?

PerlRuby で行っているような実用的なプログラミングができます。(現時点ではもちろん機能は限られますが)
例えばサンプルとして Mosh で書かれた Wiki が動いています

なぜ Scheme なの?

Scheme という言語が柔軟で素晴らしい言語だからです。
Scheme について知りたい方は、計算機プログラムの構造と解釈プログラミングGaucheなどを読まれると良いでしょう。

ダウンロードとインストール

Google Code からソースコードをダウンロードして下さい。
ソースコードのビルドにはGauche が必要です。

./configure
make
make check
make install

ビルドできない、できたなどの情報もぜひこちらか、日記へのコメントにお寄せ下さい。

機能概要

  • Scheme としてのコア
  • UTF-8 の入出力
  • Quasiquote
  • 正規表現
  • 伝統的なマクロ
  • 30bit の Fixnum
  • シンプルなポート
  • シンプルなCGI
  • format 手続き

制限と注意

このリリースは一番最初のリリースであり、多くのバグや不具合がある可能性が高いαに近い状態です。
もしバグを見つけたらこちらか、日記へのコメント、などでご指摘頂けると助かります。

  • 対話的な REPL は実装されていません。
  • R6RS のライブラリ機能を一部サポートしていますが、すべてのライブラリはトップレベルに定義されています

募集

Mosh では開発に参加して下さる方を募集しています。
ソースを読んで参加してみたいと思った方はご連絡下さい。

謝辞

Mosh の開発にあたって多くの方の助けていただきました。
この場をお借りしてお礼を申し上げます。

Gauche 開発者の川合史朗さんには Schemeインタプリタ全般に関して専門的で貴重なアドバイスをたくさん頂きました。
また Mosh は read.cpp やコンパイラの最適化部分など一部の機能を Gauche のコードを利用しています。Gauche という良質のソースコードを公開してくださっていることに感謝します。


Ruby YARV 開発者の笹田さんには、VM の高速化手法や論文の紹介などたくさんのアドバイスを頂きました。


mumurik さんには FFI場当たり的なパフォーマンスチューニングから始まるエントリーなど多くのご助言を頂きました。


Gaku さんにはパフォーマンスチューニングについて良き相談相手となっていただきました。私が客観的に見られない部分も明確にしてもらえるなど大変助かりました。


同僚の光成さん、奥さんid:kazuhooku)には、Scheme オブジェクトをどのように C++ で表現するかについて多くのご助言とレビューを頂きました。


id:sumii さんには A正規形について詳しく教えて頂きました。(結局つかいませんでしたすみません。)


また上記以外にもたくさんの方にコメント、IRCLingr、飲み会などでアドバイスを頂きました。
本当にありがとうございます。

ライブラリなど

Mosh は以下のライブラリやツールを使わせていただいています。