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

http://ufcpp.net/

ピックアップRoslyn 4/25

leave a comment »

C# 7 Work List of Features #2136

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

C# 7に向けた作業項目リストを公開。

関心度合いや実現性の確度に応じてある程度は分類。C# 7(あるいはもっと先のバージョン)に必ずしも入るとは限らないもの(上ほど期待度高そう。中にはすでに「やらない」判定を受けたものもあり)。提案 issueページへのリンク付き。

変更やより良いアイディアがあれば随時更新したいそうなので、定期的に見てみるとよさそう。

ほとんどの項目は、詳細な説明がある提案ページへのリンクがあるし、リンクがないものも大体は意味が分かるんですが。1個だけ、「Supersedes」ってなんだろう。単語的には「下克上」というか、新しいものが古いものに取って代わるって意味なので、後方互換性をいくらか捨てれるような機能とかですかねぇ。コンパイラーに組み込むんじゃなくてコード解析プラグインにしたり(例えば https://github.com/dotnet/roslyn/issues/2119)、Warning Waves (https://github.com/dotnet/roslyn/issues/1580)導入したりとか。

Proposal: Allow unsafe code in iterators #2143

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

イテレーターや非同期メソッド内でも部分的にunsafeコードを認めようという提案。

イテレーターや非同期メソッドみたいに、中断・再開があるような状況でポインターを使うのは危険なので今は認めていないわけですが。ただ、yield や await さえ囲まなかったら問題は起きないので、その場合に限り、イテレーター、非同期メソッド内でも unsafe コンテキスト認めてもよいという話。

Cp1252 #2120

https://github.com/dotnet/roslyn/pull/2120

最近、Roslyn は .NET Core 対応がらみの作業がちらほらあって、その中で、Encoding がらみのコードが結構削られています。

ただ、欧米の開発者から「コメント中に … (HORIZONTAL ELLIPSIS )を書けなくなった」とバグ報告が入ったり。原因は、Windows-1252 の「…」(0x85)が、Latin-1 扱いでデコードすると改行にマッピングされるせい。2010年台も半ばになって今更この手の文字コード問題を見るとは…

日本語の場合、Visual Studio 2005 以降、ソースコードを基本的に UTF8 で保存してくれるようになったので、今となってはそんなに問題が起きることは少ないわけですが(外部ツールでソースコードを作ったりするといまだ Shift JIS とかになって問題出ることがあったり)。

で、今回、この問題の回避方法が… CodePage1252Encoding クラスを自前実装したって…

Unicode 使えよ…

Make the command-line compilers able to generate reference assemblies #2184

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

Roslyn コンパイラーに、参照アセンブリを出力するオプションを追加したそうです。

参照アセンブリは、メソッド シグネチャだけ入ってて、中身のILコードがない(メタデータだけ入った)アセンブリのこと。いわゆる facade アセンブリ。C++ でヘッダーファイルだけあって、cpp ファイルがないような状態。ビルド時にどのクラス・どのメソッドが使えるかを判定したり、IDE 上でのコード補完に使います。

今までは、普通のアセンブリを出力したあと、わざわざILコードを削るような後処理をかけてたはず。

C# Essentials Analyzer

こんなコメントが。

https://github.com/dotnet/roslyn/issues/2235#issuecomment-96043488

ほんとだ、ちゃんと公開されてた。

CSharpEssentialsVsix

Dustin はC#/VB チームの人(確か元々VB系だったような)。C# Essentials は C# 6.0 でよりよい書き方・シンプルな書き方に書き替えれるコードを探してくれるコード解析プラグイン。もちろん、Roslyn 製。

この C# Essentials の GitHub リポジトリ自体は前から公開されていたんですが、つい最近、ビルド済みの Visual Studio 拡張を VS Gallary に置いてもらえたそうです。

GitHub から一式 Clone してきて、ビルドして、できた vsix パッケージをインストールして… とかいう手順やりたくないですしね。ありがたい。

Written by ufcpp

2015年4月25日 @ 16:08

カテゴリー: 未分類

コメントを残す