週刊nmosh - Win32コンソールの色付け / プリロード強制モード

Win32のコンソールでcursesを使わずにカラー出力できるように。

Win32コンソールとパレット

実はWin32コンソールはVista以降でアプリケーション実行中にアプリケーションから動的にパレットを変更できるようになった(GetConsoleScreenBufferInfoEx)。
nmoshでもパレットを変更できるが、今のところうまいAPIを思いついていない。24bit中16色。
nmoshは一応WinXP以降対応としているので、わざわざこのためだけにLoadLibraryして実行時にAPIを解決するworkaroundを入れている。
GUI描画にGPUを使うとかそういう変更を含んだリリースで未だにコンソールを拡張しているMSには頭が下がる。超使いづらいけど。
(パレット機能自体はXP等でも使用出来る。内部的に使用されているWindowメッセージを直接つかうことで動的に変更することも一応可能。)
Win32コンソールの色付けは微妙にレアな機能で、他のScheme処理系で直接サポートしているのはIronSchemeくらいな気がする。

プリロード強制モード

今のところCMakeビルド専用だが、MOSH_PRELOAD_COREオプションを有効にすることで、FASLデータがある時は常にロードするようになる。
これはアプリケーションとしてインタプリタを配布することを想定したモードで、標準ライブラリをソースコードとして配布する必要がなくなる。