Skip to content

Pre-buffer TaskHost packet bodies before deserialization - #14505

Merged
AR-May merged 9 commits into
dotnet:mainfrom
AR-May:fix-task-host-read-from-pipe
Aug 7, 2026
Merged

AR-May merged 9 commits into
dotnet:mainfrom
AR-May:fix-task-host-read-from-pipe

Conversation

@AR-May

@AR-May AR-May commented Jul 23, 2026 •

Copy link
Copy Markdown
Member

Fixes #13943

Context

The TaskHost read loop deserialized each incoming packet directly from the pipe stream wrapped in a 1 KB BufferedReadStream. Small primitives were served from that 1 KB buffer, so a real pipe read only happened on a buffer refill (roughly once per 1 KB) - but for a large TaskHostConfiguration (tens of MB of task-item metadata) that still meant thousands of small pipe reads, since each refill requests at most 1 KB.

It also defeated InterningBinaryReader.ReadString's MemoryStream fast path, which reads straight from the backing buffer and decodes the whole string in one shot. That path only fires when the translator's BaseStream is a MemoryStream; backed by BufferedReadStream instead, each string was copied through an intermediate byte buffer and, because a refill returns at most 1 KB, larger strings took the slower multi-chunk decode path with a pooled char buffer.

Changes Made

  • Under ChangeWave 18.11, client side communication uses a 64 KB read-ahead buffer and reads each complete packet body into a reusable MemoryStream before deserialization.
  • The packet-body buffer is allocated lazily with an initial 128 KB capacity. Buffers larger than 2 MB are released after the packet to avoid retaining unusually large allocations.
  • The non-APM parent-node read path also uses 64 KB read-ahead buffering. The .NET Framework APM path remains unchanged.
  • BufferedReadStream now supports any Stream and configurable buffer sizes.
  • Opting out with MSBUILDDISABLEFEATURESFROMVERSION=18.11 preserves the legacy read paths: TaskHost uses its 1 KB buffer, while the parent-side path reads directly from the pipe. No packet-body buffer is allocated.
  • Corrupted extended-header packets now fail through the normal logged link-failure path instead of allowing the exception to escape the read loop.

Testing

Existing unit tests + exp runs + perfstar runs (passed, see comments)

The TaskHost read loop deserialized each incoming packet directly from
the pipe stream wrapped in a 1 KB BufferedReadStream. Small primitives
were served from that 1 KB buffer, so a real pipe read only happened on
a buffer refill (roughly once per 1 KB) - but for a large
TaskHostConfiguration (tens of MB of task-item metadata) that still
meant thousands of small pipe reads, since each refill requests at most
1 KB.

It also defeated InterningBinaryReader.ReadString's MemoryStream fast
path, which reads straight from the backing buffer and decodes the
whole string in one shot. That path only fires when the translator's
BaseStream is a MemoryStream; backed by BufferedReadStream instead, each
string was copied through an intermediate byte buffer and, because a
refill returns at most 1 KB, larger strings took the slower multi-chunk
decode path with a pooled char buffer.

RunReadLoop now buffers the whole packet body before deserializing:

* Adds a reusable _readBufferMemoryStream field, initialized in
  InternalConstruct and disposed in InternalDisconnect.
* After reading the 5-byte header, parses packetLength from bytes 1..4
  (little-endian int32), grows _readBufferMemoryStream to that length,
  reads the body with a Read loop that handles partial reads, and hands
  the MemoryStream (positioned at 0) to GetReadTranslator. The pipe
  returns large chunks per read, so the body is drained in far fewer
  syscalls, and the translator now sees a MemoryStream so the ReadString
  fast path is taken.
* Extended-header version byte is now read from the buffered
  MemoryStream instead of the pipe.
* RunReadLoop takes the raw NamedPipeServerStream directly.

The body read is uncapped: Stream.Read returns as many bytes as are
currently available, and the Read loop drains the full body regardless,
so a per-syscall size cap provides no benefit.

_readBufferMemoryStream is reused across packets (grown to the largest
body seen) and disposed on disconnect, so it is not reallocated for
every packet.

The header read stays async so the existing
WaitAny({headerRead, packetAvailable, terminate}) multiplex is
preserved; the body read is synchronous because we have committed to
receiving this packet and run on a dedicated packet-pump thread.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 35c1edc0-5a3c-404d-a7ff-5a03696251a2
@AR-May

AR-May commented Jul 23, 2026

Copy link
Copy Markdown
Member Author

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).

@AR-May

AR-May commented Jul 24, 2026

Copy link
Copy Markdown
Member Author

publishing report from analyzing the perfstar run.

Perf review of perfstar run for perf/AR-May/fix-task-host-read-from-pipe

Verdict: GOOD — fixes a severe Windows multithreaded (MT) build regression, with no impact on normal (non-MT) builds and one small Linux MT-rebuild item to watch.

Branch = single PerfStar CI run (2026-07-23, Windows = GOLDWIN / Linux = GOLDLIN, all builds passed), compared per scenario against main's recent same-machine baseline (2026-07-16 → 24). Metric is build-time; evaluation-time is used as a control and stays flat in every bucket, so the deltas are real work — not environment drift.

Impact by platform × mode — median build-time Δ (− = faster)

Platform × Mode scenarios median Δ real faster / noise / real slower
Windows · MT 14 −16.7% 7 / 7 / 0
Windows · non-MT 10 −0.7% 0 / 10 / 0
Linux · MT 17 +2.1% 1 / 15 / 1
Linux · non-MT 17 −1.2% 0 / 17 / 0

The entire benefit is concentrated in Windows MT; every non-MT bucket is flat, with zero regressions.

Biggest Windows MT wins

Scenario (Windows, MT) main (ms) branch (ms) Δ
orchard-core warm-restore 107,500 15,523 −86%
orchard-core cold-restore 116,022 24,160 −79%
orchard-core warm-inc-build 169,824 73,645 −57%
orchard-core rebuild 207,471 104,069 −50%
aspire rebuild 80,839 47,212 −42%
aspire warm-inc-build 68,100 43,506 −36%
net8-blazorwasm rebuild 9,125 7,926 −13%

Is MT now the faster mode? (MT vs non-MT, measured in the same run)

Platform Before (main) After (fix)
Windows MT faster in 0 / 7 10 / 11
Linux 12 / 17 18 / 22

Before the fix, MT was slower than single-threaded on 100% of Windows scenarios — down to −456% on orchard-core-warm-restore (107 s vs 19 s). After the fix MT wins almost everywhere. Not universal: xunit-rebuild (Linux) stays MT-slower and widened (−11% → −20%).

Watch item (Linux MT)

orchard-core-rebuild-mt (Linux): 95,970 → 107,396 ms ≈ +11% (~2.9σ above main, above its recent max 90.5k–100.5k). Real for that scenario, but it's a single run — recommend 2–3 reruns to confirm. MT there is still faster than non-MT (+5%).

Caveats

  • One run per scenario: large effects are conclusive; < ~5% is within run-to-run noise (small "warm" scenarios have CV up to ~50%; large rebuilds ~2–4%).
  • ~40 inc-build / publish / check scenarios have no fresh main baseline (main stopped measuring them on GOLD machines after 2026-06-30) → excluded as inconclusive, not evidence of regression.
  • Main's own tiny-project build-times drifted +~75% during July; this fully explains any naive "regression" seen against month-old data.

Bottom line: ship it — the change turns Windows MT from unusable (up to 5.6× slower than single-threaded) into a real ~17% win, leaves normal builds untouched, and only needs a confirmatory rerun on the one Linux MT-rebuild scenario.

@AR-May

AR-May commented Jul 24, 2026

Copy link
Copy Markdown
Member Author

publishing report from analyzing the exp insertion runs.

MSBuild "all tasks out-of-proc" — pipe-read fix vs baseline

Comparison of two experimental VS insertions of the same "all tasks out-of-proc" MSBuild build:

  • BASELINE : PR 761729 (branch baseline-all-tasks-in-th, MSBuild 26373.6)
  • FIX : PR 761726 (branch fix-task-host-read-from-pipe-all-tasks-in-th, MSBuild 26373.5)
    = baseline + the task-host pipe-read change.

All percentages are the regression relative to the non-OOP main baseline (higher = worse).
Only perf suites ran on both PRs; functional gates (required/optional/experimental tests)
were "notApplicable", so correctness is judged from broken/regressed/fault perf tests.

CORRECTNESS — the fix introduces NO extra breakage vs baseline

  • DDRIT (VS64): identical outcome — same 21 regressions + the SAME single broken
    test (UWP64.BuildAndDebug) in both.
  • Speedometer/RPS: baseline 28 vs fix 26 confirmed-after-rerun regressions.
    The small deltas are single-metric noise flips in both directions.
  • The one fault-event signal (CPlusPlusNoCache.UnrealEngine52 | VS_FaultEvents_devenv)
    appears in BASELINE but NOT in the fix.
  • No new broken test, crash, or fault is introduced by the fix.
    => Correctness-wise the fix is equivalent to (slightly better than) baseline; both
    carry the expected all-tasks-OOP risk equally.

PERFORMANCE — Duration / build time: the FIX ROUGHLY HALVES the regression
(Speedometer/RPS, time metrics. Values = extra time over main baseline.)

Test                                                Scenario                                 Baseline            Fix              
--------------------------------------------------  ---------------------------------------  ------------------  -----------------
CPlusPlus.UnrealEngine                              0200.Open Solution                       6,888 ms (93.98%)   3,399 ms (46.37%)
CPlusPlusNoCache.UnrealEngine52                     0200.Open Solution                       10,147 ms (79.84%)  5,271 ms (42.4%) 
OrchardCoreNoCache.TestSolutionOpenClose            0200.Time to Intellisense Without Cache  17,045 ms (36.52%)  7,746 ms (17%)   
OrchardCoreNoCacheResponsive.TestSolutionOpenClose  0200.Time to Intellisense Without Cache  22,561 ms (51.7%)   11,695 ms (28.5%)
PicassoNoCache.TestSolutionOpenClose                0200.Time to Intellisense Without Cache  1,013 ms (26.75%)   1,349 ms (37.58%)
ProjectSystemTest.OrchardCoreBuild                  0100.Rebuild Solution                    29,268 ms (37.84%)  17,217 ms (22.1%)
ProjectSystemTest.OrchardCoreBuild                  0200.Incremental Build                   4,911 ms (53.52%)   3,508 ms (38.9%)

