週刊nmosh - nmoshの今年と来年

結局今年のnmoshはリリース無しという難易度の高い状況。今はリリースに向けた整理と安定化の作業中。。
来年は、nmosh自体というよりはnmoshを組み込んだアプリケーションとしての展開が主になりそう。

今年の展開

率直に言ってほぼ展開しなかったんだけど。。

  • アプリケーション組み込み機能の拡充

従来のFASLを単純に抱える方式では毎回起動時にすべてのライブラリを生成してしまっていたので起動が超遅いという問題があった。FASLアーカイブの仕組みを導入して、ライブラリとして必要な部分だけロードするようにしてネイティブアプリと遜色のない起動時間を達成できた。
本来的にはヒープのROM化をしたいけど上手い方法が思い当たらない。

  • Win64サポートの復活

FFIが無くていままであまり実用的でなかったWin64サポートを不正なテクニックを駆使して復活。FFIは依然使えないが。。
Win64は既にTier1プラットフォームと言える位置で、個人的にも一番長い時間を過ごしているプラットフォームになったと思う。

  • ビルド方針の分離とAutotoolsサポートの縮小

Autotoolsビルドはあまり使われていないので基本機能に絞る方向。つまり、プラグインやアプリケーション組み込みといった機能はAutotoolsビルドではサポートしないことにして、CMakeサポートに集中することにした。Autotoolsビルドはコマンドラインでの利用に限る。
AutotoolsはXCodeEclipseのようなIDEにまず対応できないのと、Ninjaのような高速ビルドシステムが活用できないのがキツい。

来年の目標

来年の(も)最重要課題はドキュメンテーション
デスクトップアプリでは必須とも言えるWin32のCHM形式と、REPLから直接参照できるものの2形式を含めたいところ。通常のWeb版は良いフレームワークを探し中。
あと、他人が開発できる状況にしておかないとどんどん不健全になっていくというのも有るので。。

  • R7RSサポート

既にライブラリレベルではそれなりに入っているけれど、ReaderとExpanderのサポートが必要。Expanderは、現状のExpanderとどう相互運用するかどうかが鍵。

  • マルチスレッドの良いサポートとVM操作API

現状の非同期I/Oフレームワークはシングルスレッド前提なので、任意のキューオブジェクトを待てるようにしたい。あと、現状の実装はWin32のIOCPに偏重しているのでその辺のバランスも正したいところ。。
マスタ/スレーブVM方式によるデバッガを作るために、VMを操作するためのAPIを作りたい。通常の実行時にはマスタVMを使用し、例外の発生時にスレーブVMに切り替えてデバッグを行う。

最近またCMake周辺を修正しているのはこれらのサポートのためだったりする。というわけで、Android / iOS上で正常に動作するようにしたい。これらのデバイスのセンサを使った企画が最近多い割に実装に地味に苦労しているので。。
もっとも、iOSはまだ見込みも無いところ。。