Skip to content

release: 0.14.239 - #240

Merged
MDA2AV merged 1 commit into
mainfrom
release/0.14.239
Sep 20, 2026
Merged

MDA2AV merged 1 commit into
mainfrom
release/0.14.239

Conversation

@MDA2AV

@MDA2AV MDA2AV commented Sep 20, 2026

Copy link
Copy Markdown
Owner

All twelve published packages to 0.14.239.

First release since #237, so the bump is genuinely only the twelve <Version> elements — IoxideRuntime.Version is generated from ioxide.csproj and the README's blockquote literal is gone, replaced by the nuget badge that was already at the top. Nothing else in the tree states the number, and the version test confirms the generated constant followed without being touched.

What this release carries

#239 — recv buffers a reader or stream still holds are reclaimed at teardown. TryGetItem is a dequeue, so anything a TcpConnectionPipeReader or TcpConnectionStream pulled out was invisible to DrainRecv and came back only if the caller completed it — which nothing obliged them to do. Measured before the fix: with a 16-slot group, 16 of 64 connections served and then the server stopped receiving. Mirrored onto QUIC through the same interface, where the items are pooled arrays rather than ring buffers so it is pool hygiene rather than exhaustion. Also gives TcpConnectionStream the Dispose it never had, which is what the two SslStream samples were already calling.

#238 — the PipeReader contract under test: examined parks the next read instead of respinning it, a partial consume mid-segment leaves the rest readable, and buffers return as consumption passes them.

#237IoxideRuntime.Version generated from the csproj, no reflection, and GenerateDocumentationFile turned on so the compiler finally parses the doc comments. That found six stale crefs on its first run.

Plus the comment pass that went with #239: 71 files, net ~195 lines, and a handful of comments that had become actively wrong — a warning stranded on the wrong method, a // not needed on a line that is needed, references to nghttp3 from the pure-C# h3 stack.

Note for consumers

TcpOptions.IdleTimeoutMs and SendTimeoutMs have defaulted to 60s since #236 in the previous release. A connection that goes quiet in both directions for a minute is now closed. That is right for HTTP keep-alive and wrong for an idle websocket with a longer ping interval — those listeners want IdleTimeoutMs raised past the ping interval, or 0.

E2E 194, Unit 46, Http 44, Tls 142, Chaos 47, File 4.

All twelve published packages share one version, as always.

First release since #237, so the bump really is only the twelve Version elements:
IoxideRuntime.Version is generated from ioxide.csproj now, and the README's
blockquote literal is gone in favour of the nuget badge that was already there.
Nothing else in the tree states the number.

Carries #239 (recv buffers a reader or stream still holds are reclaimed at
teardown, on both TCP and QUIC), #238 (the PipeReader contract under test) and
#237 itself.

E2E 194, Unit 46, Http 44, Tls 142, Chaos 47, File 4.
@MDA2AV
MDA2AV merged commit 47eba14 into main Sep 20, 2026
1 check passed
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.

1 participant