++C++; // 未確認飛行 C ブログ

http://ufcpp.net/

‘Roslyn’ September CTP

leave a comment »

Roslynの更新が。(数日前にneueccさんがRoslynの話してたなーと思ったら、これが出たからか。)

いくつかAPIに破壊的変更有。C#/VB共に、対応文法増加。今回からVisual Studio 2012必須(2010未対応)。

以下、Roslynをインストールするとついてくる「Getting Started」ドキュメントの、変更に関する記述の和訳。

CTP2からの変更

CTP2(2012年6月版)から、以下のような変更あり。主要なものは以下のとおり。

Compiler APIs

  • SyntaxTree.ParseCompilationUnitがなくなって、ParseTextとParseFileに
  • SyntaxNode.GetTextとGetFullTextがなくなって、ToStringとToFullStringに
  • 伸縮可能(elastic)なトリビアを表すフラグがSyntaxTriviaからなくなって、SyntaxAnnotationを使って伸縮性を表すように
    • 注釈: トリビア = 空白など、あってもなくてもいいもの。
    • 伸縮可能なトリビア = 長さがどうでもいい(IDEとかのフォーマットで長さが変わってしまっても構わない)という注釈つきトリビア
  • AssemblyNameReference、AssemblyFileReference、AssemblyObjectReferenceを、MetadataReference抽象クラスからの派生クラスに置き換え
  • CompilationObtions.Defaultがなくなったので、CompilationObtionsのコンストラクター利用を
  • 制御フロー解析(control flow analysis)APIが、TextSpanのstart/endポイントの代わりに、リージョンのentry/endポイントを反映するように変更
    • JumpsIntoRegion/JumpsOutOfRegionプロパティがなくなった代わりに、EntryPoints/ExitPointsプロパティ追加

Services APIs/Editors APIs

いくつかのAPIが、Editor ServicesレイヤーからServicesレイヤーに移動。

  • Classification
  • Code Actions
  • Completion
  • Rename

新規対応した言語機能

C#

  • コレクション初期化子
  • externエイリアス
  • 式ツリー
  • 多次元配列
  • Null許容型
  • オブジェクト初期化子
  • Type forwarders
    • 注釈: 別のアセンブリに移動させてしまった型が、元のアセンブリ内にもあるように見せかけるための IL の機能
    • .NET 4.5で、標準ライブラリが大幅リファクタリングされてて、かなりの型が新しいアセンブリに移動されたものの、過去にビルドしたものが問題なく動くのはこの機能のおかげ
  • unsafeコード(固定長バッファーを除く)

VB

  • 配列リテラル
  • コレクション初期化子
  • 外部メソッド定義(Declare)
  • Handles句
  • 遅延バインディング
  • Null許容型
  • オブジェクト初期化子
  • 演算子のオーバーロード
  • ParamArrayパラメーター
  • 部分メソッド
  • Sharedコンストラクター
  • ユーザー定義の型変換
  • Withステートメント
  • XMLリテラル

September CTPでも未対応のもの

VBのインタラクティブ ウィンドウはまだない。

以下の言語機能は未実装。

C#

  • async/await
  • Caller Member Info属性
  • dynamic
  • Embedded Interop Types(no-PIA)
    • 注釈: .NET 4で導入されたCOM相互運用強化機能
    • PIA(COM相互運用のためのラッパー アセンブリ)がなくても動作するように、PIA中で定義された型の一部(プログラム中で利用してるメソッドの部分だけ)をプログラムに埋め込む機能
    • C#の言語機能としてみると、違うアセンブリで定義されていて部分埋め込みな型にもかかわらず、同じGUIDを持っているなら同じ型だと認識する仕組みっぽい
  • マルチ ターゲット
  • 固定長バッファー(unsafe機能の1つ)
  • WinRT対応
  • XMLドキュメント ファイルの生成

VB

  • async/await
  • Caller Member Info属性
  • Embedded Interop Types(no-PIA)
  • イテレーター
  • マルチ ターゲット
  • My名前空間
  • Static locals
  • Stop/Endステートメント
  • Type forwarders
  • 非構造的例外処理(On Error Resume/Gotoステートメント)
  • WinRT対応
  • XMLドキュメント ファイルの生成

Written by ufcpp

2012年9月20日 @ 03:54

カテゴリー: .NET

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。