Microsoft Research から Cω (シー・オメガと読むらしい)の preview 版コンパイラがリリースされました。
ま、このこと自体はすでにいろいろなところで取り上げられてますね。
http://blogs.users.gr.jp/naka/archive/2004/07/15/3760.aspx
http://blogs.sqlpassj.org/yoneda/archive/2004/07/16/3380.aspx
とか。
Cω のまとめページはこちらみたいです。
http://research.microsoft.com/Comega/
これによると、どうやら Polyphonic C# と Xen(もとは X#)の両方を実装したコンパイラのようです。
ダウンロードは http://research.microsoft.com/research/downloads/default.aspx の "Comega compiler preview" から行うことができます。
で、さっそくこの preview をダウンロードしてセットアップしてみました。
セットアップ後の様子を見てみると、
- VS.NET 2003 に "Comega Projects" が追加される。(この PC には VS.NET 2002 も入ってますが、そちらには Cω プロジェクトは追加されませんでした。VS 2005 は入ってないのでわかりません)
- Cω プロジェクトの拡張子は .cwproj。
- Cω のソースの拡張子は .cw。
- Cω のコマンドライン版のコンパイラは cwc.exe。
- GAC に Cω のランタイムがいくつか追加される。
- とりあえず、現時点では Cω の再配布用ランタイムは見当たらない。(なので、Cω なコードを実行するにはこの preview を入れておく必要があります)
- この Cω は C# 2.0 コンパイラをベースにしているみたい。
こんな感じでした。
個人的には最後の項目が気になりました。Cω は C# にいくつかの機能を追加したものという位置付けのようです(今のところは)。となると、C# 1.x をベースにしているのか C# 2.0(Beta)をベースにしているのかで C# 自体の機能が違います。そこで、VS.NET 2003 の Cω プロジェクトで Generics や Anonymous Method を使ったコードがコンパイルできるのかどうか試してみました。試してみたのは以下のような単純なコードです。
using System;
public delegate void D<T>(T t);
public class A<T>
{
private T val;
public A(T t)
{
this.val = t;
}
public void Func(D<T> d)
{
d(this.val);
}
}
public class Test {
static void Main() {
A<int> a = new A<int>(999);
a.Func(delegate(int n) { Console.WriteLine(n.ToString()); });
}
}
その結果、きちんとコンパイル・実行できました。なので、この Cω compiler preview は C# 2.0 をベースにしているようだ、と言えると思います。
で、よくよく考えてみたらこれってかなりうれしいかも。
この PC には、VS.NET 2002、2003 しか入ってませんし、当然 .NET Framework 自体も 1.0 と 1.1 しか入っていません。VS 2005 も .NET Framework 2.0 も入ってないんですよね。なのに Cω を使えば Generics や Anonymous Method が使えるようになっちゃいました。