Skip to content

Ship 3.2.0 API surface and target the build at 3.2.0 - #3216

Merged
mgravell merged 1 commit into
mainfrom
marc/3.2.0-ga
Sep 10, 2026
Merged

Ship 3.2.0 API surface and target the build at 3.2.0#3216
mgravell merged 1 commit into
mainfrom
marc/3.2.0-ga

Conversation

@mgravell

Copy link
Copy Markdown
Collaborator

Summary

  • Moves every PublicAPI.Unshipped.txt entry (StackExchange.Redis root + net6.0, RESPite root) into its corresponding Shipped.txt, ahead of the 3.2.0 GA cut - net6.0/net8.0 Unshipped files for RESPite were already empty. Straight append in existing order, matching the convention from the prior 3.1 GA ship commit (bf8fac8).
  • Sets versionHeightOffset: -2, scoped to 3.2 via versionHeightOffsetAppliesTo, so the computed version lands on 3.2.0 once this merges (current height is 1 from the "Bump to 3.2" commit; this PR adds 1 more, offset brings the total back to 0), rather than 3.2.2. Same pattern used for the 3.1 GA cut.

Verified: nbgv get-version reports 3.2.0 at this commit; dotnet build on both libraries (all TFMs) is clean with the moved shipfiles; a PublicRelease=true pack produces StackExchange.Redis.3.2.0.nupkg.

Test plan

  • dotnet build src/StackExchange.Redis/StackExchange.Redis.csproj -c Release /p:CI=true - clean, all TFMs
  • nbgv get-version at this commit reports 3.2.0
  • dotnet pack ... /p:PublicRelease=true produces StackExchange.Redis.3.2.0.nupkg

Moves every PublicAPI.Unshipped.txt entry (StackExchange.Redis root and net6.0,
RESPite root) to its corresponding Shipped.txt, ahead of the 3.2.0 GA cut. Sets
versionHeightOffset -2, scoped to 3.2 via versionHeightOffsetAppliesTo, so that once
this merges the computed version lands on 3.2.0 rather than 3.2.2.
@mgravell
mgravell merged commit 8460293 into main Sep 10, 2026
4 checks passed
@mgravell
mgravell deleted the marc/3.2.0-ga branch September 10, 2026 14:06
mgravell added a commit that referenced this pull request Sep 11, 2026
#3216 shipped the 3.2.0 API surface, which moves entries from Unshipped to
Shipped - main's Unshipped is now just the #nullable directive, and its Shipped
grew from 2859 to 3013 lines. Our branch still carried 233 unshipped entries,
and they were a mixture: 154 came from main and have now shipped, while 79 are
this feature's own and must stay unshipped.

So this is not a both-sides merge. Resolved by taking our file verbatim - order,
grouping and header intact - and dropping every entry that now appears in
Shipped. Keeping them would have declared the same symbol in both files, which
the analyzer rejects; dropping ours instead would have silently un-declared the
feature's API and failed the build for the other reason.

What remains unshipped is the feature: 58 entries behind [SER010], the two
options providers, ConfigurationOptions.TopologyRefreshSeconds, the provider's
TopologyRefreshInterval, DefaultOptionsProvider.Name, and the health-check
probe flags behind [SER007]. ConnectionFailureType.MaintenanceHandoff is in
there as the one ungated addition.

Verified rather than assumed: zero symbols appear in both files (3010 shipped,
79 unshipped, intersection empty), the build is clean across every TFM, and the
suite is green at 6382/0/162.

Note the BOM handling, because it cost a build: reading the blob yields the BOM
as a literal character, and writing with utf-8-sig adds another, which turns
"#nullable enable" into a declared symbol named "<BOM>#nullable enable". Strip
all BOMs from the content, then write exactly one.
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