racket scheme バージョン5.1: 20万行のC++を3万行のschemeで書き換え

http://blog.racket-lang.org/2010/12/racket-version-5.html

Unix/Xで思にGUI関連で大きな変化

  • DrSchemeなどのGUIプログラムでデスクトップtheme可。テキスト処理、プリント機能向上。
  • Window、Macでの向上: プリント、マウスホイルイベント、64ビットサポートなど

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