ピックアップRoslyn 4/25
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
ほんとだ、ちゃんと公開されてた。
Dustin はC#/VB チームの人(確か元々VB系だったような)。C# Essentials は C# 6.0 でよりよい書き方・シンプルな書き方に書き替えれるコードを探してくれるコード解析プラグイン。もちろん、Roslyn 製。
この C# Essentials の GitHub リポジトリ自体は前から公開されていたんですが、つい最近、ビルド済みの Visual Studio 拡張を VS Gallary に置いてもらえたそうです。
GitHub から一式 Clone してきて、ビルドして、できた vsix パッケージをインストールして… とかいう手順やりたくないですしね。ありがたい。
コメントを残す