Mosh 0.0.7 をリリースしました。
R6RS のUnicode, 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)のサポートにより
- 起動速度の向上
- g++ での Mosh のコンパイルの速度向上、省メモリ
が実現されました。
Read の全面書き換え
多彩な数値表現のパースを見据えて、read が完全に書き換えられました。
以前は Gauche の read.c をベースにしていましたが、bison/re2c ベースに変更となりました。
read 速度も向上しています。
psyntax の最新化
psyntax ライブラリが最新版に置き換えられました。
ビルド時の Gauche 依存がなくなりました
リリース版ではビルド時に Gauche が不要になりました。
謝辞
今回のリリースまでに多くの方のアドバイス、不具合報告をいただきました。
みなさんありがとうございました。
不具合報告
不具合報告までお願いします。
もし面倒であれば、ここのコメント欄に書いていただくのでもかまいません。