ブラウザ上で動作するOCaml製Game Boyエミュレータ「CAMLBOY」を開発しました。
OCamlのモジュールシステムやfunctors、GADTs、first-class modulesを実践的に活用しました。
CPU/タイマー/GPUを同期するメインループで「catch up方式」を採用しました。
8ビット/16ビット読み書き用インターフェースをシグネチャとincludeで抽象化しました。
CPUをfunctor化してバスをモック可能にし、単体テストを容易化しました。
GADTで命令セットを定義し、型安全な命令実装を実現しました。
テストROMとppx_expectを用いたインテグレーションテストでリグレッションを防止しました。
js_of_ocamlとBrrを用いてブラウザ向けコンパイルとUI実装を簡易化しました。
Chromeプロファイラでボトルネックを特定後、各モジュールを最適化し60FPSを達成しました。
複数のOCamlコンパイラバックエンドでベンチマークを実施しました。
OCamlのエコシステムや静的型付きモジュールシステムの利点と課題を考察しました。
Get notified when new stories are published for "🇯🇵 Hacker News 日本語"