引き続き、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に依存しているってのはあんまりよくない状態。