
Hey Critter Stack folks and JasperFx Software clients, absolutely none of this is set in stone and I’m mostly writing it to elucidate my own thinking, so call this the first pass.
.NET 11 will be publicly available on November 10th. For all of my career as an OSS author, I’ve been deep into my own thoughts and plans and usually caught badly off guard by major new .NET versions. Not this time though! We’re planning to have all the Critter Stack tools release with a .NET 11 target right after .NET 11 itself is officially released.
We’ve had some discussions about this on the Critter Stack Discord about how to address this with a couple choices — but know that we for better or worse do take SemVer pretty seriously:
- Add .NET 11 targeting to our current versions and just make a minor version bump but also keep .NET 9 support just to avoid making any breaking changes
- Do a major version release of all the major tools, so Marten 10.0 and Wolverine 7.0 for example and now target .NET 10 and .NET 11 across the stack
I’m hesitant to do the major version bump because that’s a lot of work, we just barely made major version releases in late May in our Critter Stack 2026 wave and this feels too soon to do another, and lastly, major version releases come with the pressure to make any breaking changes or consolidations you’ve already been thinking about.
On the flip side, .NET 9 is end of life and many of our dependencies, especially EF Core, are unholy nightmares to support with multi-targeting. And also, I’m tempted to lift the lid and make all those breaking changes and consolidations we’ve already been thinking of doing:)
And no, we’re not going to compromise on SemVer versioning rules. Dropping a .NET version from your support is 100% a breaking change. To paraphrase Winston Churchill, SemVer is the worst versioning system — except for all the others.
I think I’m personally landing on doing the major version bumps to add .NET 11 and drop .NET 9 at the same time. I’m also thinking that if we do that that we’ll make very few breaking changes to make upgrades easy and to back port fixes to the existing version lines at least through January of 2027. That being said, here’s my first thoughts on what new versions mean:
- Marten 10, Wolverine 7, Polecat 6, Weasel 10, Fisher 2, JasperFx 3, and we’re going to wait Bobcat 1.0 for .NET 11 now. I’m not sure if Stoat goes 1.0 before Christmas anyway.
- CritterWatch 1.2 will support .NET 11 and the newer versions of the other tools as well as being backward compatible with older Wolverine versions
- Add .NET 11 support
- Drop .NET 9 support
- Marten 9.0 fixed what I long considered to be Marten’s “Original Sin” by finally turning the identity map mechanics off by default, so now it’s time to fix Wolverine’s and rewire Wolverine so that there’s a one to one relationship between handler chains and handlers. Gobbledygook to folks not familiar to Wolverine, so let me summarize that as “make Wolverine friendlier to modular monoliths by default“
- We’ve identified quite a few opportunities to utilize .NET 11 capabilities as optimizations
- Add C# discriminated union support to Marten/Polecat/Fisher because I just know that’s coming as a user request
- Try to eliminate more structural duplication between Marten, Polecat, and Fisher. Especially with their respective Wolverine integrations but also for anything else we can
- A big time way to dog food Stoat as an agent coordination tool
I don’t think there’s many breaking changes other than some types moving namespaces as part of the consolidation and less so than there was in the previous wave of major versions.
Welp, what does anyone think?