【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

サンクと継続の勉強会

呼び出しの変換などを処理するために実行時に生成されるコードをサンクと呼びます。サンクを利用したクロージャの実装を説明します。またサンクとは別に、コルーチンによる継続の実装も試みます。独自言語に組み込むことを想定した説明ですが、今回は独自言語の作成には踏み込まずにC++を使用します。

大まかな流れは以下の通りです。

  1. スタックとアセンブラ
  2. 簡単なJIT: https://gist.github.com/1225880
  3. 呼び出し規約と変換
  4. 関数ポインタや関数オブジェクト
  5. サンクによるメンバ関数へのコールバック: https://gist.github.com/1225997
  6. Win32へのサンクの応用
  7. Win32で委譲モデルを構築: https://gist.github.com/1273003
  8. setjmp/longjmpによるコルーチン
  9. setjmp/longjmpの自前実装: https://gist.github.com/1257249
  10. コルーチンのクラス化: https://gist.github.com/1271829
  11. Win32への継続の応用: https://gist.github.com/1275467

配布資料の叩き台を公開しています。参加するかどうかの判断材料としてどうぞ。

ご参加をお待ちしています。