Repository navigation
Refresh the release notes list and add the 7-to-8 and 8-to-9 upgrade pages - #212
Merged
Merged
Conversation
Checked every repository linked from the release notes page against the GitHub API rather than reading down the list. Autofac.Extras.MvvmCross is archived, so its entry is removed; the other twenty-three are active. Comparing the list against the set of shipping packages turned up exactly one omission, Autofac.Pooling, which now has an entry under extended features. The plan for this was a note saying 8.0 and 9.0 were target framework changes only, and no new upgrade pages. That was right about 9.0 and wrong about 8.0: ResolveRequest went from a class to a readonly struct, which is a compile break for anyone holding one - comparing it to null stops working, and it is copied by value so a callee cannot mutate the caller's copy. That affects custom resolve middleware and custom activators, which is exactly the audience the 5-to-6 page was written for, so 8.x gets a page after all. It also records the 8.4.0 change making the shim RequiresUnreferencedCodeAttribute internal. No page for 8.x to 9.x. That release changed only target frameworks, so the compiler already tells you everything, and the new page says so explicitly rather than leaving a reader to wonder whether the page is missing. That also matches the existing precedent - there is no 4-to-5 page either.
Leaving this one out would put a hole in the series, which reads as an oversight rather than as "nothing happened" - and it would look stranger still once there is a 9-to-10 page sitting next to a missing 8-to-9. The sentence in the 7-to-8 page explaining why there was no 8-to-9 page is removed accordingly. Upgrade pages are the one place target framework changes belong, which is what the 6-to-7 page does for net5.0, so the page leads with them. Checked against the project files rather than the release notes: 8.4.0 targeted net8.0;net7.0;net6.0;netstandard2.1;netstandard2.0 and 9.x targets net10.0;net8.0;netstandard2.1;netstandard2.0, so net6.0 and net7.0 were dropped and net10.0 added. Applications on net6.0 or net7.0 can still consume the release through netstandard2.1, the same framing the 6-to-7 page used. The dependency bumps are the part with real consequences, since they flow transitively and raise the floor for consuming applications: System.Diagnostics.DiagnosticSource 8.0.1 to 10.0.0 on every target, and Microsoft.Bcl.AsyncInterfaces 8.0.0 to 10.0.0 on netstandard2.0 only. The conditions were read off the csproj so the page says which targets are affected rather than implying both apply everywhere. A closing section points at what 9.x added - AnyKey and the ServiceKey attribute, opt-in metrics, and the trimming and AOT annotations - so the page is worth opening even though the upgrade itself asks nothing of you.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Phase 3h. Small, but it revises one decision from the plan.
Release notes list
Rather than reading down the list, I checked every repository it links against the GitHub API:
Autofac.Extras.MvvmCrossis archived — entry removed. The other 23 are active.Autofac.Pooling, now listed under extended features.A plan revision: 8.x does need an upgrade page
The approved plan said to add "a short note that 8.0 and 9.0 were TFM-only rather than new upgrade-guide pages." That was right about 9.0 and wrong about 8.0.
ResolveRequestwent from a class to areadonly struct:That's a compile break, not a target-framework change. Comparing one to
nullstops working, and it's copied by value now, so a method taking one can't mutate the caller's copy. The affected audience — custom resolve middleware and customIInstanceActivatorimplementations — is exactly who the 5-to-6 page was written for, which is what convinced me it deserves the same treatment.The page also records the 8.4.0 change making the shim
RequiresUnreferencedCodeAttributeinternal(verified: it'sinternal sealed classinLinkerAttributes.cs, and the commit making it so is in history).8.x to 9.x now has a page too
Added on review feedback, and the reasoning is better than mine was: leaving it out puts a hole in the series, which reads as an oversight rather than as "nothing happened" — and it would look stranger still once a 9-to-10 page sits next to a missing 8-to-9. The sentence in the 7-to-8 page explaining why there was no 8-to-9 page is removed accordingly.
Upgrade pages are the one place target-framework changes belong — it's what the 6-to-7 page does for
net5.0— so this one leads with them. Checked against the project files rather than the release notes:net8.0;net7.0;net6.0;netstandard2.1;netstandard2.0net10.0;net8.0;netstandard2.1;netstandard2.0So
net6.0andnet7.0dropped,net10.0added. Applications still onnet6.0/net7.0can consume the release throughnetstandard2.1— the same framing the 6-to-7 page used fornet5.0.The dependency bumps are the part with real consequences, since they flow transitively and raise the floor for consuming applications. I read the conditions off the csproj so the page says which targets each affects rather than implying both apply everywhere:
System.Diagnostics.DiagnosticSource8.0.1 → 10.0.0, on every targetMicrosoft.Bcl.AsyncInterfaces8.0.0 → 10.0.0, onnetstandard2.0onlyA closing section points at what 9.x added —
AnyKeyand[ServiceKey], opt-in metrics, trimming and AOT annotations — so the page is worth opening even though the upgrade itself asks nothing of you.Verification
sphinx -W,doc8,pre-commit,npm run lintclean. Nested-markup and bad-link scans clean. Confirmed the new page uses the overline-plus-underline title convention established in #197, and that thewhats-newtoctree renders in the right order with the new page ahead of 6-to-7.Note on sequencing
This is independent of the outstanding stub work.
owners.rstandsupport.rststill need reducing to stubs, but that has to wait for autofac/.github#2 to merge — the stubs link toMAINTAINERS.md, which doesn't exist onmainyet, and I'd rather not ship a PR that knowingly introduces a 404.