racket scheme バージョン5.1: 20万行のC++を3万行のschemeで書き換え
http://blog.racket-lang.org/2010/12/racket-version-5.html
GUIの再実装
- 20万行のXt/Carbon上のC++を3万行のschemeに書き換え
- schemeコードはGtk, Win32, Cocoa, Cairo, Pangoにインターフェース
- scheme実装により保守性向上
- 今になって書き換えた理由: schemeが速くなった。foreign interfaceが使い易くなった。
- 期間: 18ヶ月
- 近代的GUIフレームワークのイベントループとインテグレートするのが大変だった。「delimited continuations」なるものにより、克服。
- 以前の諸々のライブラリからCairoとPangoに切り替えたことにより、8万行のC++を8千行のschemeに替えることができた。
改善内容
- gracketでやっていたことが大抵racket自体でできるようになった
- drawing機能をGUIから分離させることによって、XServerが無い環境からもgraphics libraryが呼び出せる。
- グラフィックスライブラリに新機能追加:rotation, affine transformations, and bitmaps with alpha channels