Mosh 0.0.7 をリリースしました

Mosh 0.0.7 をリリースしました。


R6RSUnicode, Bytevector, Sorting などが実装されました。
Mosh の起動速度や g++ でのコンパイル速度が大幅に向上しました。


また以前から -b オプションでサポートされていた R6RS モードがデフォルトとなり -b オプションは廃止されました。
今後 Mosh は起動時から R6RS モードとなります。

追加、変更点の詳細は以下の通りです。

ライブラリシステム

ライブラリの load path の仕組みが実装され、デフォルトでは ./lib や /usr/local/share/mosh/lib などが対象となります。
またライブラリの serialization を実験的にサポートしました。
scripts/pre-compile-r6rs.scm でライブラリの serialization が可能です。

R6RS Unicode

UTF8/UTF16/UTF32 の取り扱いや、文字列の比較、正規化、upcase など種々の Unicode 手続きが実装されました。

R6RS Bytevector

Scheme からバイト列を扱う Bytevector の手続きの多くが実装されました。
バイト列からエンディアンやサイズを指定してデータを取り出したり、格納したりといったことが可能です。

SRFI-8 と SRFI-98 のサポート

SRFI-97 で提案されているように以下のような形式で SRFI ライブラリのロードが出来るようになりました。

  mosh>(import (srfi :98))
  #<unspecified>
  mosh>(get-environment-variable "HOME")
  "/Users/taro"

R6RS REPL

R6RS の REPL が追加されました。 mosh で起動します。
(import ...) なども利用できます。
なお現時点での制限として入力は必ず一行単位でパースされます。

スタックオーバーフロー時のスタック自動伸長

再帰などでスタックオーバーフローした場合に、ヒープが許す限りスタックが自動で伸長されるようになりました。

Fasl のサポート

Fasl (Fast loading)のサポートにより

が実現されました。

Read の全面書き換え

多彩な数値表現のパースを見据えて、read が完全に書き換えられました。
以前は Gauche の read.c をベースにしていましたが、bison/re2c ベースに変更となりました。
read 速度も向上しています。

psyntax の最新化

psyntax ライブラリが最新版に置き換えられました。

ビルド時の Gauche 依存がなくなりました

リリース版ではビルド時に Gauche が不要になりました。

謝辞

今回のリリースまでに多くの方のアドバイス、不具合報告をいただきました。
みなさんありがとうございました。

不具合報告

不具合報告までお願いします。
もし面倒であれば、ここのコメント欄に書いていただくのでもかまいません。