週刊mosh - Debian / FreeBSD / BootstrapとOS追従の問題

moshの開発はあまり進捗せず。。
masterは0.2.7とFASLの互換性が失われた。masterを追い掛ける場合は0.2.7を混在させないこと。

fixされたIssue

長いこと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に含まれると言えるので重要では有るが。。

FreeBSD パッケージング

0.2.7のportをsend-prした。メンテナ反応待ち。

BootstrapとOS追従の問題

moshにDTrace対応を組込むためにMacOS XFreeBSDでの開発が多くなっている。ただ、moshは(gitから)ビルドするためにGaucheが必要だけど、そのGaucheが新しいOS XBSDで動作しないケースが多く、そろそろmoshmoshでbootstrapできるべきという気持ち。↑のDebianの問題も有る。

現状ではmoshGaucheが動作する環境のサブセットでしか作業できない。
というわけで、Gaucheに依存しないbootstrapに変えていく必要がある。ただ、これもなかなか簡単には行かない。VMコンパイラScheme版のVMの両方がGaucheで書かれていて、それらを移植する必要がある
VMコンパイラは既にR6RS移植はしてあるが、正常に動作しない。R6RSではdefine-macroによるマクロで副作用を起こすことができないので、その辺の非互換が原因ではないかと考えている。