NuGet.org のパッケージ詳細ページのデザインが新しくなりました。
いろいろな情報がすべて表示されていましたが、ターゲットフレームワークのバッジなど今後も追加したい要素があるということでタブベースのデザインに変更したそうです。README を表示する機能は少し前から実装されていましたが、より目立つ形になっているのでこれからリリースするパッケージには含めるのがよさそうです。
Windows Community Toolkit v7.1 がリリースされました。
Microsoft ID 認証に関する刷新やドロップシャドウを実現するためのスタイルの追加などが行われています。ドロップシャドウに関しては Microsoft Store アプリで使用されているそうです。
Npgsql v6.0.0 RC1がリリースされました。
複数ホストへの接続や Raw SQL、バッチ実行といったものがサポートされ、.NET 6 に向けた対応も含まれています。
ReSharper 2021.3 EAP と Rider 2021.3 EAP がリリースされました (EAP == プレビュー的なリリース)。
それぞれ C# 10 への対応や ReSharper は Visual Studio 2022 の対応、Rider は .NET 6 SDK への対応をはじめ、プロジェクトプロパティーや Debug の UI の変更などが含まれています。また Apple Silicon 向けのビルドも別途リリースされています。
トピックス
Introducing the New NuGet.org Package Details Page - The NuGet Blog
https://devblogs.microsoft.com/nuget/introducing-the-new-nuget-org-package-details-page/
NuGet.org のパッケージ詳細ページが4年ぶりに新デザインに刷新された。
デザイン変更した理由として、2021年の5月からパッケージに含まれる README を表示する機能が追加され、今後ターゲットフレームワークに関する情報を表示する予定もあるが、要素を追加するためのスペースが不足してきたためタブデザインで逃がすことにした。
記事では実際にリリースされるまでのフィードバックについても触れている。
Announcing Windows Community Toolkit v7.1 - Windows Developer Blog
https://blogs.windows.com/windowsdeveloper/2021/09/23/announcing-windows-community-toolkit-v7-1/
Windows Community Toolkit v7.1 がリリース。
Microsoft ID 認証のヘルパーとプロバイダーの刷新と Microsoft Graph API と OneDrive をサポートするヘルパー API とコントロールの提供。
コントロールにドロップシャドウをつけるためのスタイルを追加。既存の DropShadowPanel コントロールに代わるものでコントロールをラップせずスタイルとして適用する。実装には Win2D ベースの AttachedCardShadow
と UWP の Composition ベースの AttachedDropShadow
がある。AttachedCardShadow
は Win2D への依存があり矩形のみのサポートとなるがパフォーマンスもよい、AttachedDropShadow
は Composition を使用するため UWP アプリでのみ使用できるがマスク画像やテキストなどもサポートするといった違いがある。
RichSuggestBox コントロールの追加。@
によるユーザー名のサジェストのようなものを提供できる RichEditBox。
MVVM Source Generator がプレビューで追加され、ObservableProperty
, ICommand
, INotifyPropertyChanged
属性などでマークすることでボイラープレートコードの生成が行えるようになった。
そのほか Toolkit Labs という形で実験的なパッケージが提供されるようになった。今後 Lab リポジトリなどが用意される予定。すでに物体認識のような Intelligent APIs や視線入力の Gaze Controls といったものがある。
Release v6.0.0-rc.1 · npgsql/npgsql
https://github.com/npgsql/npgsql/releases/tag/v6.0.0-rc.1
Npgsql v6.0.0 RC1 がリリース。
6.0 ではロードバランシングなどを含むマルチホスト接続、タイムスタンプの改善、Raw SQL の発行や .NET 6 で導入されたバッチ API を使用したバッチ実行、.NET 6 の DateOnly/TimeOnly のサポートの追加など。
Raw SQL の発行は Npgsql がクエリーを書き換えずパラメータを送信するようにする仕組みで、以前の名前付きパラメータに代わるもの。名前付きパラメータはクエリーをパースし、書き換えてから PostgreSQL に送信していたが Raw SQL ではクエリーはそのまま PostgreSQL へ送信するため安全性が高まり、クエリーも効果的になるとのこと。
- Npgsql 6.0 Release Notes | Npgsql Documentation
- Query parameters, batching and SQL rewriting - Shay Rojansky’s Blog
- New System.Data.Common batching API · Issue #28633 · dotnet/runtime
Release v1.41.0 · grpc/grpc
https://github.com/grpc/grpc/releases/tag/v1.41.0
gRPC v1.41.0 がリリース。
C# (C-core) に関連する変更としては非常に稀なケースでレスポンスのメタデータが破損してしまう問題の修正、non-ASCII な環境でネイティブライブラリーへのパスに non-ASCII な文字が含まれる場合に読み込み失敗してしまうことがある問題の修正など。
Rider 2021.3 Early Access Program Has Launched! | The .NET Tools Blog
https://blog.jetbrains.com/dotnet/2021/09/28/rider-2021-3-eap/
Rider 2021.3 EAP (早期アクセス) がリリース。
ソリューションにまつわる問題点を一覧できる Problems View が追加。コードに関連する問題以外も NuGet や .NET SDK といったツールや環境に関する問題を列挙してその場で対応できる。
.NET 6 SDK に対応、Debug タブの UI 変更、デバッガーの改善により UWP のサポートと Windows 上での Windows Docker コンテナー内でのデバッグが可能となった。
file-scoped namespace のような C# 10 に関連した言語の対応やコード解析、SQL 言語 Injection のサポート改善、Unity 向けのコードで XML ドキュメントを Tooltip
属性に変換する機能、Apple Silicon 向けビルドの提供、プロジェクトとソリューションのプロパティーウィンドウの改修など。
ReSharper 2021.3 Starts Early Access Program! | The .NET Tools Blog
https://blog.jetbrains.com/dotnet/2021/09/28/resharper-2021-3-eap/
ReSharper 2021.3 EAP (早期アクセス) がリリース。
Visual Studio 2022 Preview がサポートされ、file-scoped namespace のような C# 10 に関連した言語の対応やコード解析の改善が行われた。
Namespace.Type.Member
といった FQN 形式でコピーする Copy FQN が Copy Code Reference に変わり、GitHub へのリンクやカスタム URL パターンを定義してコピーできるようになった。
.NET 5 SDK から対応した AnalyzerConfig ファイルに ReSherper も対応した。パラメータやフィールドを LanguageInjection
属性でマークすることで Language Injection を有効化できるようになった。
dotMemory は Windows では ETW イベントを使用してアロケーションをサンプリングできるように。正確さは以前の手法には劣るがパフォーマンスペナルティがない、集めるために有効にする必要がない、すでに動作中のアプリケーションでも集められるといった利点がある。
Avoiding Memory Leaks in Visual Studio Editor Extensions - Visual Studio Blog
Visual Studio のインプロセス拡張でのメモリーリークを防ぐための VS IDE チームが持つベストプラクティスの紹介。
MEF パーツによるメモリーリークでは ITextView
のような重いオブジェクトの参照を一つ持つだけでも関連するソリューションまで参照が広がり、多くのリークが発生する例が挙げられている。対策として MEF パーツには強参照/ステートを持たない、持つ場合にはスコープのライフタイムに限定できるようにする、どうしても参照を持つ場合には WeakReference を使う。
C# のイベントリスナーのリークの例も同様に、イベントを購読する際に重いオブジェクトへの参照が間接的に発生してしまう。対策として ITextView.Close
のような不要になるタイミングでの購読解除や IDisposable を IDE が呼び出すものであれば Dispose を実装する。
他にも静的なステートや WPF のデータバインディングの例が挙げられている。また、それらメモリーリークを解析するためのツールについても触れている。
Announcing: Azure credits for open source projects - Microsoft Open Source Blog
Open Source Initiative (OSI) に承認されたライセンスで提供しているオープンソースプロジェクトに対して Azure のクレジットを提供するプログラムを開始。現時点で FreeBSD や Haskell といったプロジェクトが参加している。
VS Code in the browser for everyone
https://www.gitpod.io/blog/openvscode-server-launch
Gitpod が Gitpod や GitHub Codespaces のように Visual Studio Code をリモートサーバーで稼働させる OpenVSCode Server を公開。
Visual Studio Code 本体には GitHub Workspaces のような形で実行するためのパーツが欠けているため、フォークして最小の変更で埋めることでサーバーで動作できるようにしている。Docker をはじめ AWS や GCP といったクラウド環境での起動方法も用意されている。
Gitpod との直接の違いは環境も含めすべてマネージドであって欲しいか、あるいはリモートで Visual Studio Code が動作しそこにアクセスしたいかにあるとしている。
アーティクル、スライドなど
How to Deploy a Dockerized Web App to Heroku using the GitHub Actions
Docker イメージにした .NET の Web アプリケーションを GitHub Actions から Heroku にデプロイして動かす方法についての記事。
Implicit Usings in .NET 6
https://www.hanselman.com/blog/implicit-usings-in-net-6
Implicit using について簡単に紹介する記事。
C# 10.0 の補間文字列の改善
https://ufcpp.net/study/csharp/start/improvedinterpolatedstring/
C# 10 での補完文字列 (String interpolation) の改善についての記事。
InterpolatedStringHandler
属性を持つハンドラー型を使用した文字列フォーマットの展開例や実装例、オーバーロード解決や .NET 6 で String クラスなどに追加された API についても触れている。
自作のWPFアプリを後から自動テスト・DI・CI/CD対応にしてみる。その1 - Qiita
https://qiita.com/soi/items/273e60b2a48d57ae762f
WPF アプリケーションの自動テストと DI の導入、CI 対応についての記事。
テストは xUnit を、DI は Microsoft.Extensions.DependencyInjection を採用。CI は GitHub Actions でカバレッジの取得や Release の作成まで行う。
.NET 6 の Blazor のコンポーネントでクエリ パラメーターを使うのが簡単になりました
https://zenn.dev/okazuki/articles/blazor-wasm-rc1-queryparam
.NET 6 Preview 7 以降の Blazor に追加されたクエリーストリングをパラメーターとして受け取る SupplyParameterFromQuery
についての記事。
NavigationManager
クラスに追加されたアプリケーション側から URL やそのパラメーターを変更するためのメソッドについても触れている。
C# での Web アプリ開発で、要求 URL 中のクエリ文字列をいい感じに読み取る - 特に Blazor WebAssembly (とりわけ .NET 5 以前) での注意点 : @jsakamoto
https://devadjust.exblog.jp/28884450/
Web アプリケーションでのクエリーストリングのパースについての記事。
HttpUtility.ParseQueryString
と UriExtensions.ParseQueryString
の違いについてや Blazor (.NET 5) での注意など。
.NET 6 の Blazor で追加された <head> タグの中を変更する機能の紹介
https://zenn.dev/okazuki/articles/blazor-dotnet6-headoutlet
.NET 6 の Blazor で導入された head
要素に関するコンポーネントについての紹介記事。
head
要素にページごとに要素を追加できる HeadContent
コンポーネントと、ページのタイトルを設定できる PageTitle
コンポーネントが追加された。
Entity Framework Biweekly Status Updates (2021) · Issue #23884 · dotnet/efcore
https://github.com/dotnet/efcore/issues/23884#issuecomment-926052851
2週ごとの Entity Framework のステータス更新レポートの9月23日分。EF Core 6.0 のステータスが Feature complete となったことなど。
How to retry failing dotnet tests in GitHub Actions
https://www.cazzulino.com/dotnet-test-retry.html
ネットワークが絡むテストなどで失敗しやすい (flaky) テストを GitHub Actions で実行する際にリトライする方法についての記事。
bash シェルスクリプトで失敗をカウントしつつ、失敗したテスト名を抽出して部分的にリトライする (--filter
) といった手法。
Exploring the code behind WebApplicationBuilder: Exploring .NET Core 6 - Part 3
https://andrewlock.net/exploring-dotnet-6-part-3-exploring-the-code-behind-webapplicationbuilder/
.NET 6 の WebApplicationBuilder についての詳細に解説している記事。
WebApplicationBuilder は内部に何を抱えていて、どうアプリケーションが構築されるのかといった点に触れている。
Creating Roslyn API-based static analyzer for C#
https://medium.com/pvs-studio/creating-roslyn-api-based-static-analyzer-for-c-c0d7c27489f9
Roslyn ベースでの静的コードアナライザーの作成についての記事。
スタンドアローンで実行可能なコードアナライザーの作成方法から、シンタックスツリーの歩き方についてや Semantic Model とシンボルといったものの扱い方などにも触れている。
EFCore でレコードに対するトリガーを実行する - Qiita
https://qiita.com/karuakun/items/2db2e7ff8411e3a455cd
Entity Framework を使用してレコードに対する操作を行う際に C# のコードレベルで追加の処理を行う方法 (更新日のようなカラムを更新するとか) についての記事。
DataContext の拡張、インターセプターによるフック、EntityFrameworkCore.Triggered を使用した方法が紹介されている。
Azure Active Directory's gateway is on .NET Core 3.1! - .NET Blog
https://devblogs.microsoft.com/dotnet/azure-active-directorys-gateway-service-is-on-net-core-3-1/
Azure Active Directory のゲートウェイサーバーを .NET Framework から .NET Core 3.1 に移行したという2021年1月の記事。
.NET Core に移行を完遂するにあたって Web サーバーの検討、アプリケーションの移行、段階的なロールアウトを行ったことについて書かれている。 また .NET Framework の ASP.NET との挙動の違いといった移行の中であった学びにも触れている。
Custom deployment layout for Blazor WebAssembly apps - ASP.NET Blog
https://devblogs.microsoft.com/aspnet/custom-deployment-layout-for-blazor-webassembly-apps/
.NET 6 の Blazor WebAssembly ではカスタムしたアプリケーション配布パッケージを作成する仕組みを NuGet パッケージとして提供できるようになったことについての記事。
カスタム配置は例として DLL のダウンロードがブロックされている場合にひとまとめにした形でダウンロードするといった利用方法が考えられ、マルチパートなファイルにまとめるというサンプルコード/パッケージが公開されている。
JavaScript の Blazor の初期化プロセスに介入する部分と MSBuild タスクによってファイルをパブリッシュする部分の拡張ポイントが増えたことで実現可能となったとのこと。
WPF の Window 上に Direct3D12 でレンダリングする
https://zenn.dev/tan_y/articles/25cc05576ef11a
.NET 5 の WPF アプリケーションのウィンドウ上に Direct3D12 でレンダリングした結果を表示する方法についての記事。
WindowsFormsHost を使用したウィンドウにレンダリングする方法、D3DImage を使用した WPF を介してレンダリングする方法がそれぞれの長所/短所と共に紹介されている。
The code worked differently when the moon was full
https://www.hanselman.com/blog/the-code-worked-differently-when-the-moon-was-full
3-4週間おきにスレッドプールのスレッド数がコア数またはコア数+20を行ったり来たりする謎のバグについての記事。
これは Windows 95 で有名な 49.7 日問題と似て PortableThreadPool
の ShouldAdjustMaxWorkersActive
メソッドの中で Environment.TickCount
による値を使用していたため。PortableThreadPool ではヒルクライム アルゴリズムを用いてスレッド数を調整する仕組みとなっているがこれが適切に呼び出されない周期が発生していた。
int priorTime = Volatile.Read(ref _separated.priorCompletedWorkRequestsTime);
int requiredInterval = _separated.nextCompletedWorkRequestsTime - priorTime;
// currentTimeMs が Environment.TickCount の値。Environment.TickCount は 24.9 日で負に変わる。
// priorCompletedWorkRequestsTime と nextCompletedWorkRequestsTime は起動時には 0 となっている
// この時 Environment.TickCount が負を返すと elapsedInterval は負になる
int elapsedInterval = currentTimeMs - priorTime;
if (elapsedInterval >= requiredInterval)
{
// ヒルクライムが実行される == スレッドの数が調整される
// priorCompletedWorkRequestsTime と nextCompletedWorkRequestsTime も更新する
Using the Model Builder and AutoML for Creating Lead Decision and Lead Scoring Model in Microsoft ML.NET
Model Builder と AutoML を使用してリードスコアリングモデルを ML.NET で使用するステップバイステップの記事。
A .NET Object from allocation to collection
https://github.com/Maoni0/mem-doc/blob/master/presentation/ObjectJourney.pptx (PowerPoint Online で開く)
オブジェクトのインスタンスを生成した際のアロケーションで OS やハードウェア上でのメモリーから始まり GC されるまでを解説したスライド。
I've been so busy that I barely look at twitter these days. just published the slides from an internal talk I gave yesterday - very different from my normal GC talks as it touches a bit of all layers - the hardware (MMU), the OS (virtual memory) and the GC https://t.co/fuZBgq6LGQ
— Maoni Stephens (@maoni0) September 29, 2021
ライブラリ、リポジトリ、ツールなど
ChilliCream/hotchocolate: Welcome to the home of the Hot Chocolate GraphQL server for .NET, the Strawberry Shake GraphQL client for .NET and Banana Cake Pop the awesome Monaco based GraphQL IDE.
https://github.com/ChilliCream/hotchocolate
GraphQL 2021 draft spec に対応した GraphQL サーバーとクライアントのライブラリー。Monaco ベースの GraphQL エディターも提供されている。
GraphQL for .NET (graphql-dotnet) との違いはパフォーマンス、より良いパーサー、フィルターやミドルウェア、フレキシブルな code-first アプローチなどがあるとのこと。
- Creating a GraphQL API with .NET5 and HotChocolate
- Justification for HotChocolate as opposed to GraphQl.Net · Issue #392 · ChilliCream/hotchocolate
DataGenerator/mxProject.Devs.DataGenerator at main · mxProject/DataGenerator
https://github.com/mxProject/DataGenerator/tree/main/mxProject.Devs.DataGenerator
ランダムなテストデータを含むレコードを返すライブラリー。IDataReader
を介したデータアクセスが可能。
ltrzesniewski/pcre-net: PCRE.NET - Perl Compatible Regular Expressions for .NET
https://github.com/ltrzesniewski/pcre-net
PCRE (Perl 互換正規表現) ライブラリーの .NET 向けのラッパーとなるライブラリー。
System.Text.RegularExpressions.Regex
と似たインターフェースを提供している。
nsubstitute/NSubstitute: A friendly substitute for .NET mocking libraries.
https://github.com/nsubstitute/NSubstitute
使いやすさを重視したモックインスタンス生成用ライブラリー。
roubachof/Sharpnado.MaterialFrame: A modern Xamarin.Forms Frame component supporting blur, acrylic, dark mode. Implemented with RealtimeBlurView on Android (custom blurview) and UIVisualEffectView on iOS.
https://github.com/roubachof/Sharpnado.MaterialFrame
Xamarin.Forms 向けのクロスプラットフォームなブラー/アクリルエフェクトを実現するコンポーネントのライブラリー。
jamesmh/coravel: Near-zero config .NET Core micro-framework that makes advanced application features like Task Scheduling, Caching, Queuing, Event Broadcasting, and more a breeze!
https://github.com/jamesmh/coravel
設定がほとんど不要なタスクスケジューラーサービスを提供するライブラリー。
キャッシュやキューイング、メール送信といった機能も持っている。ダッシュボードなどを提供する有償版もある。
サイト、ドキュメントなど
Programming Idioms
https://www.programming-idioms.org/
様々なプログラミング言語によるパターン別の実装例を載せているサイト。(例: C# で文字列を逆順にするコード)
Apply rounded corners in desktop apps - Windows apps | Microsoft Docs
https://docs.microsoft.com/en-us/windows/apps/desktop/modernize/apply-rounded-corners
Windows 11 の角丸ウィンドウに対するアプリケーションで行う対応についてのドキュメント。
デフォルトでは角丸となるが角丸とならないケース、意図的に角丸を抑制したいケースでの C#/WPF と C++ による対応方法についてなど。
2021 - UnoConf 2021
Uno Platform のカンファレンスが2021年11月30日の正午 (日本時間 2021年12月1日午前2時) にオンラインで開催。
AspNetCoreDiagnosticScenarios/AsyncGuidance.md at master · davidfowl/AspNetCoreDiagnosticScenarios · GitHub
https://github.com/davidfowl/AspNetCoreDiagnosticScenarios/blob/master/AsyncGuidance.md
Devid Fowler 氏による非同期プログラミングのベストプラクティスガイド。
Hello World - C# の概要に関する対話型チュートリアル | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/csharp/tour-of-csharp/tutorials/hello-world
Web ブラウザー上で Hello World を出力するような C# コードを記述、実行できるインタラクティブなチュートリアル。
ツイート
All my tweets about C# 10 features in one thread. 🧵
— Oleg Kyrylchuk (@okyrylchuk) September 26, 2021
Retweets are appreciated 😊#dotnet #csharp #coding #devcommunity
続くスレッドで C# 10 の数々の新機能を1枚画像で簡単に紹介。Constant string interpolation, Extended property patterns, File scoped namespaces, Global using などなど。
File-scoped namespaces by default...via #editorconfig
— Tim Heuer (@timheuer) September 22, 2021
csharp_style_namespace_declarations = file_scoped#dotnet @VisualStudio pic.twitter.com/GifWb0M9WM
EditorConfig ファイルに csharp_style_namespace_declarations = file_scoped
と設定しておくことで新しいクラスファイルを作成する際などで File-scoped namespace を使用したものを生成できるというテクニック。
The project menu in the solution explorer under the Debug now has the “Start Without Debugging” option. This would be helpful when you are working with a multi-project solution. #vstip #vsdebuggertip pic.twitter.com/SPUXbQmqgN
— Visual Studio Debugger (@VS_Debugger) September 23, 2021
ソリューションエクスプローラーのプロジェクトのコンテキストメニューに "Start Without Debugging" (デバッグなしで実行) が追加された。
The biggest problem with async await is the “colored functions” problem brilliantly explained by this article https://t.co/hz5753G8DM. It’s a never ending problem because everything can’t be async and it’s viral. It’s not a new problem though, it’s always been this way.
— David Fowler 🇧🇧🇺🇸💉💉 (@davidfowl) September 25, 2021
async
メソッドは async
メソッドからしか呼べない話。
Go や Java の Project Loom では viral (感染的) ではないアプローチを取っているが、.NET では難しい理由がある。例えば一つは相互運用のためのパフォーマンスにかかわる問題で .NET には高機能な FFI (P/Invoke) があるがグリーンスレッドからのコンテキストスイッチで問題となる。
他に .NET にはメモリーをピンするという仕組みがあることもあげている。これはユーザーモードスレッドを実装したとするとスタックを動的に広げる必要がある際にコピーが必要となるが、メモリーのアドレスが変わってしまうためできない。代わりに linked list で持つなどが考えられるがパフォーマンスに問題が出る、また async state machine は .NET におけるある種の linked list としてもみえるといった話など。
Using the new Native Dependencies feature for Blazor WebAssembly on .NET 6, I just managed to call Rust from C#, both running in the browser! It's a direct p/invoke call - no JS interop. Now, what can we do with this new power? pic.twitter.com/VkyBekDWFR
— Steve Sanderson (@stevensanderson) September 29, 2021
.NET 6 の Blazor WebAssemlby では Native Dependencies という機能により、C# から外部の WASM を JavaScript 相互運用なしで P/Invoke できるので Rust などを直接呼び出せるという話。
Deep Dive
Obsolete thumbtacked AssemblyName properties by i3arnon · Pull Request #59522 · dotnet/runtime
https://github.com/dotnet/runtime/pull/59522
AssemblyName
の ProcessorArchitecture
, HashAlgorithm
, VersionCompatibility
は.NET Core では意味をなさないため非推奨としてマークするという PR。
QueryStringEnumerable API by SteveSandersonMS · Pull Request #33910 · dotnet/aspnetcore · GitHub
https://github.com/dotnet/aspnetcore/pull/33910
クエリーストリングを Span ベースで取り扱って列挙する内部 API の実装 PR。QueryStringEnumerable
自体は公開されていない。
Port DllImportGenerator to dotnet/runtime by jkoritzinsky · Pull Request #59363 · dotnet/runtime
https://github.com/dotnet/runtime/pull/59363
P/Invoke のコードを Source Generator でコード生成をする DllImportGenerator を別リポジトリから dotnet/runtime に引っ越してきた PR。
コードを生成することでマーシャリングの調査やカスタマイズが行いやすくなることが目的のよう。
C# string formatting with negative numbers are not working as expected in net5.0 · Issue #59570 · dotnet/runtime
https://github.com/dotnet/runtime/issues/59570
double
の -0.0
を ToString("f1")
すると .NET Framework と .NET 5 で結果が違うという Issue。
これは .NET Core 3.0 で小数点のパースとフォーマットに手が入った影響で正しく符号がつくようになったことによるもの。もし以前と同様の結果を得たい場合は ToString("0.0;-0.0;0.0")
という3セクションフォーマットで指定する。
Augment Regex extensibility point for better perf and span-based matching · Issue #59629 · dotnet/runtime
https://github.com/dotnet/runtime/issues/59629
Regex にパフォーマンスのためと、Span
ベースマッチングのために拡張ポイントを用意したいという話。
StackTrace Explorer Implementation by ryzngard · Pull Request #56315 · dotnet/roslyn
https://github.com/dotnet/roslyn/pull/56315
テキストとしてクリップボードにコピーしたスタックトレースからジャンプしたりできる Stack Trace Explorer の実装 PR。
[API Proposal]: bool HashSet.Update(T value, out T actual) · Issue #59468 · dotnet/runtime
https://github.com/dotnet/runtime/issues/59468#issuecomment-925609693
元は HashSet<T>
に Update が欲しいという話で、やりたいこと的には Dictionary<TKey, TValue>
だが Dictionary
には Update
がないという話になったところ、GetOrSet
に相当するメソッドであれば .NET 6 RC1 で CollectionsMarshal.GetValueRefOrAddDefault
というものが増えたのでそれで実装できるというテクニック。
[API Proposal]: File.WriteAllBytes overload for Span and ReadOnlySpan · Issue #59770 · dotnet/runtime
https://github.com/dotnet/runtime/issues/59770
File.WriteAllBytes
に Span
/ReadOnlySpan
を受けるオーバーロードが欲しいという提案。
既に過去に似た提案があり、File.Write*
/File.Append*
は特に高レベルな API なのに対して Span
のような低レベルな API を組み合わせるのが不自然、これらのメソッドはパフォーマンスよりも利便性に特化していること、初心者向けのコア API を汚染することといった点でデザイン上なしという形で close されている。
[mono][wasm] Add beginnings of support for WASI. by vargaz · Pull Request #59752 · dotnet/runtime · GitHub
https://github.com/dotnet/runtime/pull/59752
Mono WASM で WASI (WebAssemlby System Interface) のサポートを始めるという PR。
Add initial codespaces support for dotnet/runtime by eerhardt · Pull Request #59723 · dotnet/runtime
https://github.com/dotnet/runtime/pull/59723
dotnet/runtime リポジトリを GitHub Codespaces 上でも編集/ビルドできるようにするための初期サポートの PR。