The pipe-read fix cuts the added time from all-tasks-OOP by ~40-55% on every
build / solution-open scenario. Only PicassoNoCache TTI is marginally worse
(~300 ms, within that test's noise).

Metric abbreviations: Procs = OS_ProcessesCreated_Total; CLR_BytesAlloc = CLR_BytesAllocated_NonDevenv;
Duration_Total = Duration_TotalElapsedTime; Duration_Adj = Duration_AdjustedElapsedTime;
VM_Images = VM_AdjustedImagesInMemory_Total; VS_Faults = VS_FaultEvents_Total.

SUMMARY OF FIX IMPACT

  • SAFE: no additional breakage vs baseline (identical DDRIT breakage; Speedometer
    diffs are noise; fix shows one fewer fault event and 2 fewer confirmed regressions).
  • BIG TIME WIN: on Duration/build scenarios the fix roughly halves the OOP time
    penalty — e.g. UnrealEngine Open Solution ~94%->46% and ~80%->42%; OrchardCore
    Build Rebuild 38%->22%, Incremental 54%->39%; OrchardCore TTI 37%->17% and 52%->28%.
  • Allocation / process-count metrics elsewhere are inherent to running tasks OOP and
    are ~unchanged — the fix does not (and is not meant to) address those.
  • NET: the task-host pipe-read fix delivers a large, real reduction in the time cost
    of running all tasks out-of-proc, at no correctness cost. The improvement shows in
    the magnitudes, not the regression name-set (both still regress vs the non-OOP main
    baseline, because both run every task out-of-proc).

@AR-May
AR-May marked this pull request as ready for review July 24, 2026 12:21
Copilot AI review requested due to automatic review settings July 24, 2026 12:21

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR improves out-of-proc TaskHost communications performance by pre-buffering each incoming packet body into a reusable MemoryStream before deserialization, reducing many small pipe reads and enabling InterningBinaryReader.ReadString’s MemoryStream fast-path.

Changes:

  • Add a reusable _readBufferMemoryStream to buffer packet bodies and reuse the largest-seen allocation across packets.
  • Update RunReadLoop to parse the body length from the 5-byte header, synchronously drain the full body into the MemoryStream, and deserialize from memory (including reading the extended-header version byte from the buffer).
  • Remove the BufferedReadStream wrapper and operate on the raw NamedPipeServerStream for both reads and writes.

Comment thread src/Shared/NodeEndpointOutOfProcBase.cs Resolved
@AR-May

AR-May commented Jul 24, 2026

Copy link
Copy Markdown
Member Author

exp insertion runs:
https://dev.azure.com/devdiv/DevDiv/_git/VS/pullrequest/761723 - fix
https://dev.azure.com/devdiv/DevDiv/_git/VS/pullrequest/761726 - fix + all tasks oop
https://dev.azure.com/devdiv/DevDiv/_git/VS/pullrequest/761729 - baseline (all tasks oop)

@JanProvaznik JanProvaznik left a comment •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

re internal discussion:
I think the max memory stream should be capped this seems like a memory leak.
And this should be behind a changewave due to node communication changes being super high impact.

But on the positive side I trust the numbers and agree with the direction! This will dramatically fix our -mt story

@AR-May
AR-May requested a review from a team as a code owner July 27, 2026 11:44
@github-actions

Copy link
Copy Markdown
Contributor

🔍 Skill Validator Results

✅ All checks passed

Scope Checked
Skills 0
Agents 1
Total 1
Severity Count
--- ---:
❌ Errors 0
⚠️ Warnings 0
ℹ️ Advisories 0

Summary

Level Finding
ℹ️ Found 1 agent(s)
ℹ️ Validated 1 agent(s)
ℹ️ ✅ All checks passed (1 agent(s))
Full validator output ```text Found 1 agent(s) Validated 1 agent(s) ✅ All checks passed (1 agent(s)) ```

@JanProvaznik JanProvaznik left a comment •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this looks reasonable, I want a second reviewer (@rainersigwald ?)

pls share the data that lead to the selection of constants

and do not merge until we get restore data.

Comment thread src/Shared/NodeEndpointOutOfProcBase.cs Resolved
@AR-May

AR-May commented Jul 27, 2026 •

Copy link
Copy Markdown
Member Author

MSBuild pipe write-buffer threshold and default sizing

The trim should fire on outliers, not on recurring large packets.
Every recurring packet type has p999 well under 2 MB. Second largest TaskHostConfiguration in MT mode is a bit above 1MB.

The default size should be large enough to absorb the next few packets
without a realloc
, small enough to be a genuine memory release compared to maximum size of the buffer.
128 KB covers p95 without issue.

DATA:

Non-MT — per pipe (all packet types combined)

Pipe (roles) Events Median p95 p99 p999 Max
client<->server 584 220 1,950 6,183 77,968 77,968
server<->worker 1,254,768 392 662 4,650 134,629 731,691

MT — per pipe (all packet types combined)

Pipe (roles) Events Median p95 p99 p999 Max
client<->server 450 238 2,482 3,909 77,996 77,996
server<->taskhost 21,496 187 39,832 407,466 709,420 116,689,026

AR-May added 2 commits July 27, 2026 14:37
…t-out comment

Keeps the reusable read buffer's initial capacity at the historical 128 KB (instead of pre-growing to 256 KB) and raises MaxRetainedReadBufferSize from 1 MB to 2 MB so slightly-larger-than-1MB packets don't repeatedly release and reallocate the buffer. Also corrects the comment: with the change wave opted out, packets are deserialized from the BufferedReadStream, not straight off the pipe.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a60cf380-bb58-464c-a07c-68cef556f44d
…ully

Move the NodePacketTypeExtensions.ReadVersion call inside the deserialization try/catch. A truncated or corrupted extended-header packet (e.g. an empty body) makes ReadVersion throw EndOfStreamException; previously that escaped the read loop instead of being converted into a trace + LinkStatus.Failed like other packet errors.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a60cf380-bb58-464c-a07c-68cef556f44d
@AR-May

AR-May commented Jul 29, 2026

Copy link
Copy Markdown
Member Author

After collecting more data, unfortunately it seems this pr leads to a regression in non-mt. We need to find a better way to address the issue.
Setup: two copies of .NET 11 P7 daily SDK (11.0.100-preview.7.26377.110).
Baseline = pristine daily. PR14505 = same daily + PR head (fe119d6ca)
MSBuild bits deployed. dotnet build /m (non-mt). OrchardCore (huge sln) +
dotnet new console (tiny csproj). Interleaved per iteration.

Aggregated (10 iters each)

Repo Scenario Base mean (ms) PR mean (ms) Δ mean % Base median (ms) PR median (ms) Δ median %
OC inc-cold 65 321 65 956 +0.97 % 64 962 66 090 +1.74 %
OC inc-warm-2 33 870 34 008 +0.41 % 33 432 33 402 −0.09 %
OC inc-warm-3 31 905 32 493 +1.84 % 31 854 32 662 +2.54 %
OC re-cold 148 887 154 487 +3.76 % 147 419 153 779 +4.31 %
OC re-warm-2 81 366 80 902 −0.57 % 79 261 79 509 +0.31 %
OC re-warm-3 73 537 74 883 +1.83 % 73 239 74 540 +1.78 %
console inc-cold 3 656 4 586 +25.45 % 3 854 4 574 +18.67 %
console inc-warm-2 919 1 038 +12.91 % 919 1 035 +12.56 %
console inc-warm-3 928 1 018 +9.60 % 924 1 022 +10.59 %
console re-cold 3 807 4 542 +19.31 % 3 814 4 540 +19.04 %
console re-warm-2 1 191 1 296 +8.80 % 1 193 1 293 +8.32 %
console re-warm-3 1 198 1 270 +5.98 % 1 194 1 275 +6.78 %

AR-May added a commit that referenced this pull request Jul 30, 2026
… MB retention cap

Layered on top of PR #14505 (Wave18_10 pre-buffer). All new behavior is gated
behind the same ChangeWaves.Wave18_10 as the PR - with the wave opted out the
read loop is byte-for-byte identical to the PR's opt-out path (1 KB
BufferedReadStream, no pre-buffering).

Changes:
* BufferedReadStream: added a (NamedPipeServerStream, int bufferSize) constructor
  overload. Existing single-arg constructor still defaults to the historical
  1 KB, so the wave-off path is unchanged.
* NodeEndpointOutOfProcBase.RunReadLoop (wave enabled):
  - Wraps the pipe in a 64 KB BufferedReadStream (LargeReadBufferSize). Header
    reads pull up to 64 KB from the pipe in one syscall, so a batch of small
    packets is served straight from the cache with zero extra pipe reads.
  - Adds PreBufferBodyThreshold = 512: packets whose body is < 512 bytes stay
    on the BufferedReadStream fast path (the body is almost always already in
    the header refill's cache, so pre-buffering would just add a redundant
    copy). Bodies >= 512 bytes are pre-buffered into _readBufferMemoryStream
    exactly like the PR, giving InterningBinaryReader.ReadString its
    MemoryStream fast path.
  - Body read now uses localReadPipe.Read (the buffered wrapper) instead of
    localPipe.Read so any bytes the header refill pulled in ahead of the
    body are consumed from the cache before touching the pipe.
* MaxRetainedReadBufferSize retention cap (2 MB) and _readBufferMemoryStream
  lifecycle are unchanged from the PR.
* ChangeWaves.md: refined the Wave18_10 entry to describe the composite
  behavior (larger buffered stream + pre-buffered large packet bodies).

MSBuildTaskHost/BackEnd/BufferedReadStream.cs is intentionally not modified
here: the PR does not touch that folder, and its AGENTS.md restricts edits.
AR-May added a commit that referenced this pull request Jul 30, 2026
… MB retention cap

Layered on top of PR #14505 (Wave18_10 pre-buffer). All new behavior is gated
behind the same ChangeWaves.Wave18_10 as the PR - with the wave opted out the
read loop is byte-for-byte identical to the PR's opt-out path (1 KB
BufferedReadStream, no pre-buffering).

Changes:
* BufferedReadStream: added a (NamedPipeServerStream, int bufferSize) constructor
  overload. Existing single-arg constructor still defaults to the historical
  1 KB, so the wave-off path is unchanged.
* NodeEndpointOutOfProcBase.RunReadLoop (wave enabled):
  - Wraps the pipe in a 64 KB BufferedReadStream (LargeReadBufferSize). Header
    reads pull up to 64 KB from the pipe in one syscall, so a batch of small
    packets is served straight from the cache with zero extra pipe reads.
  - Adds PreBufferBodyThreshold = 512: packets whose body is < 512 bytes stay
    on the BufferedReadStream fast path (the body is almost always already in
    the header refill's cache, so pre-buffering would just add a redundant
    copy). Bodies >= 512 bytes are pre-buffered into _readBufferMemoryStream
    exactly like the PR, giving InterningBinaryReader.ReadString its
    MemoryStream fast path.
  - Body read now uses localReadPipe.Read (the buffered wrapper) instead of
    localPipe.Read so any bytes the header refill pulled in ahead of the
    body are consumed from the cache before touching the pipe.
