Skip to content

Refresh the release notes list and add the 7-to-8 and 8-to-9 upgrade pages - #212

Merged
tillig merged 2 commits into
mainfrom
feature/whats-new
Sep 2, 2026
Merged

tillig merged 2 commits into
mainfrom
feature/whats-new

Conversation

@tillig

@tillig tillig commented Sep 2, 2026 •

Copy link
Copy Markdown
Member

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.MvvmCross is archived — entry removed. The other 23 are active.
  • Comparing the list against the set of shipping packages turned up exactly one omission: 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.

ResolveRequest went from a class to a readonly struct:

public readonly struct ResolveRequest : IEquatable<ResolveRequest>

That's a compile break, not a target-framework change. Comparing one to null stops 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 custom IInstanceActivator implementations — 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 RequiresUnreferencedCodeAttribute internal (verified: it's internal sealed class in LinkerAttributes.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:

Target frameworks
8.4.0 net8.0;net7.0;net6.0;netstandard2.1;netstandard2.0
9.x net10.0;net8.0;netstandard2.1;netstandard2.0

So net6.0 and net7.0 dropped, net10.0 added. Applications still on net6.0/net7.0 can consume the release through netstandard2.1 — the same framing the 6-to-7 page used for net5.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.DiagnosticSource 8.0.1 → 10.0.0, on every target
  • Microsoft.Bcl.AsyncInterfaces 8.0.0 → 10.0.0, on netstandard2.0 only

A closing section points at what 9.x added — AnyKey and [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 lint clean. Nested-markup and bad-link scans clean. Confirmed the new page uses the overline-plus-underline title convention established in #197, and that the whats-new toctree 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.rst and support.rst still need reducing to stubs, but that has to wait for autofac/.github#2 to merge — the stubs link to MAINTAINERS.md, which doesn't exist on main yet, and I'd rather not ship a PR that knowingly introduces a 404.

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.
@tillig tillig changed the title Refresh the release notes list and add a 7.x to 8.x upgrade page Refresh the release notes list and add the 7-to-8 and 8-to-9 upgrade pages Sep 2, 2026
@tillig
tillig merged commit 5374c3e into main Sep 2, 2026
2 checks passed
@tillig
tillig deleted the feature/whats-new branch September 2, 2026 21:35
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