mosh近況

いろいろと難航しているので、依存関係を整理して、細かいリリースに分割するのを検討。
現段階 + CMakeに移行したMSVCサポート で0.2.6としてリリースして、REPLの改善とminishellを0.2.7というのが妥当なところか。
微妙に難しいのは、yuniを導入すると現状のnmoshが無くなってしまうので、nmoshを含んだリリースはあまり追加したくない点。

0.2.6案

  • ライブラリ(json) (rbtree) (uri)を追加
  • ビルドシステムの修正 :
    • 今回のリリースではビルドシステムが多少変更される。
    • gtestが1.5.0にアップデートされた
    • libmosh.aを生成しなくなった
    • onigurumaはもう同梱されない。onig-configを参照するか、指定されたCFLAGSを利用してリンクしてみてそれを利用する。必要ならば、onigurumaのツリーをonigという名前で置けば、同時にビルドされる。
  • Fixed issues:
  • Features
    • MacOS XGMPの32bitバージョンのインストールを勧める文言を削除した
    • Darwin64でFFIをサポートした
    • Darwin32とDarwin64の両方をサポートするようになった
    • FreeBSD amd64でビルドできるようになった
    • FreeBSD amd64FFIをサポートした
    • nmosh: 可能な限りパスを相対パスで表示するようになった
    • nmosh: 新しい非公開ライブラリ : (core nmosh cache-control) (nmosh gensym)
    • nmosh: 新しいライブラリ : (nmosh pathutils) Gauche互換のpath関連手続きの一部
    • nmosh: --guru-modeコマンドライン引数を指定しない限り、nmosh開発者にしか意味のないデバッグ情報は表示しないようにした
    • psyntax-mosh: REPLで多値をGauche互換のフォーマットで表示するようになった?
    • nmosh: REPLで多値をGauche互換のフォーマットで表示するようになった

0.2.6に入れるべきだけどまだ入っていないもの

  • (oniguruma削除はまだhigepon/masterには入っていない)
  • MSVCビルドはCMakeに移行する。
  • Boehm GC/libatomic_opsはconfigureを経由せず直接ビルド、リンクされる
  • psyntax-mosh: --disable-psyntax-mosh-library-precompile configureオプション。インストール時に、rootのホームディレクトリにキャッシュを生成しないようにする。

0.2.7に移したいもの

これらは、新expander(yuni)での実現に切り替え。新たなmoshを新設するのではなく、現状のsrfi-mosh expanderを廃止して置換する形で導入予定。各種セマンティクスはnmosh互換。

  • nmosh: (各種REPL改善)
  • nmosh: -T(--applet) コマンドラインオプション。nmoshの管理コマンドを簡単に実行できる。
  • nmosh: (R6RS拡張) 同じ実体を差す語彙を複数インポートしてもエラーとならない。(ie. (rnrs)と(rnrs base)の同時インポートを明示的に許可する)
  • nmosh: (R6RS拡張) ライブラリエイリアスのサポート。(e.g. (srfi :1)と(srfi :1 lists)は実体となるファイルを用意するのではなく、内部で(nmosh srfi s1)にリダイレクトされる。上のルールと合わせて、(only (srfi :1) map) (only (srfi :1 lists) map)はエラーとならない。)
  • nmosh: (R6RS拡張) ライブラリはVMについて1度だけvisitされることが保証される。例えば、run実行においてイベント処理スレッドを生成するようなライブラリを書けるようになる。これはexpand実行とrun実行の関係については既定しない。