ページ

2004年7月16日金曜日

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 が使えるようになっちゃいました。

3 件のコメント:

  1. >なのに Cω を使えば Generics や Anonymous Method が使えるようになっちゃいました。


    それちょっと嬉しいかもw

    比較的安全に、普段の開発環境で Generics して遊ぶことができますね ;-)

    返信削除
  2. あれ、Generics は、IL ベースで対応していたはず。

    ということは、なぜに .NET 1.1 で動作するんだろう

    返信削除
  3. TechEd 2004 Yokohama の INETA パネルセッションで、パネラーとして参加していただきありがとうございました。

    短い時間でしたが、おもしろい方々の意見をききつつ、Cωプレビューができて、とても楽しい時間でした。

    また、よろしくおねがいします

    返信削除