mosh 0.2.5をリリースしました
今回から新しいR6RS実装のnmoshを含むようになりました。今回の変更は殆どnmosh関連なので、僕が作業しています。
ダウンロードはGoogle Codeですが、コードはgithubに有ります。see and fork http://github.com/higepon/mosh
ビルド回りはかなり変更されているので、今回のバージョンが動かないという人はぜひ教えてください。動作チェックはmake checkでできます。(make installの前にやるのがオススメ)
MacOS X 10.6と64bitのサポート
MacOS X 10.6でも正常にコンパイルできるようになりました。macportsからGMPをインストールして、
CFLAGS="-L/opt/local/lib -I/opt/local/include -D_XOPEN_SOURCE"\ CXXFLAGS="-L/opt/local/lib -I/opt/local/include" ./configure make
のようにしてください。
64bitDarwinでのFFIはまだサポートしていません。ABIは同一なのでそう遠くないうちに。
(shorten)
Gauche風の短縮lambda、(shorten)が標準ライブラリになりました。Grand Central DispatchのBlocks表記みたいなもんだと思えば大体正解?
機能は、
- lambda を ^ と書ける
- (lambda (x) ...) を (^x ...)と書ける (x = a-z, _)
- (lambda x* ...) を (^x* ...)と書ける (x = a-z, _)
の3つです。
Gaucheと比べて、a*のようなリスト表記が追加されています。これは、文字数的にはスペースを入れる表記と変わらないんですが、事故を防ぐためには有用だと思います。
(map (^ _ 'empty) lst0 lst1) ; lst0、lst1と同じ長さのemptyのリストを生成 (map (^_* 'empty) lst0 lst1) ; 同上。 * を付けると、リストを受ける。 (map (^_ 'empty) lst0 lst1) ; 間違い。スペースが足りないと1引数になる。
nmosh
nmoshは、従来採用していたpsyntaxに代わるexpanderです。Andre van Tonderの実装を使っていますが、それなりに変更してキャッシュやデバッガのような機能を追加しています。これはlarcenyのerr5rsモードと同様のexpanderで、いくつかの方言もLarcenyに準じています。
moshの代わりにnmoshを使うことで、新しいランタイムを試すことができます。nmoshは従来のmoshよりもずっと遅いですが、より親切なデバッグ情報を出力し、マクロや実行中のコードのデバッグがより容易になっています。
nmoshはエンドユーザから見ると :
- デメリット
- メリット