yield

Pythonのyield文のドキュメント見てて気付きました。
http://www.python.jp/doc/2.4/ref/yield.html

yield 文は、try ... finally 構造の try 節中で使うことはできません。ジェネレータが常に実行再開されるとは限らないので、finally ブロックが常に実行される保証がないという問題があるためです。

xtalも同じ問題があり、解決しないと他の整合性が崩れる可能性があることに。
ですので、yield中のfiberがgcされるときに、catchで捕獲できない例外を送出して、無理矢理finallyを通す変更を加えることにしました。

foo: fiber{
  try{
    100.times{ yield it; }
  }finally{
    // fiberの実行が途中で停止されても、最後には必ず通る
  }
}