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が生きてるかどうかでレシーバが変わる.現状呼び出しが素通りだし遅くなるだけな気がするんだけど,どうやら今後のためっぽい.後なんか静的データの領域スキャンが消えてたりしてる.