mosh 0.2.5 リリース

mosh 0.2.5をリリースしました - .mjtの日記復帰計画


今回は nmosh という新しい R6RS 実装が id:mjt さんにより追加されています。現在の psyntax mosh よりもいくつかの面で優れているので近い将来 nmosh が本流になる予定です。
ダウンロードはこちらから→Downloads

nmoshは、従来採用していたpsyntaxに代わるexpanderです。Andre van Tonderの実装を使っていますが、それなりに変更してキャッシュやデバッガのような機能を追加しています。これはlarcenyのerr5rsモードと同様のexpanderで、いくつかの方言もLarcenyに準じています。

moshの代わりにnmoshを使うことで、新しいランタイムを試すことができます。nmoshは従来のmoshよりもずっと遅いですが、より親切なデバッグ情報を出力し、マクロや実行中のコードのデバッグがより容易になっています。

nmoshはエンドユーザから見ると :

デメリット

  • マクロと実行で完全に名前空間が分断されている。e.g. トップレベルdefineで定義した手続きをdefine-syntax中で使うことができない。(要望が多ければ対応する予定。。効率の問題が有るので微妙だけど)
  • キャッシュが大きい。nmoshはデバッグ情報を保存するので、キャッシュに必要なディスク容量は3倍程度になる。
  • 初回実行が遅い。初回以降の実行もI/O負荷が高い。
  • SRFI-38表現をスクリプト中で使えない。

メリット

  • デバッグ機能がそれなりに機能する。ypsilon程度には親切になったはず。
  • loadが使える。ypsilonのような、REPL中でのライブラリオーバーロードも可能。
  • キャッシュが信頼できる。時刻情報さえ正確なら。