1.6.0-beta5 November 4th, 2026
Akka.NET 1.6.0-beta5 removes [AkkaUnion] in favor of inferring unions from the property type, teaches the source generator to serialize C# 15 union types, and fixes a sharding producer-controller crash plus four Akka.Streams bugs. Read the v1.6 getting started guide for the full upgrade path.
Serialization V2
- A property typed as an interface, an abstract class, or a closed hierarchy is now a union over every
[AkkaSerializable]type that implements or derives from it - no attribute needed.AkkaUnionAttributeis deleted, and AKKASG018, AKKASG038, AKKASG049 and AKKASG050 retire with it. Framework types and collection-like types are never inferred. The wire format is unchanged. (#8890) - C# 15 union types work as field types. The generator detects a union as a struct implementing
IUnion, uses its public single-parameter constructors as the member set, and dispatches onValue.TUnion?anddefault(TUnion)both read back as null. (#8888) [AkkaSerializable<T>]is renamed to[AkkaSerializerIncludes<T>]. A non-generic included type now takes its manifest from its own[AkkaSerializable(Manifest = ...)]; settingManifeston the include of a non-generic type is the new AKKASG053 error. Closed generic constructions keepManifest/ManifestPrefixon the include. (#8891)- AKKASG048 fails the build when a concrete implementor in the compilation lacks
[AkkaSerializable], and AKKASG019 now fires on an empty discovered union instead of emitting a dispatch helper with no arms. AKKASG025 (unsealed union member) is now a Warning instead of Info. (#8887) - New AKKASG052 catches a property typed as a concrete, non-sealed nested value class that some class in the compilation derives from - the property would be written as the base's own fields and lose the subclass state. (#8890)
Akka.Streams
Dispose()on theActorSystem's shared default materializer no longer shuts it down for every user of the system. Ausingblock, a scoped DI registration, or an actor disposing it inPostStopused to breaksystem.Materializer()and every later materialization. TheActorSystemstill stops it on termination, andShutdown()still stops it explicitly. (#8895, fixes #8885)SourceRefnow honorsStreamRefAttributesfor buffer capacity, demand redelivery interval and final termination signal deadline, falling back toStreamRefSettingswhen no attribute is set. (#8880, fixes #8878)StreamRefSettingsnow initializesFinalTerminationSignalDeadlinefrom its constructor, and gains aWithFinalTerminationSignalDeadlinemethod. (#8877)- Deferred stream operators now pass inherited attributes through when they materialize their inner graph, so attributes set above a
LazySource,LazySinkorSetupstage reach the stages inside it. (#8842) Flow.Setupforwards its input correctly instead of dropping elements. (#8839)
Akka.Cluster.Sharding
ShardingProducerControllerno longer throwsInvalidActorNameExceptionand restarts when a message arrives for an entity whose delivery child is still terminating. Cleanup now marks the entity as stopping and buffers for it, and the entry is removed only once the child's name is free. Producer demand keeps flowing while the child stops. (#8869, fixes #8850)
Internal
- NuGet publishing moves to GitHub Actions trusted publishing, replacing the Windows release pipeline. (#8892)
ReliableDeliveryShardingSpecno longer races on a legal at-least-once duplicate of msg-3. (#8894)
2 contributors since release 1.6.0-beta4
| COMMITS | LOC+ | LOC- | AUTHOR |
|---|---|---|---|
| 10 | 4482 | 1834 | Aaron Stannard |
| 2 | 256 | 10 | Ariel Fischer |