DMD 2.021

最新版なわけだけど,今回もまた破壊的変更だったw

  • foreachのrangeサポート

opApplyはそのまま使えるんだけど,どう変わったのかなぁというのはソースを見てみないと分からない.これが使えるようになるってことなのか?D announceにあったこの長いやりとりは面倒なので追ってないんだよなぁ.Andreiさんのポストには例があったりするので追うべきかも.

int foo(int delegate(ref string) dg)
{
    int result;

    for(int i; i < arr.length; ++i) {
        result = dg(arr[i]);
        if (result)
            break;
    }

    return result;
}

今回の更新とは関係ないけど,foreachって回せるのであればopApplyとか関係ないのね.これで&obj.fooとかやると回せた.

  • lazyストレージクラス

多分これは,これの上に書かれてるdelegateパラメータにscopeをつけることで,関数呼び出しによる無駄なアロケートを防げる?という内容に付随してるっぽい.lazyはscopeを含んでるので,同じ効果があるよ!ってことかな.

  • 動的ライブラリの扱い

試験的にWindowsのみということで,中ではGetProcAddressを呼び出している.dl*とか使って*nixでも出来るようにならないのかなぁ.

  • ランタイム

分けてリンクする必要もないからPhobosに突っ込むよ,だって.

気になる部分だけ.safeとかはMLでも見たことないので,現状考えても無駄かなと.構造体に関しては,今までは何かあればクラスを使ってきたので様子見.やっぱ例がないと厳しいので,MLでのアナウンス待ちっぽい.
何かzipの中身がおかしかったとかあったようだけど,今回は激しく出遅れたので遭遇できなかったw

GC

これも実はちょっと変わっている.内部実装との間に,さらにProxy構造体とか言うのが出てきて,Proxyが生きてるかどうかでレシーバが変わる.現状呼び出しが素通りだし遅くなるだけな気がするんだけど,どうやら今後のためっぽい.後なんか静的データの領域スキャンが消えてたりしてる.