* MaxRetainedReadBufferSize retention cap (2 MB) and _readBufferMemoryStream
  lifecycle are unchanged from the PR.
* ChangeWaves.md: refined the Wave18_10 entry to describe the composite
  behavior (larger buffered stream + pre-buffered large packet bodies).

MSBuildTaskHost/BackEnd/BufferedReadStream.cs is intentionally not modified
here: the PR does not touch that folder, and its AGENTS.md restricts edits.
AR-May added a commit that referenced this pull request Jul 30, 2026
… MB retention cap

Layered on top of PR #14505 (Wave18_10 pre-buffer). All new behavior is gated
behind the same ChangeWaves.Wave18_10 as the PR - with the wave opted out the
read loop is byte-for-byte identical to the PR's opt-out path (1 KB
BufferedReadStream, no pre-buffering).

Changes:
* BufferedReadStream: added a (NamedPipeServerStream, int bufferSize) constructor
  overload. Existing single-arg constructor still defaults to the historical
  1 KB, so the wave-off path is unchanged.
* NodeEndpointOutOfProcBase.RunReadLoop (wave enabled):
  - Wraps the pipe in a 64 KB BufferedReadStream (LargeReadBufferSize). Header
    reads pull up to 64 KB from the pipe in one syscall, so a batch of small
    packets is served straight from the cache with zero extra pipe reads.
  - Adds PreBufferBodyThreshold = 512: packets whose body is < 512 bytes stay
    on the BufferedReadStream fast path (the body is almost always already in
    the header refill's cache, so pre-buffering would just add a redundant
    copy). Bodies >= 512 bytes are pre-buffered into _readBufferMemoryStream
    exactly like the PR, giving InterningBinaryReader.ReadString its
    MemoryStream fast path.
  - Body read now uses localReadPipe.Read (the buffered wrapper) instead of
    localPipe.Read so any bytes the header refill pulled in ahead of the
    body are consumed from the cache before touching the pipe.
* MaxRetainedReadBufferSize retention cap (2 MB) and _readBufferMemoryStream
  lifecycle are unchanged from the PR.
* ChangeWaves.md: refined the Wave18_10 entry to describe the composite
  behavior (larger buffered stream + pre-buffered large packet bodies).

MSBuildTaskHost/BackEnd/BufferedReadStream.cs is intentionally not modified
here: the PR does not touch that folder, and its AGENTS.md restricts edits.
AR-May added 3 commits August 3, 2026 10:16
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 208e7501-510f-40db-98ee-7df7412277be
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 208e7501-510f-40db-98ee-7df7412277be
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 208e7501-510f-40db-98ee-7df7412277be
@AR-May

AR-May commented Aug 3, 2026

Copy link
Copy Markdown
Member Author

I updated the PR, the implementation have been changed. I updated the description accordingly.

I no more see a regression in the console app runs. New PerfStar run shows that we preserve the win: major MT fix for big packets. It also is more-less performance-neutral beyond it. Windows non-MT results are somewhat promising: about 3–5% faster overall, mainly on larger builds, but this is based on a single run. Linux results are neutral, with no clear regressions.

