【D言語】dmd 2.063.2がリリース!【dmd】

dmdのリリースサイクルが変わっていたようで、dmd 2.063.2がリリースされています。

http://dlang.org/download.html

2.063.1との変更点は、主に大きいバグ修正です。新しい機能などは含まれていません。 とりあえず、アップデートしておくといいですね。

担当:美馬(どういう基準でマイナーバージョンアップされるんだろう?)

D言語の入門記事:d-manual

今、@k3_kaimuさんを中心に、D言語の入門記事である、d-manualが作られています!

https://github.com/k3kaimu/d-manual/blob/master/readme.md

まだ製作途中なので、「D言語の入門記事を書きたい!!」という方は是非Pull Requestを送ってみてください。

担当:美馬(こっちも、テンプレートとかCTFEの章を書いてみようかな)

【D言語】__traits(getUnittests)の追加【dmd】

unittestを取得する、__traits(getUnittests)が追加されました。 取得したunittestは呼び出すこともできます。


module hoge;

import std.stdio;

unittest
{
    "test".writeln();
}

void main()
{
    __traits(getUnitTests, mixin(__MODULE__))[0](); // このモジュールの0番目のunittestを呼び出す
}

実行すると、


$ rdmd -unittest hoge.d
test
test

確かに、unittestが2回呼ばれてます! 面白いですね。

担当:美馬(今ひとつ使い道が思いつかないけど)

【D言語】関数とテンプレート関数のオーバーロード【dmd】

非テンプレート関数とテンプレート関数のオーバーロードが可能になりました。


今までは、


import std.stdio;

string hoge(T)(T t) if(!is(T == int))
{
    return "template";
}

string hoge(int i)
{
    return "function";
}

void main()
{
    12.0.hoge().writeln();
    1200.hoge().writeln();
}

のような、非テンプレート関数とテンプレート関数のオーバーロードが不可能でしたが、このコミット以降、可能になりました。

オーバーロードのために、わざわざ非テンプレート関数をテンプレート関数にする必要がなくなって良いですね。

担当:美馬(最近、雨がすごい)

【D言語】LDCをビルドする

Ubuntu 13.04環境でLDCをビルドしてみました。 LDCは、フロントエンドにdmd、バックエンドにLLVMを使う、D言語コンパイラです。

まず、必要なものを用意します。


$ sudo apt-get install llvm g++ git cmake libconfig++9 libconfig++-dev

ソースコードを持ってくるのにgit、ビルドするのにcmakeが必要です。 あと、libconfig++が無いとビルドに失敗します。

gitでソースコードを持ってきます。


$ git clone --recursive http://github.com/ldc-developers/ldc.git

適当なビルドディレクトリを作って、その中でmakeします。


$ cd ldc
$ mkdir build && cd build
$ cmake .. 
$ make   # お好みで -j4 とかを
$ sudo make install

ubuntuだと簡単にビルドできますね。

担当:美馬(Windowsだと面倒くさい・・・)