Version 0.86

とか言ってたら0.86*1出てましたよ。
亜種を作るのはバージョンが少し違った程度では大きな影響が無い程度に収束してからのほうが良さげです。待ってればMinGWgdcも出るかもしれないし。

  • "Max # of fixups = 数字" とかいう謎のメッセージが表示されるようになった。これ何でしょう?
  • std.socket, std.socketstream追加。
  • interfaceからのダウンキャスト
    実装されてしまいました。以前混乱させてしまった方々、ごめんなさい
  • IUnknownという名前のinterfaceの特別扱い
import std.c.windows.com;
import std.windows.iunknown;
import win32.unknwn;

interface ITeketou { }
class Teketou : ITeketou { ~this(){ printf("destructed."\n); } }

void main()
{
	Object o;
	
	//std.c.windows.com.IUnknown a;
	//o = cast(Object)a; //OK?
	//delete a; //error
	
	Teketou t = new Teketou;
	ITeketou b = t;
	o = cast(Teketou)b;
	assert(cast(void*)b != cast(void*)t);
	assert(cast(void*)o == cast(void*)t);
	delete b; //OK
	
	//std.windows.iunknown.IUnknown c;
	//o = cast(Object)c; //OK?
	//delete c; //OK?
	
	//win32.unknwn.IUnknown d;
	//o = cast(Object)d; //OK?
	//delete d; //error!?
	
	printf(`OK`\n);
}

なんか…特定のどれ、というのではなく、"IUnknown"という名前のインターフェースであればすべからくCOMと見なされている気がします。
言語がstd.c.windowsを贔屓するのであれば私のヘッダー群も考え直した方がいいと一瞬思ったのですが、そうじゃなくて良かった良かった!?
…それにしても、なんといいますか、私の発想ではこういうのは名前じゃなくてpragmaで指示するべきかと…。

*1:理由無くバージョンが飛ぶのはWord-ー太郎戦争が連想されて嫌な予感