Repository navigation
Audit BREAKING_CHANGES_V1.6.md against v1.5.71 and catch up through #8698 - #8700
Merged
Aaronontheweb merged 4 commits intoOct 1, 2026
Merged
Aaronontheweb merged 4 commits into
Aaronontheweb merged 4 commits into
Conversation
…kkadotnet#8698 Restate the definition (binary / source / behavioral compatibility against the last stable v1.5 release), drop rows that are not breaking under it (Artery-only, DynamicTypeLoading-off-only, fixes, dev-only comparisons), fold the TargetInvocationException and trim-annotation rows into one row each, shorten the rest, mark every row Merged with its PR, and add the breaking changes from akkadotnet#8694 and akkadotnet#8698.
Cover changes on dev since the v1.5 line diverged that landed before the ledger existed: net10.0-only targeting and ByteString removal (akkadotnet#8132), App.config HOCON loading removal (akkadotnet#7456), and the AddOrSet removal (akkadotnet#7622).
Add rows for akkadotnet#8222 (Serializer overloads, ByteArraySerializer manifest), akkadotnet#8465 (explicit TLS hostname check), akkadotnet#8132 (TCP connects bypass akka.io.dns) and akkadotnet#7557 (object handler without predicate blocks later Receive calls). State net10.0-only once, folding in akkadotnet#8594 and the dependency bumps; fix the ByteString row's write types; narrow the akkadotnet#8698 row to module serializers; drop the .Internal AddOrSet row and say why in the preamble; shorten rows; use asterisk list markers.
The Receive(typeof(object), Func<object, bool>) regression is being fixed in a separate PR instead of documented.
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.
Audits
BREAKING_CHANGES_V1.6.mdagainst the last stable v1.5 release, catches it up with the## Breaking changessections of PRs merged since 2026-09-20, and adds the breaking changes that landed before the ledger existed. Only that file changes.Definition used
Baseline: 1.5.71 (newest
1.5.*tag; no1.6.0-*tag exists). A change is breaking if it isn't binary compatible, source compatible (trim-analyzer warnings noted briefly), or behaviorally compatible for an existing app with existing config. Not listed:Akka.DynamicTypeLoading-off-only behavior (except #8608, which turns it off for trimmed/AOT apps), fixes, comparisons with dev states that never shipped, refactors, new APIs, and.Internal/[InternalApi]types (perdocs/community/contributing/api-changes-compatibility.md). The preamble now says this, and says breaking changes go in the PR body's## Breaking changessection and get batched here.Rows: 39 before, 22 after.
Removed (26 rows)
TargetInvocationExceptionrow (their settings-block cases are fixes; switch-off parts excluded); AOT (3/7): Props/actor-type trimming annotations, akka.loggers from a built-in table, Akka.DependencyInjection ripple #8603 into the trim-analyzer rowserialization-identifiersmatched by name): fix; the widening only matters for duplicateFullNamesThe #8594 row (Hosting net10.0 + Microsoft.Extensions 10) is not removed but merged into the single net10.0 row below, so net10-only is stated once.
Added from PR bodies
serialization-identifiersPrimitiveSerializersmanifests); corejson/bytesare unaffectedTargetInvocationExceptionrow (AOT (1/7): Akka.DynamicTypeLoading feature switch, canary app, built-in tables for formatter/stdout logger/scheduler #8601, AOT (2/7): built-in mailbox types, mailbox requirement map, MailboxType/Mailboxes trimming annotations #8602, AOT (4/7): core serializers and bindings from a built-in table; serialization-identifiers matched by name — canary goes green #8604, AOT (5/7): built-in routers and guardian strategy, guarded dispatcher/executor fallbacks, generic Expression.Lambda in the Props argument parser #8605, AOT: module serializer tables for Akka.Remote and Akka.Streams (#8626, part 2) #8658, AOT: module serializer table for Akka.Cluster (#8626, part 3a) #8666, AOT: module serializer tables for the Cluster contrib family (#8626, part 3b) #8669, AOT: module serializer table for Akka.Persistence (#8626, part 4) #8695)AddAkka<T>,WithHealthCheck<T>,WithDefaultLogMessageFormatter<T>Checked and not added: #8695/#8669/#8666 (beyond the unwrapping row), #8697/#8671/#8670 (switch-off only; #8670's provider spelling fix is folded into the #8599 row), #8674, #8668, #8665, #8664, #8663 (restores v1.5), #8661, #8655 (trim row only), #8653, #8652/#8650 (fix), #8648 (additive), #8647, #8645, #8636, #8635, #8630 (fixes to the unreleased TCP rewrite), #8628, #8218 (additive).
Added from the pre-ledger pass and review
Scope: everything on
devsince it diverged from v1.5 (merge-base1f14b74ce, 2025-08-15) up to the ledger's creation (#8260, 2026-06-12), enumerated withgit log --first-parent 1f14b74ce..akkadotnet/dev --before=2026-06-13(277 commits) plus the pre-fork v1.6 work that came in through #7761. Most of those PRs also shipped in v1.5.x, so each candidate was checked against1.5.71. Cross-checks over the full range: the*.DotNet.verified.txtAPI approvals (1.5.71 vs dev, normalized for the newer generator's rendering), every shipped.conf, the.protofiles, and project TFMs / package references.net10.0only; Hosting ships at the Akka.NET version; dependency minimums rise (Microsoft.Extensions 10.0, Google.Protobuf 3.36.1, FSharp.Core 10.1.302, LightningDB 0.22.0)Akka.IO.ByteStringremoved; TCP data and the Streams byte APIs useReadOnlySequence<byte>, TCP write helpers also takeReadOnlyMemory<byte>/byte[], UDP usesReadOnlyMemory<byte>;ByteOrdermoved toAkka.UtilDnsEndPointbypassakka.io.dnsand use the OS resolverSerializergainsFromBinary(byte[], string)/Manifest(object)(CS0121 onFromBinary(bytes, null), CS0114 in subclasses);ByteArraySerializer.IncludeManifestbecomes a sealedtrueValidateHostname(expectedHostname)now checks the certificate against that nameSystem.ConfigurationManagersupport from .NET 6+ #7456 (via [v1.6] flipdevtov1.6#7761): App.config HOCON loading removed (ConfigurationFactory.Load(),AkkaConfigurationSectionand friends, Akka.FSharpConfiguration.load)Not listed:
Akka.Util.Internal.Extensions.AddOrSet): an.Internal, already-obsolete API.MatchHandlercode #7557 (via [v1.6] flipdevtov1.6#7761):Receive(typeof(object), Func<object, bool>)without a predicate blocking laterReceive*registrations is a regression that is being fixed in a separate PR (branchfix/receiveactor-func-object-handler), not documented here.Rewritten
Every kept row cut to one or two sentences plus a one-sentence migration, and set to
Mergedwith its PR (branch names replaced: #8599, #8594, #8545, #8510, #8484, #8445, #8486, #8416, #8414, #8378, #8368, #8357, #8356, #8359, #8345, #8346, #8263). Kept: #8649, #8660, #8646 (reframed against v1.5:write-commands-queue-max-sizenow caps one write, not a registered connection's backlog), #8608, #8606 (UDP pool), #8599 (+#8670), #8545, #8445, #8378 (cut to the Player change: unapplied throttles now fail; the Artery test-mode part is dropped), #8359, #8317 (API), #8263. The "for the record" note also covers the always-registeredartery-controlserializer (id 23, reserved range) and #8561 (TestKit-only DotNetty batching). List markers use*(MD004);markdownlintpasses.