@AR-May AR-May self-assigned this Aug 3, 2026
AR-May added 2 commits August 3, 2026 16:03
Resolve ChangeWave 18.11 conflicts and link PR dotnet#14505 in the ChangeWaves documentation.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 208e7501-510f-40db-98ee-7df7412277be
microsoft-github-policy-service Bot pushed a commit to Azure/bicep that referenced this pull request Oct 26, 2026
Updated
[Azure.Containers.ContainerRegistry](https://github.com/Azure/azure-sdk-for-net)
from 1.3.0 to 1.4.0.

<details>
<summary>Release notes</summary>

_Sourced from [Azure.Containers.ContainerRegistry's
releases](https://github.com/Azure/azure-sdk-for-net/releases)._

## 1.4.0

## 1.4.0 (2026-10-16)

### Bugs Fixed

- Fixed streaming blob downloads to enforce the declared content length
and disallow seeking, ensuring SHA-256 validation
  covers the complete sequential content stream.


Commits viewable in [compare
view](https://github.com/Azure/azure-sdk-for-net/commits/Azure.Containers.ContainerRegistry_1.4.0).
</details>

Updated
[Azure.ResourceManager.Resources](https://github.com/Azure/azure-sdk-for-net)
from 1.11.2 to 1.12.0.

<details>
<summary>Release notes</summary>

_Sourced from [Azure.ResourceManager.Resources's
releases](https://github.com/Azure/azure-sdk-for-net/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/Azure/azure-sdk-for-net/commits).
</details>

Updated [Google.Protobuf](https://github.com/protocolbuffers/protobuf)
from 3.36.1 to 3.36.2.

<details>
<summary>Release notes</summary>

_Sourced from [Google.Protobuf's
releases](https://github.com/protocolbuffers/protobuf/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/protocolbuffers/protobuf/commits).
</details>

Updated [Grpc.AspNetCore.Server](https://github.com/grpc/grpc-dotnet)
from 2.83.0 to 2.84.0.

<details>
<summary>Release notes</summary>

_Sourced from [Grpc.AspNetCore.Server's
releases](https://github.com/grpc/grpc-dotnet/releases)._

## 2.84.0

## What's Changed
* Document complete release version updates by @​JamesNK in
https://github.com/grpc/grpc-dotnet/pull/2748
* Bump axios from 1.16.0 to 1.18.1 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2745
* Bump fast-uri from 3.1.2 to 3.1.4 in /examples/Browser/Server/wwwroot
by @​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2749
* Avoid blocking SemaphoreSlim.Wait(0) on single-threaded browser WASM
by @​pavelsavara in https://github.com/grpc/grpc-dotnet/pull/2756
* Update package dependencies and examples by @​JamesNK in
https://github.com/grpc/grpc-dotnet/pull/2759
* Bump fast-uri from 3.1.4 to 3.1.5 in /examples/Browser/Server/wwwroot
by @​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2754
* Bump brace-expansion in /testassets/InteropTestsGrpcWebWebsite/Tests
by @​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2755
* Bump ip-address from 10.2.0 to 10.5.0 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2757
* Stabilize unobserved exception retry test by @​JamesNK in
https://github.com/grpc/grpc-dotnet/pull/2758
* Fix corrupted bytes sent after GOAWAY by @​DeagleGross in
https://github.com/grpc/grpc-dotnet/pull/2766
* Bump fast-uri from 3.1.5 to 3.1.7 in /examples/Browser/Server/wwwroot
by @​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2761
* Bump js-yaml in /testassets/InteropTestsGrpcWebWebsite/Tests by
@​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2765
* Bump joi from 17.13.4 to 17.13.7 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2764
* Bump baseline-browser-mapping from 2.9.19 to 2.11.21 in
/examples/Browser/Server/wwwroot by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2763
* Bump browserslist from 4.25.1 to 4.28.8 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2762
* Bump @​babel/core from 7.28.0 to 7.29.7 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2767
* Update the versions for pre release. by @​asheshvidyut in
https://github.com/grpc/grpc-dotnet/pull/2768
* Update version for 2.84.x-pre1 by @​asheshvidyut in
https://github.com/grpc/grpc-dotnet/pull/2769
* Remove pre suffix for 2.84.0 stable release by @​asheshvidyut in
https://github.com/grpc/grpc-dotnet/pull/2770

## New Contributors
* @​pavelsavara made their first contribution in
https://github.com/grpc/grpc-dotnet/pull/2756
* @​DeagleGross made their first contribution in
https://github.com/grpc/grpc-dotnet/pull/2766

**Full Changelog**:
https://github.com/grpc/grpc-dotnet/compare/v2.83.0...v2.84.0

## 2.84.0-pre1

## What's Changed
* Document complete release version updates by @​JamesNK in
https://github.com/grpc/grpc-dotnet/pull/2748
* Bump axios from 1.16.0 to 1.18.1 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2745
* Bump fast-uri from 3.1.2 to 3.1.4 in /examples/Browser/Server/wwwroot
by @​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2749
* Avoid blocking SemaphoreSlim.Wait(0) on single-threaded browser WASM
by @​pavelsavara in https://github.com/grpc/grpc-dotnet/pull/2756
* Update package dependencies and examples by @​JamesNK in
https://github.com/grpc/grpc-dotnet/pull/2759
* Bump fast-uri from 3.1.4 to 3.1.5 in /examples/Browser/Server/wwwroot
by @​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2754
* Bump brace-expansion in /testassets/InteropTestsGrpcWebWebsite/Tests
by @​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2755
* Bump ip-address from 10.2.0 to 10.5.0 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2757
* Stabilize unobserved exception retry test by @​JamesNK in
https://github.com/grpc/grpc-dotnet/pull/2758
* Fix corrupted bytes sent after GOAWAY by @​DeagleGross in
https://github.com/grpc/grpc-dotnet/pull/2766
* Bump fast-uri from 3.1.5 to 3.1.7 in /examples/Browser/Server/wwwroot
by @​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2761
* Bump js-yaml in /testassets/InteropTestsGrpcWebWebsite/Tests by
@​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2765
* Bump joi from 17.13.4 to 17.13.7 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2764
* Bump baseline-browser-mapping from 2.9.19 to 2.11.21 in
/examples/Browser/Server/wwwroot by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2763
* Bump browserslist from 4.25.1 to 4.28.8 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2762
* Bump @​babel/core from 7.28.0 to 7.29.7 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2767
* Update the versions for pre release. by @​asheshvidyut in
https://github.com/grpc/grpc-dotnet/pull/2768
* Update version for 2.84.x-pre1 by @​asheshvidyut in
https://github.com/grpc/grpc-dotnet/pull/2769

## New Contributors
* @​pavelsavara made their first contribution in
https://github.com/grpc/grpc-dotnet/pull/2756
* @​DeagleGross made their first contribution in
https://github.com/grpc/grpc-dotnet/pull/2766

**Full Changelog**:
https://github.com/grpc/grpc-dotnet/compare/v2.83.0...v2.84.0-pre1

Commits viewable in [compare
view](https://github.com/grpc/grpc-dotnet/compare/v2.83.0...v2.84.0).
</details>

Updated
[Grpc.AspNetCore.Server.Reflection](https://github.com/grpc/grpc-dotnet)
from 2.83.0 to 2.84.0.

<details>
<summary>Release notes</summary>

_Sourced from [Grpc.AspNetCore.Server.Reflection's
releases](https://github.com/grpc/grpc-dotnet/releases)._

## 2.84.0

## What's Changed
* Document complete release version updates by @​JamesNK in
https://github.com/grpc/grpc-dotnet/pull/2748
* Bump axios from 1.16.0 to 1.18.1 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2745
* Bump fast-uri from 3.1.2 to 3.1.4 in /examples/Browser/Server/wwwroot
by @​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2749
* Avoid blocking SemaphoreSlim.Wait(0) on single-threaded browser WASM
by @​pavelsavara in https://github.com/grpc/grpc-dotnet/pull/2756
* Update package dependencies and examples by @​JamesNK in
https://github.com/grpc/grpc-dotnet/pull/2759
* Bump fast-uri from 3.1.4 to 3.1.5 in /examples/Browser/Server/wwwroot
by @​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2754
* Bump brace-expansion in /testassets/InteropTestsGrpcWebWebsite/Tests
by @​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2755
* Bump ip-address from 10.2.0 to 10.5.0 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2757
* Stabilize unobserved exception retry test by @​JamesNK in
https://github.com/grpc/grpc-dotnet/pull/2758
* Fix corrupted bytes sent after GOAWAY by @​DeagleGross in
https://github.com/grpc/grpc-dotnet/pull/2766
* Bump fast-uri from 3.1.5 to 3.1.7 in /examples/Browser/Server/wwwroot
by @​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2761
* Bump js-yaml in /testassets/InteropTestsGrpcWebWebsite/Tests by
@​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2765
* Bump joi from 17.13.4 to 17.13.7 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2764
* Bump baseline-browser-mapping from 2.9.19 to 2.11.21 in
/examples/Browser/Server/wwwroot by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2763
* Bump browserslist from 4.25.1 to 4.28.8 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2762
* Bump @​babel/core from 7.28.0 to 7.29.7 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2767
* Update the versions for pre release. by @​asheshvidyut in
https://github.com/grpc/grpc-dotnet/pull/2768
* Update version for 2.84.x-pre1 by @​asheshvidyut in
https://github.com/grpc/grpc-dotnet/pull/2769
* Remove pre suffix for 2.84.0 stable release by @​asheshvidyut in
https://github.com/grpc/grpc-dotnet/pull/2770

## New Contributors
* @​pavelsavara made their first contribution in
https://github.com/grpc/grpc-dotnet/pull/2756
* @​DeagleGross made their first contribution in
https://github.com/grpc/grpc-dotnet/pull/2766

**Full Changelog**:
https://github.com/grpc/grpc-dotnet/compare/v2.83.0...v2.84.0

## 2.84.0-pre1

## What's Changed
* Document complete release version updates by @​JamesNK in
https://github.com/grpc/grpc-dotnet/pull/2748
* Bump axios from 1.16.0 to 1.18.1 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2745
* Bump fast-uri from 3.1.2 to 3.1.4 in /examples/Browser/Server/wwwroot
by @​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2749
* Avoid blocking SemaphoreSlim.Wait(0) on single-threaded browser WASM
by @​pavelsavara in https://github.com/grpc/grpc-dotnet/pull/2756
* Update package dependencies and examples by @​JamesNK in
https://github.com/grpc/grpc-dotnet/pull/2759
* Bump fast-uri from 3.1.4 to 3.1.5 in /examples/Browser/Server/wwwroot
by @​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2754
* Bump brace-expansion in /testassets/InteropTestsGrpcWebWebsite/Tests
by @​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2755
* Bump ip-address from 10.2.0 to 10.5.0 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2757
* Stabilize unobserved exception retry test by @​JamesNK in
https://github.com/grpc/grpc-dotnet/pull/2758
* Fix corrupted bytes sent after GOAWAY by @​DeagleGross in
https://github.com/grpc/grpc-dotnet/pull/2766
* Bump fast-uri from 3.1.5 to 3.1.7 in /examples/Browser/Server/wwwroot
by @​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2761
* Bump js-yaml in /testassets/InteropTestsGrpcWebWebsite/Tests by
@​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2765
* Bump joi from 17.13.4 to 17.13.7 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2764
* Bump baseline-browser-mapping from 2.9.19 to 2.11.21 in
/examples/Browser/Server/wwwroot by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2763
* Bump browserslist from 4.25.1 to 4.28.8 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2762
* Bump @​babel/core from 7.28.0 to 7.29.7 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2767
* Update the versions for pre release. by @​asheshvidyut in
https://github.com/grpc/grpc-dotnet/pull/2768
* Update version for 2.84.x-pre1 by @​asheshvidyut in
https://github.com/grpc/grpc-dotnet/pull/2769

## New Contributors
* @​pavelsavara made their first contribution in
https://github.com/grpc/grpc-dotnet/pull/2756
* @​DeagleGross made their first contribution in
https://github.com/grpc/grpc-dotnet/pull/2766

**Full Changelog**:
https://github.com/grpc/grpc-dotnet/compare/v2.83.0...v2.84.0-pre1

Commits viewable in [compare
view](https://github.com/grpc/grpc-dotnet/compare/v2.83.0...v2.84.0).
</details>

Updated [Grpc.Net.Client](https://github.com/grpc/grpc-dotnet) from
2.83.0 to 2.84.0.

<details>
<summary>Release notes</summary>

_Sourced from [Grpc.Net.Client's
releases](https://github.com/grpc/grpc-dotnet/releases)._

## 2.84.0

## What's Changed
* Document complete release version updates by @​JamesNK in
https://github.com/grpc/grpc-dotnet/pull/2748
* Bump axios from 1.16.0 to 1.18.1 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2745
* Bump fast-uri from 3.1.2 to 3.1.4 in /examples/Browser/Server/wwwroot
by @​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2749
* Avoid blocking SemaphoreSlim.Wait(0) on single-threaded browser WASM
by @​pavelsavara in https://github.com/grpc/grpc-dotnet/pull/2756
* Update package dependencies and examples by @​JamesNK in
https://github.com/grpc/grpc-dotnet/pull/2759
* Bump fast-uri from 3.1.4 to 3.1.5 in /examples/Browser/Server/wwwroot
by @​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2754
* Bump brace-expansion in /testassets/InteropTestsGrpcWebWebsite/Tests
by @​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2755
* Bump ip-address from 10.2.0 to 10.5.0 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2757
* Stabilize unobserved exception retry test by @​JamesNK in
https://github.com/grpc/grpc-dotnet/pull/2758
* Fix corrupted bytes sent after GOAWAY by @​DeagleGross in
https://github.com/grpc/grpc-dotnet/pull/2766
* Bump fast-uri from 3.1.5 to 3.1.7 in /examples/Browser/Server/wwwroot
by @​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2761
* Bump js-yaml in /testassets/InteropTestsGrpcWebWebsite/Tests by
@​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2765
* Bump joi from 17.13.4 to 17.13.7 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2764
* Bump baseline-browser-mapping from 2.9.19 to 2.11.21 in
/examples/Browser/Server/wwwroot by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2763
* Bump browserslist from 4.25.1 to 4.28.8 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2762
* Bump @​babel/core from 7.28.0 to 7.29.7 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2767
* Update the versions for pre release. by @​asheshvidyut in
https://github.com/grpc/grpc-dotnet/pull/2768
* Update version for 2.84.x-pre1 by @​asheshvidyut in
https://github.com/grpc/grpc-dotnet/pull/2769
* Remove pre suffix for 2.84.0 stable release by @​asheshvidyut in
https://github.com/grpc/grpc-dotnet/pull/2770

## New Contributors
* @​pavelsavara made their first contribution in
https://github.com/grpc/grpc-dotnet/pull/2756
* @​DeagleGross made their first contribution in
https://github.com/grpc/grpc-dotnet/pull/2766

**Full Changelog**:
https://github.com/grpc/grpc-dotnet/compare/v2.83.0...v2.84.0

## 2.84.0-pre1

## What's Changed
* Document complete release version updates by @​JamesNK in
https://github.com/grpc/grpc-dotnet/pull/2748
* Bump axios from 1.16.0 to 1.18.1 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2745
* Bump fast-uri from 3.1.2 to 3.1.4 in /examples/Browser/Server/wwwroot
by @​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2749
* Avoid blocking SemaphoreSlim.Wait(0) on single-threaded browser WASM
by @​pavelsavara in https://github.com/grpc/grpc-dotnet/pull/2756
* Update package dependencies and examples by @​JamesNK in
https://github.com/grpc/grpc-dotnet/pull/2759
* Bump fast-uri from 3.1.4 to 3.1.5 in /examples/Browser/Server/wwwroot
by @​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2754
* Bump brace-expansion in /testassets/InteropTestsGrpcWebWebsite/Tests
by @​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2755
* Bump ip-address from 10.2.0 to 10.5.0 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2757
* Stabilize unobserved exception retry test by @​JamesNK in
https://github.com/grpc/grpc-dotnet/pull/2758
* Fix corrupted bytes sent after GOAWAY by @​DeagleGross in
https://github.com/grpc/grpc-dotnet/pull/2766
* Bump fast-uri from 3.1.5 to 3.1.7 in /examples/Browser/Server/wwwroot
by @​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2761
* Bump js-yaml in /testassets/InteropTestsGrpcWebWebsite/Tests by
@​dependabot[bot] in https://github.com/grpc/grpc-dotnet/pull/2765
* Bump joi from 17.13.4 to 17.13.7 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2764
* Bump baseline-browser-mapping from 2.9.19 to 2.11.21 in
/examples/Browser/Server/wwwroot by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2763
* Bump browserslist from 4.25.1 to 4.28.8 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2762
* Bump @​babel/core from 7.28.0 to 7.29.7 in
/testassets/InteropTestsGrpcWebWebsite/Tests by @​dependabot[bot] in
https://github.com/grpc/grpc-dotnet/pull/2767
* Update the versions for pre release. by @​asheshvidyut in
https://github.com/grpc/grpc-dotnet/pull/2768
* Update version for 2.84.x-pre1 by @​asheshvidyut in
https://github.com/grpc/grpc-dotnet/pull/2769

## New Contributors
* @​pavelsavara made their first contribution in
https://github.com/grpc/grpc-dotnet/pull/2756
* @​DeagleGross made their first contribution in
https://github.com/grpc/grpc-dotnet/pull/2766

**Full Changelog**:
https://github.com/grpc/grpc-dotnet/compare/v2.83.0...v2.84.0-pre1

Commits viewable in [compare
view](https://github.com/grpc/grpc-dotnet/compare/v2.83.0...v2.84.0).
</details>

Updated [Grpc.Tools](https://github.com/grpc/grpc) from 2.83.0 to
2.84.0.

<details>
<summary>Release notes</summary>

_Sourced from [Grpc.Tools's
releases](https://github.com/grpc/grpc/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/grpc/grpc/commits).
</details>

Updated [Markdig](https://github.com/xoofx/markdig) from 1.3.2 to 1.5.0.

<details>
<summary>Release notes</summary>

_Sourced from [Markdig's
releases](https://github.com/xoofx/markdig/releases)._

## 1.5.0

# Changes

## 🐛 Bug Fixes

- Keep Unicode whitespace other than spaces and tabs when trimming
paragraphs, headings and info strings (PR #​966) by @​HuzaifaChaudary
- Add relative file links extension (#​897) (PR #​968) by @​StefanGreve
- Don't treat an escaped backslash as the start of another escape in
HtmlHelper.Unescape (PR #​967) by @​HuzaifaChaudary
- Fix unescaped source URL in media links (PR #​969) by @​StefanGreve

**Full Changelog**:
[1.4.2...1.5.0](https://github.com/xoofx/markdig/compare/1.4.2...1.5.0)

<sub>Published with
[dotnet-releaser](https://github.com/xoofx/dotnet-releaser/)</sub>


## 1.4.2

# Changes

## ✨ New Features

- Add IsAotCompatible for net8.0 and later targets (PR #​963) by
@​StefanGreve

## 🐛 Bug Fixes

- Fix setext heading line breaks and indented lazy quote lines (PR
#​964) by @​wahidrizka
- Fix setext underlines in block quotes and list items (PR #​965) by
@​wahidrizka
- Fix FindClosestBlock/FindBlockAtPosition with definition groups
(#​677) (PR #​962) by @​ybai08

**Full Changelog**:
[1.4.1...1.4.2](https://github.com/xoofx/markdig/compare/1.4.1...1.4.2)

<sub>Published with
[dotnet-releaser](https://github.com/xoofx/dotnet-releaser/)</sub>


## 1.4.1

# Changes

## 🐛 Bug Fixes

- Fix definition list continuation consuming leading markers (PR #​957)
by @​SparkUiX
- Fix grid table open last cell taking a | from the next line (#​494)
(PR #​958) by @​dualfroz
- Fix HTML blocks not ending at a line with only spaces or tabs (PR
#​960) by @​wahidrizka
- Fix empty list items being parsed as text after a paragraph (PR #​961)
by @​wahidrizka
- Fix definition lists requiring 3 spaces after the marker (PR #​959) by
@​dualfroz
- Fix CommonMark HTML block start character classes (d5462ae5)
- Fix CommonMark closing-tag block starts and whitespace (05e638f9)
- Fix empty list items with trailing marker whitespace (2fec2085)
- Fix CommonMark inline HTML declarations (d33c703d)
- Fix definition paragraphs inside tight lists (a998839f)
- Fix concurrent spec generation in parallel builds (ccb9d859)

## 📚 Documentation

- Update doc for definition-list continuation rules (b58e83b4)

**Full Changelog**:
[1.4.0...1.4.1](https://github.com/xoofx/markdig/compare/1.4.0...1.4.1)

<sub>Published with
[dotnet-releaser](https://github.com/xoofx/dotnet-releaser/)</sub>


## 1.4.0

# Changes

## ✨ New Features

- Add strict GFM pipe table parsing mode (14cd25c7)

## 🐛 Bug Fixes

- Fix heading auto-link hijacking nested link labels (#​668) (PR #​949)
by @​dualfroz
- Fix: keep trailing content out of an unmatched emphasis closer (#​743)
(PR #​950) by @​dualfroz
- Fix indent on first list item (#​482) (PR #​953) by @​boxofyellow
- Add Normalization Support for PipeTables (GFM) (PR #​954) by
@​boxofyellow
- Fix partially empty pipe table separator regression (PR #​955) by
@​vicancy
- Reject emoji-parsing if the slice ends with `**` (PR #​947) by
@​bstordrup
- Fix strict GFM tables against native cmark-gfm (86866b91)

## 🚀 Enhancements

- Update 3rd party extensions (PR #​945) by @​Kryptos-FR

## 🏭 Tests

- Fix tests warnings (96b024c2)

## 📦 Dependencies

- Bump deps (c6b186b4)

## 🧰 Misc

- Use NuGet Trusted Publishing via dotnet-releaser (56e9c238)

**Full Changelog**:
[1.3.2...1.4.0](https://github.com/xoofx/markdig/compare/1.3.2...1.4.0)

<sub>Published with
[dotnet-releaser](https://github.com/xoofx/dotnet-releaser/)</sub>


Commits viewable in [compare
view](https://github.com/xoofx/markdig/compare/1.3.2...1.5.0).
</details>

Updated [Microsoft.Build.Framework](https://github.com/dotnet/msbuild)
from 18.10.1 to 18.11.0.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Build.Framework's
releases](https://github.com/dotnet/msbuild/releases)._

## 18.11.0

## What's Changed
* Add vs18.10 to merge-flow config; retire vs18.7 by @​AlesProkop in
https://github.com/dotnet/msbuild/pull/14563
* Bump main to 18.11.0 after vs18.10 snap by @​AlesProkop in
https://github.com/dotnet/msbuild/pull/14564
* Phase out ChangeWaves 17.10, 17.12, 17.14 and 18.3 by @​JanProvaznik
in https://github.com/dotnet/msbuild/pull/14551
* [main] Source code updates from dotnet/dotnet by @​dotnet-maestro[bot]
in https://github.com/dotnet/msbuild/pull/14572
* Default XML tasks to prohibit DTDs and improve DTD error diagnostics
by @​VolPlita in https://github.com/dotnet/msbuild/pull/14285
* Don't log TaskAssemblyLocationMismatch for task-host-routed tasks by
@​JanProvaznik in https://github.com/dotnet/msbuild/pull/14550
* Scope MSBuild server and coordinator resource names to the current
user by @​JanProvaznik in https://github.com/dotnet/msbuild/pull/14543
* Promote MSBuild server out of Experimental namespace (#​12099) by
@​JanProvaznik in https://github.com/dotnet/msbuild/pull/13964
* Fix builds by adding missing using by @​rainersigwald in
https://github.com/dotnet/msbuild/pull/14587
* Add event-level task telemetry (build/tasks/details) by
@​jankratochvilcz in https://github.com/dotnet/msbuild/pull/13609
* Migrate ResolveCodeAnalysisRuleSet to multithreaded execution by
@​jankratochvilcz in https://github.com/dotnet/msbuild/pull/13636
* Use &lt;inheritdoc /&gt; for TaskEnvironment in
ResolveCodeAnalysisRuleSet by @​jankratochvilcz in
https://github.com/dotnet/msbuild/pull/14589
* Add aliases for configuration and test parameters in build scripts by
@​AR-May in https://github.com/dotnet/msbuild/pull/14591
* [main] Update dependencies from dotnet/arcade by @​dotnet-maestro[bot]
in https://github.com/dotnet/msbuild/pull/14617
* Emit assemblyName payload for FallbackAssemblyLoad EventSource events
by @​AR-May in https://github.com/dotnet/msbuild/pull/14014
* Bump github/gh-aw-actions/setup-cli from 0.83.3 to 0.84.1 by
@​dependabot[bot] in https://github.com/dotnet/msbuild/pull/14611
* Bump github/gh-aw-actions/setup from 0.83.3 to 0.84.1 by
@​dependabot[bot] in https://github.com/dotnet/msbuild/pull/14610
* Migrate GetAssembliesMetadata to multithreaded execution by
@​jankratochvilcz in https://github.com/dotnet/msbuild/pull/13637
* [main] Update dependencies from dotnet/roslyn by @​dotnet-maestro[bot]
in https://github.com/dotnet/msbuild/pull/14619
* Fix concurrent BuildCheck callback mutation by @​YuliiaKovalova in
https://github.com/dotnet/msbuild/pull/14590
* [main] Update dependencies from nuget/nuget.client by
@​dotnet-maestro[bot] in https://github.com/dotnet/msbuild/pull/14612
* Make experimental VS insertion reviewers configurable by
@​rainersigwald in https://github.com/dotnet/msbuild/pull/14632
* Fix NullReferenceException reporting file accesses for detoured nodes
by @​dfederm in https://github.com/dotnet/msbuild/pull/14602
* Scope .NET TaskHost handshake leniency to architecture by
@​JanProvaznik in https://github.com/dotnet/msbuild/pull/14579
* Ensure MSBuild.csproj is included for Release|ARM64 by @​KirillOsenkov
in https://github.com/dotnet/msbuild/pull/14622
* Declare the Sdk element in Microsoft.Build.Core.xsd by @​ViktorHofer
with @​Copilot in https://github.com/dotnet/msbuild/pull/14637
* Call out MSBUILD_LOGGING_ARGS by @​rainersigwald in
https://github.com/dotnet/msbuild/pull/14641
* [Spec] Define MSBuild server child-process ownership by @​JanProvaznik
in https://github.com/dotnet/msbuild/pull/14508
* Pre-buffer TaskHost packet bodies before deserialization by @​AR-May
in https://github.com/dotnet/msbuild/pull/14505
* Expose item glob patterns via MSBuildProvideItemGlobs by @​drewnoakes
in https://github.com/dotnet/msbuild/pull/14389
* Avoid republishing coverage artifacts on CI retries by @​JanProvaznik
in https://github.com/dotnet/msbuild/pull/14423
* Make the resolved change wave part of the node handshake by
@​JanProvaznik with @​Copilot in
https://github.com/dotnet/msbuild/pull/14557
* Bump github/gh-aw-actions/setup from 0.84.1 to 0.86.1 by
@​dependabot[bot] in https://github.com/dotnet/msbuild/pull/14665
* Bump github/gh-aw-actions/setup-cli from 0.84.1 to 0.86.1 by
@​dependabot[bot] in https://github.com/dotnet/msbuild/pull/14664
* [main] Update dependencies from dotnet/arcade by @​dotnet-maestro[bot]
in https://github.com/dotnet/msbuild/pull/14672
* [main] Update dependencies from dotnet/roslyn by @​dotnet-maestro[bot]
in https://github.com/dotnet/msbuild/pull/14677
* Give each transient MSBuild Server its own identity by @​JanProvaznik
in https://github.com/dotnet/msbuild/pull/14647
* Don't discard the XML cache after restore when it reloads from disk by
@​ViktorHofer in https://github.com/dotnet/msbuild/pull/14558
* Add TarDirectory and Untar tasks for creating and extracting tar
archives by @​ViktorHofer with @​Copilot in
https://github.com/dotnet/msbuild/pull/14451
* Add Directory.Parse.config to skip unknown attributes/elements during
parsing by @​benwitmanmsft in
https://github.com/dotnet/msbuild/pull/14588
* Revert branch freeze PowerShell automation by @​AlesProkop in
https://github.com/dotnet/msbuild/pull/14692
* Fix MT switch by @​AR-May in
https://github.com/dotnet/msbuild/pull/14682
* Document multi-request target crosstalk by @​rainersigwald in
https://github.com/dotnet/msbuild/pull/14403
* [main] Source code updates from dotnet/dotnet by @​dotnet-maestro[bot]
in https://github.com/dotnet/msbuild/pull/14698
* Keep project active through post-build telemetry by @​AR-May in
https://github.com/dotnet/msbuild/pull/14679
* Make eng/build.sh portable (don't hardcode /bin/bash) by @​ViktorHofer
in https://github.com/dotnet/msbuild/pull/14707
* [main] Update dependencies from dotnet/arcade by @​dotnet-maestro[bot]
in https://github.com/dotnet/msbuild/pull/14709
* Drop stale secret group by @​rainersigwald in
https://github.com/dotnet/msbuild/pull/14710
* [main] Update dependencies from dotnet/roslyn by @​dotnet-maestro[bot]
in https://github.com/dotnet/msbuild/pull/14713
 ... (truncated)

Commits viewable in [compare
view](https://github.com/dotnet/msbuild/compare/v18.10.1...v18.11.0).
</details>

Updated Microsoft.Build.Utilities.Core from 18.10.1 to 18.11.0.

Updated
[Microsoft.Extensions.Configuration](https://github.com/dotnet/dotnet)
from 10.0.12 to 10.0.14.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Extensions.Configuration's
releases](https://github.com/dotnet/dotnet/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/dotnet/dotnet/commits).
</details>

Updated
[Microsoft.Extensions.Configuration.Binder](https://github.com/dotnet/dotnet)
from 10.0.12 to 10.0.14.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Extensions.Configuration.Binder's
releases](https://github.com/dotnet/dotnet/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/dotnet/dotnet/commits).
</details>

Updated
[Microsoft.Extensions.Configuration.Json](https://github.com/dotnet/dotnet)
from 10.0.12 to 10.0.14.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Extensions.Configuration.Json's
releases](https://github.com/dotnet/dotnet/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/dotnet/dotnet/commits).
</details>

Updated
[Microsoft.Extensions.DependencyInjection.Abstractions](https://github.com/dotnet/dotnet)
from 10.0.12 to 10.0.14.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Extensions.DependencyInjection.Abstractions's
releases](https://github.com/dotnet/dotnet/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/dotnet/dotnet/commits).
</details>

Updated
[Microsoft.Extensions.FileSystemGlobbing](https://github.com/dotnet/dotnet)
from 10.0.12 to 10.0.14.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Extensions.FileSystemGlobbing's
releases](https://github.com/dotnet/dotnet/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/dotnet/dotnet/commits).
</details>

Updated [Microsoft.Extensions.Logging](https://github.com/dotnet/dotnet)
from 10.0.12 to 10.0.14.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Extensions.Logging's
releases](https://github.com/dotnet/dotnet/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/dotnet/dotnet/commits).
</details>

Updated
[Microsoft.NET.Sdk.WebAssembly.Pack](https://github.com/dotnet/dotnet)
from 10.0.12 to 10.0.14.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.NET.Sdk.WebAssembly.Pack's
releases](https://github.com/dotnet/dotnet/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/dotnet/dotnet/commits).
</details>

Updated [Microsoft.SourceLink.GitHub](https://github.com/dotnet/dotnet)
from 10.0.401 to 10.0.403.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.SourceLink.GitHub's
releases](https://github.com/dotnet/dotnet/releases)._

## 10.0.403

You can build .NET 10.0 from the repository by cloning the release tag
`v10.0.403` and following the build instructions in the [main
README.md](https://github.com/dotnet/dotnet/blob/v10.0.403/README.md#building).

Alternatively, you can build from the sources attached to this release
directly.
More information on this process can be found in the [dotnet/dotnet
repository](https://github.com/dotnet/dotnet/blob/v10.0.403/README.md#building-from-released-sources).

Attached are PGP signatures for the GitHub generated tarball and
zipball. You can find the public key at https://dot.net/release-key-2023

## 10.0.402

You can build .NET 10.0 from the repository by cloning the release tag
`v10.0.402` and following the build instructions in the [main
README.md](https://github.com/dotnet/dotnet/blob/v10.0.402/README.md#building).

Alternatively, you can build from the sources attached to this release
directly.
More information on this process can be found in the [dotnet/dotnet
repository](https://github.com/dotnet/dotnet/blob/v10.0.402/README.md#building-from-released-sources).

Attached are PGP signatures for the GitHub generated tarball and
zipball. You can find the public key at https://dot.net/release-key-2023

Commits viewable in [compare
view](https://github.com/dotnet/dotnet/compare/v10.0.401...v10.0.403).
</details>

Updated
[Microsoft.VisualStudio.Threading](https://github.com/microsoft/vs-threading)
from 18.7.23 to 18.12.1.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.VisualStudio.Threading's
releases](https://github.com/microsoft/vs-threading/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/microsoft/vs-threading/commits).
</details>

Updated
[Microsoft.VisualStudio.Threading.Analyzers](https://github.com/microsoft/vs-threading)
from 18.7.23 to 18.12.1.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.VisualStudio.Threading.Analyzers's
releases](https://github.com/microsoft/vs-threading/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/microsoft/vs-threading/commits).
</details>

Updated
[ModelContextProtocol](https://github.com/modelcontextprotocol/csharp-sdk)
from 2.2.0 to 2.3.0.

<details>
<summary>Release notes</summary>

_Sourced from [ModelContextProtocol's
releases](https://github.com/modelcontextprotocol/csharp-sdk/releases)._

## 2.3.0

This release improves HTTP discovery, OAuth, protocol interoperability,
and shutdown reliability, preserves registration order for server
primitives, and exposes a `TimeProvider` for deterministic client
timeout tests. It also corrects optional server-identity handling;
applications reading `McpClient.ServerInfo` should adopt nullable
handling.

## Breaking Changes

Refer to the [C# SDK
Versioning](https://csharp.sdk.modelcontextprotocol.io/v2/versioning.html)
documentation for details on versioning and breaking change policies.

1. **`McpClient.ServerInfo` is nullable — #​1903**
* Its return annotation changes from `Implementation` to
`Implementation?`. Existing non-nullable assignments or dereferences can
produce nullable warnings and fail warnings-as-errors builds.
* On `2026-07-28` connections, `ServerInfo` is `null` when the server
omits optional identity metadata from `server/discover`. Legacy
`initialize` still requires `serverInfo`. Reading the property before
connecting still throws `InvalidOperationException`.
* Migrate with a null check or a fallback such as
`client.ServerInfo?.Name ?? "Unknown server"`. Self-reported identity
must not be used for security decisions.
* This corrective source-compatibility change is intentionally included
in 2.3.0.

## What's Changed

* Correct protocol-version telemetry for stateless server spans #​1810
by @​luisangelrod
* Preserve HTTP errors and correct discovery fallback handling #​1791 by
@​PranavSenthilnathan (co-authored by @​Copilot)
* Make modern Streamable HTTP status mapping deterministic #​1837 by
@​jstar0
* Modern responses wait for the first protocol message before sending
headers; long-running silent handlers may need progress output or an
appropriate HTTP timeout. Legacy eager-header behavior is preserved.
* Accept opaque legacy metadata and correct request-scoped capabilities
and discovery advertisement #​1852 by @​halter73 (co-authored by
@​Copilot)
* Avoid redundant SSE fallback after discovery is rejected with 400 or
404 #​1855 by @​scottt732
* Close server stdin before waiting for graceful stdio process exit
#​1838 by @​luisangelrod
* Preserve insertion order when listing server tools, prompts, and
resources #​1924 by @​PederHP (co-authored by Claude Opus 5.5)
* Allow missing optional server identity in discovery and make
`ServerInfo` nullable #​1903 by @​Coding-Professional
* Include JSON parse details in Streamable HTTP 400 responses #​1844 by
@​ump45nose
* Exclude OAuth from `DiscoverProbeTimeout`, expose
`McpClientOptions.TimeProvider` for deterministic timeout tests, and
default SSE to legacy initialization #​1719 by @​halter73 (co-authored
by @​Copilot)
* OAuth remains subject to the overall `InitializationTimeout` and
caller cancellation; it is excluded only from the short discovery-probe
budget.
* Modern discovery over SSE requires both explicit
`HttpTransportMode.Sse` and `ProtocolVersion = "2026-07-28"`; pinning
the version with `AutoDetect` is not equivalent.
* Preserve numeric progress tokens in `RequestOptions` serialization
#​1832 by @​dfedoryshchev
* Dispose legacy SSE POST responses to release connections
deterministically #​1841 by @​yalcinfu22 (co-authored by Claude Fable 5)

## Documentation Updates

* Document standing support for new MCP specification revisions #​1826
by @​halter73 (co-authored by @​Copilot)

## Test Improvements

* Stabilize discovery-capable test connections while retaining
initialization deadlines #​1943 by @​tarekgh

## Repository Infrastructure Updates

* Add a source selector for manual documentation publishes #​1828 by
@​jeffhandley (co-authored by @​Copilot)
* Update SourceLink's private build dependency to resolve a vulnerable
Git dependency #​1873 by @​halter73 (co-authored by @​Copilot)
* Correct obsolete `McpServerFactory` references in Copilot instructions
#​1892 by @​Zir0-93
* Update Microsoft.Extensions.AI and AI.Abstractions to 10.11.0 and
align shared System dependencies to 10.0.13 #​1940

## Acknowledgements

* @​scottt732 made their first contribution in #​1855
* @​Zir0-93 made their first contribution in #​1892
* @​Coding-Professional made their first contribution in #​1903
 ... (truncated)

Commits viewable in [compare
view](https://github.com/modelcontextprotocol/csharp-sdk/compare/v2.2.0...v2.3.0).
</details>

Updated [Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json)
from 13.0.3 to 13.0.4.

<details>
<summary>Release notes</summary>

_Sourced from [Newtonsoft.Json's
releases](https://github.com/JamesNK/Newtonsoft.Json/releases)._

## 13.0.4

* New feature - Annotated for trim/AOT (in)compatibility
* New feature - Added support for using Index with JArray
* Change - Avoid LINQ expression trees in .NET 6+ reflection
* Fix - Fixed handling of empty constructor names
* Fix - Fixed XML convert duplicate attribute error on nested arrays
with writeArrayAttribute set to true
* Fix - Fixed XML convert array attribute is not set for properties with
special characters
* Fix - Fixed TimeOnly deserialization to support more formats

Commits viewable in [compare
view](https://github.com/JamesNK/Newtonsoft.Json/compare/13.0.3...13.0.4).
</details>

Updated
[Newtonsoft.Json.Schema](https://github.com/JamesNK/Newtonsoft.Json.Schema)
from 4.0.1 to 4.0.2.

<details>
<summary>Release notes</summary>

_Sourced from [Newtonsoft.Json.Schema's
releases](https://github.com/JamesNK/Newtonsoft.Json.Schema/releases)._

## 4.0.2

* Fix - Fix unevaluated properties with if/then/else
* Fix - Fix validation errors with circular references in child errors
* Fix - Only validate unevaluated scopes when required by the schema

Commits viewable in [compare
view](https://github.com/JamesNK/Newtonsoft.Json.Schema/compare/4.0.1...4.0.2).
</details>

Updated
[OmniSharp.Extensions.LanguageClient](https://github.com/OmniSharp/csharp-language-server-protocol)
from 0.19.9 to 0.19.11.

<details>
<summary>Release notes</summary>

_Sourced from [OmniSharp.Extensions.LanguageClient's
releases](https://github.com/OmniSharp/csharp-language-server-protocol/releases)._

## 0.19.11

## What's Changed
* Revert "Update to Mediatr 14" by @​JoeRobich in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1831
* Fix NuGet package version calculation by @​JoeRobich in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1835
* Publish NuGet packages from a single build by @​JoeRobich in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1836


**Full Changelog**:
https://github.com/OmniSharp/csharp-language-server-protocol/compare/v0.19.10...v0.19.11

## 0.19.10

## What's Changed
* Update verify (major) by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1030
* Update dotnet monorepo by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1031
* Update dependency Microsoft.CodeAnalysis.CSharp.Workspaces to v4.7.0
by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1038
* Update dependency Serilog.Extensions.Logging to v7 by @​JoeRobich in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1040
* Update dependency typescript to v5 by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1042
* Update dependency vscode to v1.82.0 by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1043
* Update dependency glob to v10 by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1047
* Regenerate ci github workflows from Nuke build by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1048
* Add npm to CI build by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1049
* Update verify by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1057
* Use new WorkingDirectory property for RunStep by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1061
* Fix NotebookSelector type by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1077
* Use new HeadlessRunStep by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1074
* Don't log critical message when client disconnect by @​ycholette in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/955
* Update Mediatr to 9.0.0 by @​JoeRobich in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1084
* Add ICapability to ShowMessageRequestClientCapabilities. Fixes #​1117
by @​chrissimon-au in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1118
* Fix github actions badge by @​sh-cho in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1171
* Support net8.0 TFM by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1242
* Bump braces from 3.0.2 to 3.0.3 in /vscode-testextension by
@​dependabot[bot] in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1254
* Update Verify.Xunit to v25 by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1268
* Fix RenameFiles workspace operations by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1079
* Use .NET SDK 9.0 by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1396
* Upgrade MediatR version to 12.4.1 by @​sheffer21 in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1439
* Fix ci publish by @​JoeRobich in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1441
* Update GH Action tool versions by @​JoeRobich in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1446
* Fix FluentAssertions after major update by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1442
* Fix serilog update by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1443
* Fix verify update by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1444
* Update dotnet tools by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1466
* Implement 3.18 features by @​JoeRobich in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1776

## New Contributors
* @​chrissimon-au made their first contribution in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1118
* @​sh-cho made their first contribution in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1171
* @​sheffer21 made their first contribution in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1439

**Full Changelog**:
https://github.com/OmniSharp/csharp-language-server-protocol/compare/v0.19.9...v0.19.10

Commits viewable in [compare
view](https://github.com/OmniSharp/csharp-language-server-protocol/compare/v0.19.9...v0.19.11).
</details>

Updated
[OmniSharp.Extensions.LanguageServer](https://github.com/OmniSharp/csharp-language-server-protocol)
from 0.19.9 to 0.19.11.

<details>
<summary>Release notes</summary>

_Sourced from [OmniSharp.Extensions.LanguageServer's
releases](https://github.com/OmniSharp/csharp-language-server-protocol/releases)._

## 0.19.11

## What's Changed
* Revert "Update to Mediatr 14" by @​JoeRobich in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1831
* Fix NuGet package version calculation by @​JoeRobich in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1835
* Publish NuGet packages from a single build by @​JoeRobich in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1836


**Full Changelog**:
https://github.com/OmniSharp/csharp-language-server-protocol/compare/v0.19.10...v0.19.11

## 0.19.10

## What's Changed
* Update verify (major) by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1030
* Update dotnet monorepo by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1031
* Update dependency Microsoft.CodeAnalysis.CSharp.Workspaces to v4.7.0
by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1038
* Update dependency Serilog.Extensions.Logging to v7 by @​JoeRobich in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1040
* Update dependency typescript to v5 by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1042
* Update dependency vscode to v1.82.0 by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1043
* Update dependency glob to v10 by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1047
* Regenerate ci github workflows from Nuke build by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1048
* Add npm to CI build by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1049
* Update verify by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1057
* Use new WorkingDirectory property for RunStep by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1061
* Fix NotebookSelector type by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1077
* Use new HeadlessRunStep by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1074
* Don't log critical message when client disconnect by @​ycholette in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/955
* Update Mediatr to 9.0.0 by @​JoeRobich in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1084
* Add ICapability to ShowMessageRequestClientCapabilities. Fixes #​1117
by @​chrissimon-au in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1118
* Fix github actions badge by @​sh-cho in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1171
* Support net8.0 TFM by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1242
* Bump braces from 3.0.2 to 3.0.3 in /vscode-testextension by
@​dependabot[bot] in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1254
* Update Verify.Xunit to v25 by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1268
* Fix RenameFiles workspace operations by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1079
* Use .NET SDK 9.0 by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1396
* Upgrade MediatR version to 12.4.1 by @​sheffer21 in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1439
* Fix ci publish by @​JoeRobich in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1441
* Update GH Action tool versions by @​JoeRobich in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1446
* Fix FluentAssertions after major update by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1442
* Fix serilog update by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1443
* Fix verify update by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1444
* Update dotnet tools by @​manandre in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1466
* Implement 3.18 features by @​JoeRobich in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1776

## New Contributors
* @​chrissimon-au made their first contribution in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1118
* @​sh-cho made their first contribution in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1171
* @​sheffer21 made their first contribution in
https://github.com/OmniSharp/csharp-language-server-protocol/pull/1439

**Full Changelog**:
https://github.com/OmniSharp/csharp-language-server-protocol/compare/v0.19.9...v0.19.10

Commits viewable in [compare
view](https://github.com/OmniSharp/csharp-language-server-protocol/compare/v0.19.9...v0.19.11).
</details>

Updated [Sarif.Sdk](https://github.com/Microsoft/sarif-sdk) from 5.7.0
to 5.8.0.

<details>
<summary>Release notes</summary>

_Sourced from [Sarif.Sdk's
releases](https://github.com/Microsoft/sarif-sdk/releases)._

## 5.8.0

## **v5.8.0** [Sdk](https://www.nuget.org/packages/Sarif.Sdk/v5.8.0) |
[Driver](https://www.nuget.org/packages/Sarif.Driver/v5.8.0) |
[Converters](https://www.nuget.org/packages/Sarif.Converters/v5.8.0) |
[Multitool](https://www.nuget.org/packages/Sarif.Multitool/v5.8.0) |
[Multitool
Library](https://www.nuget.org/packages/Sarif.Multitool.Library/v5.8.0)
* NEW: `GHAzDO1021.ProvideValidVersionControlProvenance` rejects a blank
primary branch or revision and the 40-character all-zero Git revision
sentinel.
* BUG: `MultithreadedAnalyzeCommandBase.Run` and `RunAsync` return on
timeout without disposing resources still used by unfinished analysis.
* BUG: `HashUtilities.ComputeHashes` omits hashes for unsupported file
paths so scan-exception notifications can be logged.
* BUG: `SarifLogger` emits hashes supplied by base-less in-memory scan
targets without reading a same-named file from the working directory.
* BUG: `SarifLogger` resolves `uriBaseId` before hashing result
artifacts and omits hashes when their relative locations cannot be
resolved.
* BUG: `analyze --post-uri` reports the endpoint health-check status and
response body or exception when validation fails.

Commits viewable in [compare
view](https://github.com/Microsoft/sarif-sdk/commits/v5.8.0).
</details>

Updated [Scriban](https://github.com/scriban/scriban) from 7.4.0 to
7.5.3.

<details>
<summary>Release notes</summary>

_Sourced from [Scriban's
releases](https://github.com/scriban/scriban/releases)._

## 7.5.3

# Changes

## 🧰 Misc

- Bound stack depth and CPU of postfix chains, array compare, big
integers (6b9c69bf)
- Guard string-producing builtins with LimitToString
(GHSA-95w2-9mjq-6c74) (466aeb2f)

**Full Changelog**:
[7.5.2...7.5.3](https://github.com/scriban/scriban/compare/7.5.2...7.5.3)

<sub>Published with
[dotnet-releaser](https://github.com/xoofx/dotnet-releaser/)</sub>


## 7.5.2

# Changes

## 🧰 Misc

- Make function values opaque to template member access (7f481f46)

**Full Changelog**:
[7.5.1...7.5.2](https://github.com/scriban/scriban/compare/7.5.1...7.5.2)

<sub>Published with
[dotnet-releaser](https://github.com/xoofx/dotnet-releaser/)</sub>


## 7.5.1

# Changes

## 🧰 Misc

- Support subtracting a timespan from a date (PR #​691) by @​tahakocal

**Full Changelog**:
[7.5.0...7.5.1](https://github.com/scriban/scriban/compare/7.5.0...7.5.1)

<sub>Published with
[dotnet-releaser](https://github.com/xoofx/dotnet-releaser/)</sub>


## 7.5.0

# Changes

## 🐛 Bug Fixes

- Fix TestUtcDateNow comparing utc_now against local time (PR #​684) by
@​tahakocal
- Fix string.truncatewords ignoring its ellipsis argument (PR #​687) by
@​tahakocal
- Fix date.parse not matching full month names with %B (PR #​686) by
@​tahakocal
- Fix date.parse_to_string formatting output with the parse pattern
converter (PR #​688) by @​tahakocal
- Fix date.parse with %x and %X combined with other specifiers (PR
#​690) by @​tahakocal
- Fix array.sort failing on numbers of different types (PR #​689) by
@​tahakocal

## 🧰 Misc

- Decouple output and string limits without breaking defaults (#​683)
(e4e1f076)
- Make date parsing documentation timezone-independent (#​685)
(7da8681a)

**Full Changelog**:
[7.4.0...7.5.0](https://github.com/scriban/scriban/compare/7.4.0...7.5.0)

<sub>Published with
[dotnet-releaser](https://github.com/xoofx/dotnet-releaser/)</sub>


Commits viewable in [compare
view](https://github.com/scriban/scriban/compare/7.4.0...7.5.3).
</details>

Updated [SharpYaml](https://github.com/xoofx/SharpYaml) from 3.13.1 to
3.16.0.

<details>
<summary>Release notes</summary>

_Sourced from [SharpYaml's
releases](https://github.com/xoofx/SharpYaml/releases)._

## 3.16.0

# Changes

## ✨ New Features

- Add YamlWriter.WriteScalar(value, ScalarStyle) and a global multiline
string style option (PR #​169) by @​Mpdreamz

## 🧰 Misc

- Accept the non-specific tag '!' in the scanner (PR #​171) by
@​Shaisolaris
- Match converters registered for T against lookups for T? (Nullable<T>)
(PR #​170) by @​Mpdreamz

**Full Changelog**:
[3.15.0...3.16.0](https://github.com/xoofx/SharpYaml/compare/3.15.0...3.16.0)

<sub>Published with
[dotnet-releaser](https://github.com/xoofx/dotnet-releaser/)</sub>


## 3.15.0

# Changes

## ✨ New Features

- Add global unmapped member callback and finalizer (PR #​165) by
@​Mpdreamz

## 🧰 Misc

- Exempt polymorphic discriminator from unmapped member Disallow
(92525a20)

**Full Changelog**:
[3.14.0...3.15.0](https://github.com/xoofx/SharpYaml/compare/3.14.0...3.15.0)

<sub>Published with
[dotnet-releaser](https://github.com/xoofx/dotnet-releaser/)</sub>


## 3.14.0

# Changes

## ✨ New Features

- Add trivia-preserving syntax text edits (#​163) (b8debcdb)

## 🐛 Bug Fixes

- Fix ambiguous string member serialization in generated contexts (PR
#​160) by @​HoMiyabi

## 🧰 Misc

- Update links for serialization and low-level APIs (PR #​161) by
@​mpoettgen
- Clarify merge-key and reference preservation semantics (#​155)
(7648ddb8)
- Use generated readers when populating mutable sequences (#​157)
(d20a18ce)

**Full Changelog**:
[3.13.1...3.14.0](https://github.com/xoofx/SharpYaml/compare/3.13.1...3.14.0)

<sub>Published with
[dotnet-releaser](https://github.com/xoofx/dotnet-releaser/)</sub>


Commits viewable in [compare
view](https://github.com/xoofx/SharpYaml/compare/3.13.1...3.16.0).
</details>

Updated [StreamJsonRpc](https://github.com/microsoft/vs-streamjsonrpc)
from 2.20.20 to 2.26.150.

<details>
<summary>Release notes</summary>

_Sourced from [StreamJsonRpc's
releases](https://github.com/microsoft/vs-streamjsonrpc/releases)._

## 2.26.150

## Fixes
* Fix JSON-RPC 1.0 compliance. #​1522
[@​AArnott](https://github.com/AArnott)
* Accept null JSON-RPC params consistently. #​1506
[@​AArnott](https://github.com/AArnott)
* Preserve exception details across RPC hops. #​1518
[@​AArnott](https://github.com/AArnott)
* Fix typeless async enumerable serialization. #​1521
[@​AArnott](https://github.com/AArnott)
* Fix NativeAOT proxy accessibility and interceptor fallback. #​1472
[@​AArnott](https://github.com/AArnott)
* Avoid repeating async enumerator creation failures. #​1520
[@​AArnott](https://github.com/AArnott)
* Propagate async enumerable cancellation between reads. #​1525
[@​AArnott](https://github.com/AArnott)
* Avoid retaining returned PipeReader channels. #​1528
[@​AArnott](https://github.com/AArnott)
* Ignore disposal methods in RPC ambiguity checks. #​1532
[@​AArnott](https://github.com/AArnott)
* Fix the out-of-band streams documentation title. #​1553
[@​AArnott](https://github.com/AArnott)
* RPC proxies now reject by-reference parameters. #​1507
[@​AArnott](https://github.com/AArnott)

## Enhancements
* Add outbound request timeouts. #​1471
[@​AArnott](https://github.com/AArnott)
* Add parameter-name customization for JSON-RPC. #​1473
[@​AArnott](https://github.com/AArnott)
* Implement async disposal on client proxies. #​1523
[@​AArnott](https://github.com/AArnott)
* Support async enumerable structs in NativeAOT. #​1509
[@​AArnott](https://github.com/AArnott)
* Add an analyzer for ambiguous RPC method overloads. #​1510
[@​AArnott](https://github.com/AArnott)
* Add flexible named-argument matching. #​1540
[@​AArnott](https://github.com/AArnott)
* Add `JsonRpcEventAttribute` for event renaming. #​1519
[@​AArnott](https://github.com/AArnott)
* Support W3C `traceparent` string serialization in MessagePack
formatters. #​1445 [@​AArnott](https://github.com/AArnott)
* Add the `MessagePackFormatter.InternStrings` property. #​1446
[@​AArnott](https://github.com/AArnott)
* Reduce per-call allocations across formatters. #​1559
[@​AArnott](https://github.com/AArnott)
* Optimize the WebSocket receive path on pre-netstandard2.1 targets.
#​1462 [@​AArnott](https://github.com/AArnott)
[@​Copilot](https://github.com/Copilot)
* Reuse Newtonsoft.Json contracts across formatters. #​1527
[@​AArnott](https://github.com/AArnott)
* Defer reflection for cancellation overloads. #​1544
[@​AArnott](https://github.com/AArnott)
* Prefer cancellable RPC overloads. #​1531
[@​AArnott](https://github.com/AArnott)
* Make `RequestIdSTJsonConverter` public for source generation. #​1557
[@​eerhardt](https://github.com/eerhardt)
* Add a working F# RPC sample. #​1508
[@​AArnott](https://github.com/AArnott)
* Document multiple client proxy patterns. #​1470
[@​AArnott](https://github.com/AArnott)
* Document exotic-type wire formats and marshaled method names. #​1554
[@​AArnott](https://github.com/AArnott)

## Dependency updates
* Update MessagePack-CSharp to 2.5.307. #​1571
[@​renovate](https://github.com/renovate)[bot]
* Update Nerdbank.MessagePack to 1.3.88. #​1561
[@​renovate](https://github.com/renovate)[bot]
* Update Newtonsoft.Json to 13.0.4. #​1495
[@​renovate](https://github.com/renovate)[bot]

**Full Changelog**:
https://github.com/microsoft/vs-streamjsonrpc/compare/v2.25.29...v2.26.150

## 2.25.29


## Changes:

* #​1463: Compile analyzers to support .NET 8 SDK

## Fixes

* #​1399: Analyzer in 2.24.84 requires Roslyn 4.14.0, incompatible with
.NET 8 SDK

This list of changes was [auto
generated](https://devdiv.visualstudio.com/DevDiv/_build/results?buildId=14379625&view=logs).

## 2.25.28


## Changes:

* #​1459: Bump MessagePack to 2.5.302

This list of changes was [auto
generated](https://devdiv.visualstudio.com/DevDiv/_build/results?buildId=14362774&view=logs).

## 2.25.25


## Changes:


### Enhancements:


* #​1395: Add `JsonRpc.DisplayName` property
* #​1404: Move ApplyInboundActivity earlier so dispatch traces have
activity IDs

### Fixes

* #​1420: Avoid RpcMarshalable source-gen local name collisions with
method parameters
* #​1439: Improve docs around using `NerdbankMessagePackFormatter`
* #​1432: Update documentation link for RpcMarshalableAttribute

### Others:


* #​1438: Bump Nerdbank.MessagePack to 1.2.4
* #​1389: Bump Microsoft.AspNetCore packages
* #​1394: Update dependency Microsoft.Bcl.AsyncInterfaces to v10

This list of changes was [auto
generated](https://devdiv.visualstudio.com/DevDiv/_build/results?buildId=14260213&view=logs).</details>

## 2.24.92

## What's Changed

* Bump Nerdbank.MessagePack to 1.1.62 by @​AArnott in
https://github.com/microsoft/vs-streamjsonrpc/pull/1430


**Full Changelog**:
https://github.com/microsoft/vs-streamjsonrpc/compare/v2.24.84...v2.24.92

## 2.24.84

# What's Changed

## Features

* Add source generation of proxies by @​AArnott in
https://github.com/microsoft/vs-streamjsonrpc/pull/1223
* Add NerdbankMessagePackFormatter by @​trippwill in
https://github.com/microsoft/vs-streamjsonrpc/pull/1100
* Enable RPC marshalable objects in `NerdbankMessagePackFormatter` by
@​AArnott in https://github.com/microsoft/vs-streamjsonrpc/pull/1260
* Source generate proxies for RpcMarshalable interfaces by @​AArnott in
https://github.com/microsoft/vs-streamjsonrpc/pull/1246
* Add `RpcTargetMetadata` generation from `ITypeShape` by @​AArnott in
https://github.com/microsoft/vs-streamjsonrpc/pull/1251
* Create a NativeAOT-compatible JsonRpc.AddLocalTargetObject method by
@​AArnott in https://github.com/microsoft/vs-streamjsonrpc/pull/1236
* Use PolyType shapes for events by @​AArnott in
https://github.com/microsoft/vs-streamjsonrpc/pull/1297
* Add `PolyTypeJsonFormatter` as an experimental API by @​AArnott in
https://github.com/microsoft/vs-streamjsonrpc/pull/1344
* Add `RpcTargetMetadata.FromShape<T>` overloads that work on .NET
Framework by @​AArnott in
https://github.com/microsoft/vs-streamjsonrpc/pull/1358
* Expose MessageFormatterEnumerableTracker.EnumeratorResults as public
by @​eerhardt in https://github.com/microsoft/vs-streamjsonrpc/pull/1206

## Fixes

* Remove Dependency on Newtonsoft.Json from JsonRpc by @​eerhardt in
https://github.com/microsoft/vs-streamjsonrpc/pull/1201
* Remove Dependency on Newtonsoft.Json From Protocol objects by
@​eerhardt in https://github.com/microsoft/vs-streamjsonrpc/pull/1198
* Cut ProxyGeneration out if dynamic code isn't supported by @​eerhardt
in https://github.com/microsoft/vs-streamjsonrpc/pull/1202
* Add attributes for NativeAOT safety by @​AArnott in
https://github.com/microsoft/vs-streamjsonrpc/pull/1196
* Refactor code and annotations to fix all warnings in
NativeAOTCompatibility. by @​eerhardt in
https://github.com/microsoft/vs-streamjsonrpc/pull/1207
* Reduce trimming demands for RPC target objects by @​AArnott in
https://github.com/microsoft/vs-streamjsonrpc/pull/1233
* Improve performance of `WebSocketMessageHandler` by @​AArnott in
https://github.com/microsoft/vs-streamjsonrpc/pull/1237
* Cap the amount of text copied into the stringbuilder in
JsonRpcEventSource.Format by @​ToddGrun in
https://github.com/microsoft/vs-streamjsonrpc/pull/1187
* Use JsonElement.Clone instead of Deserialize by @​eerhardt in
https://github.com/…
This was referenced Oct 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Investigate RestoreTask performance in the task host

4 participants