例外セーフ

話題のDMD0.149へ移行してみた。
ポエニーをコンパイルすると、コンパイルエラーデター!!と思ったら、毎回のごとく、『sc.ini』を上書きしてしまっていた。
コンパイルできました。

注目の機能は、暗黙的なテンプレートのインスタンス化なんだけど、個人的には例外セーフなscope文ってのがいいなーと。on_exit(3)のような。
ポエニーでもセマフォSQLiteがロックしたまま例外で飛ばないように、lock(); try { processing(); } finally { unlock(); }という書き方をかなりの場所でしているので、機能が落ち着いたら(前回はon_scope_exitだったのが今回からscope(exit)と構文が変わっているので・・・) 使ってみようかなと。

他、std.c.fenvというが新しく入ったようなので、なんだこれはーと思ってのぞいてみたら、69-84行目あたり、


version (Windows)
{
extern fenv_t _FE_DFL_ENV;

/// Default floating point environment
fenv_t* FE_DFL_ENV = &_FE_DFL_ENV;
}
else version (linux
{
/// Default floating point environment
fenv_t* FE_DFL_ENV = cast(fenv_t*)(-1);
}
else
{
static assert(0);
}


括弧が閉じてないじゃん・・、またphobosをコンパイルするときにコンパイルエ(ry 。前回もgcbitsでbit型の配列使っていてなおさなコンパイルできなかったのに、またかい!と。
fenv自体はJMで調べてたら、C99 の浮動小数点の丸めと例外の取り扱いらしいです。