週刊mosh - Debian / FreeBSD / BootstrapとOS追従の問題
moshの開発はあまり進捗せず。。
masterは0.2.7とFASLの互換性が失われた。masterを追い掛ける場合は0.2.7を混在させないこと。
fixされたIssue
- http://code.google.com/p/mosh-scheme/issues/detail?id=221
- ピリオドがデリミタにならない不具合
長いことall-tests.scmのテストでエラーとして報告されていた問題が修正された。
Debian パッケージング
いまのところ2つ問題が挙がっていて進んでいない。
- BoehmGCを内蔵している
- precompiledなコードを含んでいる
BoehmGCを内蔵しているのはいくつかの最適化のためと、BoehmGCのリリース版はプラットフォームサポートが弱いことに因る。これはなかなか妥協できない(複数バージョンのBoehmGCを許すとメンテナンスが面倒すぎる)ポイントなのでコトの持っていきかたが難しい。
あと、moshはBoehmGCのC++インターフェースを使っているので多分どのバージョンのGCを使っても正常に動作しないのは保証されている。C++インターフェースはgc_init()のタイミングを制御できないので、gc_init()が必須なプラットフォーム(Win32やBSD等)で動作するかどうかはバージョンやコンパイラに依存する。現在moshのリポジトリにコピーされているバージョンは正常に動作するが、他のバージョンが動作するかどうかは微妙としか言いようがない。
端的に言えば、この問題を解決するにはBoehmGCのC++ APIをやめるしかない。
precompiledなコードが含まれている問題は、bootstrapを見直すのでそのうち直る予定。ただ作業量が多いので部分的対応になるかもしれない。
政治的には、Debianに含まれる = Ubuntuに含まれると言えるので重要では有るが。。
BootstrapとOS追従の問題
moshにDTrace対応を組込むためにMacOS XやFreeBSDでの開発が多くなっている。ただ、moshは(gitから)ビルドするためにGaucheが必要だけど、そのGaucheが新しいOS XやBSDで動作しないケースが多く、そろそろmoshはmoshでbootstrapできるべきという気持ち。↑のDebianの問題も有る。
- MacOS X 10.7でGaucheがビルドできない問題はGauche 0.9.2で修正される見込み。http://practical-scheme.net/chaton/gauche/a/2011/07/23
- GaucheはFreeBSD 9-CURRENTで動作しない(BoehmGCが正常に動作しない - moshはより新しいバージョンのBoehmGCを使っているので動く)。
現状ではmoshはGaucheが動作する環境のサブセットでしか作業できない。
というわけで、Gaucheに依存しないbootstrapに変えていく必要がある。ただ、これもなかなか簡単には行かない。VMコンパイラとScheme版のVMの両方がGaucheで書かれていて、それらを移植する必要がある。
VMコンパイラは既にR6RS移植はしてあるが、正常に動作しない。R6RSではdefine-macroによるマクロで副作用を起こすことができないので、その辺の非互換が原因ではないかと考えている。