今月、Roslynのプロジェクトコード解析ツールのデモに関するプレゼンテーションを含む、MicrosoftのLang.NEXTカンファレンスがRedmondで開催された。 Dustin Campbell氏のプレゼンショーテーション"Going Deeper with Project Roslyn"では、サンプルプロジェクトにソフトを導入して、構築を完了するまでを紹介した。
Roslynフレームワークは、カスタムコンパイラを構築することを目指している訳ではなく、C#とVisual Basicを最大限に利用することにフォーカスを当てている。どちらの言語もスクラッチからコンパイラを書き直しており、RoslynのC#コンパイラはC#で書かれており、RoslynのVB コンパイラはVBで書かれている。Campbell氏は、オリジナルのコンパイラでは修正される多くのコーナーケースとバグがあることに気づいている。
Roslynのデザイン特性
-
不変 –オブジェクトは変更できないため、オリジナルに新しいオブジェクトを作成することで変更を行う。
-
完全 – 空白、コメント、エラーなどを含めたソースコードの完全な表現
-
耐障害性– エラー処理のための耐障害性。たとえば、ほとんどの場合、崩れたコードのステートメントをコンパイルすることになるため、パーサーはそれを処理できなくてはいけない。
-
効率– プロジェクトはビルドのスナップショットを表示する機能と、コード解析をインクリメンタルに処理する能力を持つ
Roslyn環境を開くと、アクティブなワークスペースの2つのインスタンスが存在している。ひとつめは、VSソリューションに読み込まれる従来からのワークスペース。もうひとつは、対話型ウィンドウ(REPL)のインスタンスを保持している。これを分離することで、開発中のコードで、ステートメントのコンパイルとインテリセンスを正しく処理することができる。
Campbell氏は、Roslynは10月からベータフォーマットで利用可能であり、リリースコード(バージョン 1.0)は、まもなくリリースされるVisual Studio 11で利用可能であると述べた。将来的にはVSの一部としてリリースされる予定である。Campbell氏はこれについて明確にしなかったが、VS2010でベータをサポートしているため、Microsoftはこれを正式なVSのリリースから切り離すことができないと考えられる。