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

http://ufcpp.net/

Archive for 4月 12th, 2015

ピックアップRoslyn 4/12

leave a comment »

C# Design Meeting Notes for Mar 24, 2015

https://github.com/dotnet/roslyn/issues/1898

今回は、これまで C# 7.0 に向けて提案されてきた内容について、issue ページでの議論の結果、今後どう取り組んでいくかを「色分け」(信号の青(green)、黄、赤の3色に)しています。

  • : 興味あり、引き続き検討
  • : 何か取り組むべきものはあるけども、既存提案の方式ではやらない
  • : たぶんやらない

何がどう色分けされたかというと:

  1. ref returns and locals <> (#118)
  2. readonly locals and parameters <> (#115)
  3. Method contracts <> (#119)
  4. Does not return <> (#1226)
  5. Slicing <> (#120)
  6. Lambda capture lists < – ラムダ式に属性を付けれるようにするだけでたぶん解決> (#117)
  7. Immutable types < – 今の形ではやらない。けど何かしらの保証方法は考えたい> (#159)
  8. Destructible types < – 決定論的な破棄処理自体には興味あり> (#161)
  9. Move <> (#160)
  10. Exception contracts <>
  11. Static delegates <>
  12. Safe fixed-size buffers in structs <> (#126)

6番くらいまではもうちょっと詳細な現状説明あり。

ここでは、気になったところだけ:

2. に関して、「readonly var」の短縮形は、今のところ val が有力らしい… 僕は v だけ打って後は IntelliSense 補完で var を書いてるんで、個人的には val はやめてほしい… 英語的には val が一番自然に見えるらしいんですけども。

4. に関して、never 型(絶対に例外を投げて終わるか、永久ループで終わるメソッドの戻り値に指定する型)を導入する方向で進んでいます。この型が指定できるようになると、「throw ステートメント」を「throw 式」に変えれるというメリットもあります。つまり、() => throw new Exception() みたいなラムダ式も書けるようになります(今は、こういう式が書けない。throw が式じゃないので)。

C# Language Design Review, Mar 25, 2015

https://github.com/dotnet/roslyn/issues/1921

C#チームは最近、Design ミーティングの方法を少し変えたみたいです(開発速度を上げる目的)。C# チームの一部だけが集まって個別機能について話す会を週に1・2回、そして、全員が集まってレビューする会を月に1回程度行うつもりだそうです。で、そのレビュー会の第1回をやったそうで、これはその議事録。

今回は以下のような議題。

  1. Overall direction
  2. Nullability features
    • val / readonly
    • ref return / locals
    • Never type
    • Method contracts
    • Slices
  3. Performance and reliability features
  4. Tuples
  5. Records
  6. Pattern matching

前節の #1898 とも被るので「詳しくはそっちを見て」で済ませてる項目も結構ありますが。

全体的な方向性、「野心的に、難しい問題を解決していこうという合意は得られた」としています。

おまけ: corefx-progress

https://github.com/dotnet/corefx-progress

「ピックアップRoslyn」内で紹介するのもなんですが、今回は他の .NET プロジェクトの話をついでに紹介。

今、.NET Core の標準ライブラリは、オープンソース化作業のまっただ中にあるわけですが。そのオープンソース化作業の進捗状況を見えるようにするために、この corefx-progress リポジトリを作ったそうです。1リポジトリ使って、これから公開予定のAPI、公開が完了したAPI、その差分をアセンブリごとに取れるようにしています。

Written by ufcpp

2015年4月12日 at 22:59

カテゴリー: 未分類

myget からのパッケージ取得

leave a comment »

Roslyn など、オープンソースで開発されている .NET ライブラリについて、最新版の機能を試してみる方法について、そういえば説明したことないなぁとか思って、今、書いてみることに。要するに、myget サービスから、毎夜ビルド版の最新ライブラリをとってくる方法について。

最新版で何が嬉しいか

Visual Studio 2015 のリリースも近づいてきて、Roslyn プロジェクトも最近は、とにかくリリースに向けた品質担保が急務になっています。Visual Studio 2015 に含めないことになった機能については、作業が止まったりしています。

C# のスクリプト利用が最たる例で、Roslyn プロジェクトの最終ゴールの1つには含まれていますが、今はまだ NuGet Gallary 上にリリースされていません。しばらく表立った動きが全くなかったんですが、最近になってようやく動き始めました。

こういう、NuGet Gallary へのリリースがまだの最新の機能も、myget から取得できることがあります。

NuGet

ここ数年、.NET 開発では、ライブラリの参照に NuGet を使います。NuGet について改めて簡単に説明しておくと、

  • NuGet パッケージ: ライブラリ配布のためのパッケージ仕様(所定のパスに必要なファイルを置いた上で ZIP 化したもの)
  • NuGet リポジトリ: パッケージの置場。パッケージを検索したり、バージョン指定してパッケージをダウンロードしたりできるAPIを提供。仕様に沿ったAPIさえ公開すれば、誰でもリポジトリ サーバーを立てれる
  • NuGet パッケージ マネージャー: Visual Studio 付属の、NuGet リポジトリ クライアント
  • The NuGet Gallary: 公式 NuGet リポジトリ

というような、ライブラリ配布・参照のための一連の仕組みです。

myget

NuGet Gallary へのアップロードは、「リリース作業」に当たります。数週とか数か月に1度、動作保証が(たとえベータ版であってもある程度は)ある状態で行うものです。

これに対して、NuGet パッケージの CI (継続的インテグレーション)サービスを提供しているのが myget です(正確には、NMP や Bower パッケージなどにも対応した、パッケージの CI サービスです)。myget は NuGet リポジトリ機能も提供していて、CI でビルドしたパッケージなどもここからダウンロードして利用できます。

Roslyn とか ASP.NET とか、いくつかのマイクロソフト製ライブラリは、この myget 上で毎夜ビルドしていて、最新の状態のパッケージを取得できるようになっています。

myget 参照

Visual Studio 上で、プロジェクトに対して「Manage NuGet Packages…」(NuGet パッケージの管理)を選ぶと以下のような画面が出ます(Visual Studio 2015 での画面。2013 まではもうちょっとしょぼいダイアログが出ます)。

NuGetManagerInVS2015

ここで、歯車マーク(gear)を押して、設定画面を開きます(2013 の場合は「設定」ボタンがあるのでそれを押す)。

PackageSources

「Package Sources」ページを開いて、+ボタンを押して、myget 公開されているリポジトリを「パッケージの取得元」に追加します。Roslyn の毎夜ビルドの場合、

https://www.myget.org/F/roslyn-nightly/

が、リポジトリの Source URL になります(myget の Roslyn のページ内に「NuGet feed URL」として載っています)。

これで、NuGet Gallary へのリリース前の、最新の NuGet パッケージがとれるようになります。例えば、C# スクリプトがらみのパッケージ「Microsoft.CodeAnalysis.Sctipting.Csharp」なども今すぐ参照できます。

SctiptingCsharp

Written by ufcpp

2015年4月12日 at 15:38

カテゴリー: 未分類