引き続き、Roslynリポジトリは「RTMに向けてバグ修正で手いっぱい」感漂って来てて、新しい話はあまりないんですが。

というか、割かし重複提案なissueが立って、速攻で「それ、これとの重複じゃない?」→「重複だった…」的な流れになってるものが多々。まあ、issueが800件超えっぱなしですからねぇ、このリポジトリ。

そんな中いくつか。

Support the tadpole operators #3072

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

完全にネタというか、ネタに振り回されてるというか。

大元の火種はこれ: New C++ experimental feature: The tadpole operators

The Old New Thing」は、「Windows秘話」「Windows温故知新」的に、「Windowsのここがダメだ」とか言われまくってる辺りに対して、何でそんな風になってるのかとか、そんな話を面白おかしくネタにしているブログ。有名な奴だと、「『Windowsはいつも無駄に見た目ばっかり変えやがって』って文句言うけどさ、中身だけ無茶苦茶進化してて、見た目が変わってない電卓は、ずっと進化してること気づいてもらえなかったんだぞ」みたいな話(「When you change the insides, nobody notices」)とか。

で、今回やらかしたネタが、「オタマジャクシ演算子」。機能的に言うと、「副作用のない++, --」、「高優先度の単項+1, -1演算子」。

構文 意味 覚え方
`-~y` `y + 1` オタマジャクシが値の方に向かって泳いで、値を増やす。
`~-y` `y - 1` オタマジャクシが値から去るように泳いで、値を減らす。

これを、「Visual Studio 2015 RCで実装してみた実験的な試み」とか言って紹介(もちろん嘘)。The Old New Thingの方のコメントでも、Roslyn issueページの方のコメントでも、割かしみんな盛大に釣られてるっぽい。

The Old New Thingの次のブログ エントリーでネタを明かしていますが、これ、別に「実験的に実装したもの」じゃなくて、現状の正規のC++文法で(C#ででも)認められた普通の演算です。2の補数とかを知ってれば簡単にわかるんですが、ビット反転 ~ と符号反転 - は1違いの数字になるので。単にこれを並べただけ。

なんというか。4月1日にやれよ…

Provide simple syntax to create a weak-referenced eventhandler #101

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

弱イベント作れる専用構文ほしいという要望。

まあ、気持ちはわからなくはないけども。うちのサイトにも「弱イベント」の話ありますが。

乱用すると性能面での影響が無視できない、かつ、何も知らないと簡単に乱用される機能なんですよねぇ。個人的にはあると楽になるけど、ほんとにあったらやばそうな機能すぎて、ちょっと。

Compilation without generics #3064

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

.NET Micro Frameworkではジェネリック使えないんだし、C#コンパイラー的に「ジェネリックを認めない」版を提供してくれないかという要望。

というか、C# 4.0以降、自動実装イベントから生成されるコードが変わって、中身でジェネリック版Interlocked.CompareExchangeを使うようになったせいで、.NET MFでイベントが使えないという問題と合わさって結構深刻みたい。

.NET MF自体が今後どうなの?という感じもあり。

まあ、この場合、本当の問題は、自動実装イベントがInterlocked.CompareExchangeに依存してることな感じも。コンパイラー生成コードが、undocumentedに、何か特定のAPIに依存しているってのはあんまりよくない状態。