週刊mosh : ターミナル対応開始

Monaサポートのマージなど大きな動きが収束してきたので、そろそろ0.2.7に入れる機能も纏めるフェーズ。。

開発機能の強化計画


ソースコードのカラープリント。。Schemeソースコードをカラーで出せるようになります。リリースまでにはXtermの256モードに対応するので、もっとキレイになるはず。
これはnmoshのスタックトレースやREPL、ドキュメンテーションツールで使用される予定。Chez Schemeのような他のScheme処理系に見られる、REPLでのカッコのハイライトも入ります。
ターミナル関連の機能はWin32ターミナルではサポートされない予定です。(Windows版はminttyを同梱する予定)
色の設定は0.2.7では固定の予定です。.moshディレクトリをキャッシュにつかってしまっているので、設定を置く良いところが無いのです。。

ライブラリデータベース

マージされるかは未定ですが↑で必要なので。。
システムライブラリについて、エイリアス名やAPIのレベルを記述したデータベースを準備しています。

    ;; SRFI-97 definitions
    [(srfi :1) (srfi :1 lists) srfi]
    [(srfi :2) (srfi :2 and-let*) srfi]
    ...

moshでは、SRFIのように別名を持つライブラリは、その名前のライブラリを実際に配置して処理していますが、それによってそれなりのリソースを消費しているので、そのようなライブラリはexpanderで直接的にサポートすることにしました。
あと、ライブラリデータベースはAPIの"レベル"を含んでいます。APIレベルは、そのライブラリがRnRSやSRFIのような"標準"APIなのか、mosh固有のものなのか、mosh internal/安定していないAPIなのかを記述しているので、ユーザが不用意に内部ライブラリを使うのを将来的には防げると期待しています。(まぁ内部ライブラリが便利なケースも有るけれど。。 http://d.hatena.ne.jp/mjt/20100225/p2 )
一般にSchemeコードをbeautifyするときは、標準インターフェース(例えば、defineやif)は別の色にします。というわけで、このレベル情報を使って、"特定のライブラリから来たシンボルは別の色"のように設定できるようにする予定です。

内部ライブラリを公開すべきか ?

そもそも、SRFIライブラリを/usr/share/moshにインストールして、毎回更新が有ったかチェックするべきかというのも絶妙なところ。。
もちろん、内部実装を見れた方がデバッグが楽なケースも無いわけではないので、SRFIソースコードの形で提供することにも一定の意義は有るかもしれないけど。