SATySFi for Windows を作った
SATySFiはOCamlのような関数型言語とLaTeXのようなマークアップ言語をベースとする新しい組版システムです。
最近SATySFi for Windowsを作ったので紹介します。
SATySFi for Windowsとは
今まではSATySFiを試すにはLinuxかMac環境が必要で、Windowsを持っている人はVMかWSLを使って試すのが一般的のようでした。
今回Windows用ビルドを整備したので、これからはWindowsネイティブ環境へのSATySFiの導入が簡単になります。
仕組み
OCamlはWindowsとの相性が悪いですが、今回はMinGWターゲットでOPAMを使いたいということで、Linuxからのクロスコンパイルを用いました。
幸いopam-cross-windowsというプロジェクトが既にあったので、これのコンパイラバージョンを上げて、必要なパッケージを追加する作業をするだけで済みました。いくつかPRを出したところwrite権限を貰えたので今後も少しずつ充実させていこうと思っています。
OCamlはコンパイラがデフォルトでブートストラップするなど、自己コンパイル大好き言語なので、クロスコンパイラの敵みたいな設計になっていることが多く、そのあたりに対処するのが大変でした。
インストーラー
NSISという有名なインストーラー言語を使いました。NSISはLinuxからのクロスコンパイルが可能で、Ubuntuにもパッケージがあるため便利です。
ただ言語としては微妙で、スタック+レジスタベースの言語をマクロで覆ったような構成なのでマクロ呼び出しの嵐であまり心地良いとは言えません。扱える文字列が最大1024文字でPATHの書き換えに注意が必要など罠も多い感じでした。