ピックアップRoslyn 11/16: Microsoft Connect(); 2017
Connect の1日目がありましたが。 Live Share 今回一番気になったのは、Visual Studio Live Shareですかね。 Visual Studio 2017とVisual Studio Codeで、コーディングやデバッグをリアルタイムに画面共有するコラボツール。...
View Article小ネタ オブジェクト初期化子
今日の小ネタは、オブジェクト初期化子について、意外と知られてないらしい話。 問い 唐突ですが問題です。以下の3つのコードはそれぞれどういう意味でしょう。 var x = new Line { A = new Point { X = 1, Y = 2 }, B = new Point { X = 3, Y = 4 }, }; var x = new Line { A = { X = 1, Y = 2...
View ArticleVisual Studio 15.5 Release
正式リリース来ちゃった。 リリース ノート Visual Studio チームのブログ ソリューションのロード時間が半分くらいになってるんで一刻も早く使いたいんですけども… 先日、↓の勉強会の最後の方(31ページ目~)でちょっと話した通り、Unity でちょっと問題が出ていて、職場のPCではアップデートしばらくできないかも… Unityで使える C# 6.0~と .NET 4.6 from 信之...
View Article小ネタ コレクション初期化子
昨日のオブジェクト初期化子に続き、今日はコレクション初期化子の話。 コレクション初期化子ってのは、例えば以下のようなやつのことです。 // この、{} の部分がコレクション初期化子。 var x = new List<int> { 1, 2, 3, 4, 5 }; このコレクション初期化を使える条件は、Add メソッドを持っていて、かつ、 IEnumerable...
View ArticleRune と fast Utf8String
今日はRoslynじゃなくてCoreFx方面の話だし、issueの投稿日時的には9月とかで割かし「今更」な話。 Introducing System.Rune #24093 New UTF8String APIs #1751 Rune 1個目のやつ、要は「Unicode のコードポイントに相当するプリミティブ型が欲しい」的な話です。 文字とは… プログラミングにおける「文字」に関するおさらい:...
View Article小ネタ インデックス付き foreach
foreach ステートメントで、インデックス付きで列挙したいことが時々あります。 今回は、そういうときの対処方法について。 というか、C# 7が待ち遠しくなる話。 配列やList<T>であれば以下のようにも書けます。 for (int i = 0; i < length; i++) { var item = array[i];...
View Articleアナライザーのプロジェクト テンプレートとか dotnet new のテンプレートの話
今日は dotnet new向けのテンプレートを書いてみたという話。 Visual Studio 標準の "Analyzer with Code Fix" テンプレートにちょこっと手を入れたやつです。 AnalyzerConvention 背景 自作アナライザー 昔、結構アナライザーを書いてたんですよ。 ValueChangedGanerator...
View Articleバグ報告祭り
やっぱリリースするといろいろバグを見つけるよねと言う話 (Visual Studio 15.5がリリースされて以来バグ報告たくさん出してる)。 twitter で見かけたのを代理で報告出したり、 前々から気になってたのを改めて調べてみたらコンパイラーのバグだったり、 リリースまでに直るだろうとか高をくくってたやつがまだ直ってなかったり。 safe stackalloc...
View Articleビルドで使う C# コンパイラーを差し替える
Visual Studio 2017 15.5で、C# コンパイラーのコード生成の仕方がちょっと変わりました。 その余波で起きる問題を回避するために、Visual Studio は 15.5 のまま、C# コンパイラーのバージョンだけを下げる方法について話します。 背景 C# コンパイラーが出力するコードのどこが変わったか 15.5 の世代では、とにかくいろいろパフォーマンス改善を行っています。...
View Articleコピー禁止(non-copyable)構造体アナライザー
書き換えられる(mutable)構造体を作ると事故る問題を解決するためにアナライザー作りました。 mutable 構造体 一般論としては、構造体を mutable に作ると事故ります。 要するに、「書き換えたつもりが、実は書き換えてたのはコピーであって元の値は書き換わってない」的なやつ。 なので、たいていの場合は「構造体は immutable(書き換え不能)に作れ」という指針になります。...
View ArticleピックアップRoslyn 1/3: Regex パーサー / C# 7.2 fixes
なんかこう、GitHub リポジトリのwatchとかしてると、 だいたいアメリカのホリデーシーズンに合わせて自分まで「もう休み」な気分になってしまい。 要するに、12月20日前後にはもう休み気分で。 代わりに1月は2日から仕事に復帰してる感じの人が多く、休みあけた気分に。 Regex パーサー 事の発端は、「C# に Regex リテラルを入れてくれ」とかいう、まあ、芽がない提案なんですが。...
View Articleawait って言う単語
C# 5.0で非同期メソッドが導入されてから、 正式リリースを基準にしても5年以上、 最初の発表からだと7年以上経っています。 で、5年経っても、「なんて読むの」「asyncのaとawaitのaは違う」などなどが「定番ネタ」として定期的に出てくるわけですが。 特に、ECMAScript 2017がasync/awaitを導入したり、 Unity...
View ArticleGetUnicodeCategory(int codePoint) を提案してみた
今日は、.NET で、U+10000 以上のコードが割り当たってる文字の Unicode カテゴリー判定をする方法について。 提案を出したらそのままプルリクを出すことになった話。 背景 U+10000 以上の文字 Unicode について詳細は、昔書いた記事があるのでそちらを参照。 Unicodeとは? その歴史と進化、開発者向け基礎知識 Unicodeと、C#での文字列の扱い ここではさらっと。...
View ArticlePickup Roslyn 1/21
今日は coreclr, corefxlab, designs から1件ずつ、計3つ。 C# スクリプトの実用 Update clr-configuration-knobs.md, add new C# csi.exe based script for xplat document generation #15858 なんかドキュメント生成系のスクリプトを1個、sh から C#...
View Article小ネタ null関係の演算子
今日は、?.とか??での、nullの判定方法について。 C# 6で導入されたnull条件演算子(?.)ですが、以下の2つの式がほぼ同じ意味になります。 x != null ? x.M() : null x ?.M() 「ほぼ」であって「完全に同じ」と言えないのは、==演算子を呼ぶか呼ばないかが変わってしまうせいです。 前者(自分で==を呼んでいるやつ)はオーバーロードされた==を呼び出しますが、...
View Article++C++; // 未確認飛行 C をリニューアルしました
「++C++; // 未確認飛行 C ufcpp.net」 をリニューアルしました。これに伴い、ブログも統合し「WordPress https://ufcpp.wordpress.com/」から「http://ufcpp.net/blog」へ変更となります。 2000年よりサイトを運営しているため、一部古い内容のものがあります。ご了承ください。...
View ArticleBuild 2015
Build 2015 の資料に目を通すの数日かかった… 結構長し読みだったんですけども。 CEO交代後のマイクロソフトの デバイスとサービスの会社になる すべての開発者、すべてのデバイス、すべてのプラットフォームにアプローチ という方針がついに形になって表れ始めたという印象でした。 デバイス 発表の3分の1くらいは「Windows 10」がらみでした。...
View Articleピックアップ Roslyn 5/14
Build 2015の資料に目を通すので忙しくてサボっていましたが。 まあ、もっとも、C#チーム、Visual Studioチーム的にもRC版が出たばかり、かつ、RTMも近いだろう状況で、GitHub上の動きを見ててもバグ修正で多忙な雰囲気を感じます。 そんな中、いくつかピックアップ。 Unicode version number...
View ArticleVisual Studio 2015 RC と pdb2mdb
Unity (というか、Visual Studio Tools for Unity)とVisual Studio 2015 RCとの間での問題で、PDBからMDBへの変換がうまく動いてなくて困っている(一時的な対処方はなんとかできてる)という話。 PDB, MDB まず、PDBって何かの簡単な紹介から。 PDBはProgram Databaseの略です。 Program...
View ArticleピックアップRoslyn 5/27
引き続き、Roslynリポジトリは「RTMに向けてバグ修正で手いっぱい」感漂って来てて、新しい話はあまりないんですが。 というか、割かし重複提案なissueが立って、速攻で「それ、これとの重複じゃない?」→「重複だった…」的な流れになってるものが多々。まあ、issueが800件超えっぱなしですからねぇ、このリポジトリ。 そんな中いくつか。 Support the tadpole operators...
View Article