コンパイラーの資源枯渇系エラーとの付き合い方
ちょっとしたきっかけがあって、C# 7のタプル、何要素まで書けるのかというのにチャレンジすることになりまして。 結果だけ書くと、数万要素のタプルを書くとVisual Studioがクラッシュしました。 これは、別にタプルに限った話ではなくて、巨大なソースコードを食わせてコンパイラーを限界まで酷使したら落ちるのは当然なことでして。...
View ArticleC# 6, C# 7
最近、C#がらみの原稿仕事を依頼されたとき、よくある校正が「C# 6になってますけども、6.0ですよね?」。 回答は「いえ、C# 6が正式です」。 C#のバージョン番号、6以降は .0 を付けないのが正式っぽいんですよね。実は。 C# 1.0 C# 1.1 (#lineディレクティブと/** doc comment */が追加されただけ。1.1なのか1.2なのかも割かしよくわからず) C# 2.0...
View Articledot.net にC#オンライン エディター
.NET Core、リリースされましたね。 まあ、その辺りの話は他の人に任せるとして。 .NET Core / ASP.NET Core 1.0 が RTM になりました .NET Core 1.0 RTM / Visual Studio 2015 Update 3 自分が気になったのはこちら。 Scott Hanselmanの.NET...
View ArticleピックアップRoslyn 2/3: csharplang リポジトリ
ようやく、言語設計に関するリポジトリを、Roslynから分離する流れに。 C# Language Design Visual Basic .NET Language Design ここまではOK。 Roslynリポジトリはコンパイラー実装に関するリポジトリなわけで、issueはバグ報告とかで埋まります。...
View Articleピックアップ Roslyn 2/10
Visual Studio 2017 のリリース日、決まったみたいですね。 「Visual Studio 2017」のリリースは3月7日 リリース記念勉強会を開く(リリースされてなかったら「リリース直前勉強会」にする)つもりで3/11(土)に会場を押さえてあるんですが、割かしいいタイミングだったみたいで。 そろそろ1か月前ですし、告知・募集ページを近々作る予定です。 で、Visual...
View ArticleピックアップRoslyn 2/13
2/10のブログの補足。 csharplangリポジトリ内にいくつか提案ドキュメントが上がり始めたというものの中で、2点ほど取り上げて紹介。この2個だけ、ちょっと以前からの進展があったものです。 読み取り専用参照 Readonly references 最近、C#でも構造体を使ったパフォーマンス改善をいろいろやろうとしているわけですが。 参照戻り値とかはそのための機能ですし、...
View Articleローカル関数
ちょっと間が空いたんで「C# 7思い出話」タグでなんか書いてたことを忘れかかっていたりはしますが。 C# 7のページにローカル関数の話を足しました。 これで、現状で仕様が結構安定してるやつは全部なんですよねぇ。type...
View ArticleピックアップRoslyn 2/23: Shapes and Extensions
久しぶりに面白そうな話が。 Exploration: Shapes and Extensions #164 2つほど原案があって、組み合わせて結構よさげな機能案ができたので詳細を詰めていきたいという感じの話。 元になっているのは以下の2つ。 Extension everything メソッドだけじゃなくて、プロパティとかインデクサーとかあらゆるものを「拡張」定義したい...
View ArticleピックアップRoslyn 2/28: Milestones 7.X
なんか、csharplang にマイルストーンが切られてた。 ちなみに、リリース時期を邪推されないように、期日は2070年とかのむちゃくちゃな日付になっています。 7.0が2070年、7.1が2071年、…みたいな。 7.0 7.0 3/7のリリースを考えるととっくに実装終わってるはずのもの。...
View ArticleピックアップRoslyn 8/10
7月のデザインノートが2件ほど。 C# Language Design Notes for Jul 12, 2016 C# Language Design Notes for Jul 13, 2016 これ関連の作業がひと段落したところでまとめて清書して表に出したって感じですかねぇ。 この辺りの話、かなりの割合がもう実装されててマージされてたりします。...
View ArticleピックアップRoslyn 3/18: インターフェイスのデフォルト実装
C#でもインターフェイスのデフォルト実装(まんま、Javaのデフォルト メソッドと同じ機能)の実装始めたって。 Enable a default implementation of an interface method to be provided as part of its declaration. #17927 結構びっくり…...
View ArticleC# 7.0リリース(もう2週間くらい経過したけども)
気が付けば、Visual Studio 2017がリリースされてから2週間くらい経ってしまっているわけですが… マイクロソフト公式のRelease CelebrationでLT登壇したり、 自分主催のリリース記念勉強会やったりとかで、 すっかり力尽きていました。 そんな感じでしたが、2点ほどそれの事後的な話。 リリース記念勉強会の動画上げました C#...
View Article.NET Framework 4.7
.NET Framework 4.7がリリースされたみたいですね。 Announcing the .NET Framework 4.7 更新内容 .NET Framework 自体よりも、ドキュメントとかのシステム更新の方が目立つかも。 API ドキュメントが docs に移行 API の更新履歴が GitHub 上に 自分が直接関係しそうなのは、ValueTuple構造体の追加くらいかなぁ。...
View ArticleピックアップRoslyn 8/16 Close祭り
実作業が一段落つくと始まるissue整理。 すごい数一気にコメントついたりCloseされたり。以下、そのまとめ。 やらない 1行目: どういうものか 2行目: やらない理由 Proposal: Fixed-size buffers enhancements #126 構造体の内部に固定長配列を持てるようにしたい。...
View ArticleピックアップRoslyn 4/16
結構久々のSprint進捗報告。 Sprint 116 Summary #18719 Visual Studio 2017リリース前後の作業が「バグ修正してた」しかなかったので、割かしほんとに久々。 C# 7.1/7.2作業が始まっています。 いくつか紹介。...
View ArticleC# でビットフィールド
csharplangに、 C++のビットフィールドみたいなの、C# にもほしい (任意のビット数を表す)bit 型が欲しい みたいなのが投稿されていまして。 「それ、ライブラリとアナライザー、ちょっとしたソースコード生成でできるよ。」という話。 BitFields ライブラリ ということで実装してみたのがこちら。 BitFields ライブラリのソースコード...
View Articleint 型のジェネリック型引数
昨日のビットフィールド用コード生成の副産物の話。 M~Nビット目 「int型変数のM~Nビットの範囲を取り出す処理をしたい」みたいなときに、「M~Nビット目を表す型」を作りたいときがあったりします。 (まあ、ビットフィールドの利用頻度自体がそんなに高くないので、この型の需要もそこまで大きくはないですが。) ってことで、書きたいのはこんなコード: // C#...
View Articleタプル
思い出したかのように「C# 7思い出話」。 タプルがらみも先週末で一通り書き終わったはずかな。 名前のない複合型 タプル 複合型の分解 タプル これ自体はおおむね当初予定通りですかね。 そんなに裏話的な面白話もなく。 文法的に変化が大きいんで実装は大変そうでしたが。 しいていうと、他の提案を差し置いてタプルの優先度が高かった的な話ですかね。 タプルは、レコード型とか、 C#...
View Article新しい csproj 形式
Visual Studio 2017で、csproj 形式が新しくなりました。 背景としては、 一時期、脱msbuildをしようとしてた -脱msbuildのついでに、csprojを辞めて、project.json 形式にプロジェクト設定全部入れようとしてた時期があった 結局、msbuildに戻ったけども、既存のcsprojをもっとシンプルにしたいという要件だけが残った...
View ArticleVisual Studio 2017 Update 3 (15.3) Preview
Build 2017で、Visual Studio 2017 Update 3の Preview 版が公開されました。 (ちなみに、Preview のつかない安定板 Visual Studio とは side by side の別フォルダーへのインストールになります。) 当初、.NET Core 2.0/.NET Standard 2.0 Preview...
View Article