Skip to content

Add SerializerV2 foundation - #8222

Merged
Aaronontheweb merged 10 commits into
akkadotnet:devfrom
Aaronontheweb:feature/spec2-serializer-v2-foundation
Jun 1, 2026
Merged

Aaronontheweb merged 10 commits into
akkadotnet:devfrom
Aaronontheweb:feature/spec2-serializer-v2-foundation

Conversation

@Aaronontheweb

Copy link
Copy Markdown
Member

Adds the SerializerV2 foundation and compatibility bridge.

@Aaronontheweb Aaronontheweb left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good first steps but we have not validated the concept yet

public Serialization(Akka.Actor.ExtendedActorSystem system) { }
public Akka.Actor.ExtendedActorSystem System { get; }
public void AddSerializationMap(System.Type type, Akka.Serialization.Serializer serializer) { }
public void AddSerializationMap(System.Type type, Akka.Serialization.SerializerV2 serializer) { }

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Breaking change throughout this PR - SerializerV2 is the new root for all the Akka.Serialization work, not Serializer or SerializerWithStringManifest. This is all per the spec we laid out last year.

thisManifest = thePayload.GetType().TypeQualifiedName();
}

var thisManifest = Akka.Serialization.Serialization.ManifestFor(theSerializer, thePayload);

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can collapse the above code because having a manifest is now standard under SerializerV2.

/// <summary>
/// A serializer that writes directly into caller-owned buffers and reads from sequence-backed input.
/// </summary>
public abstract class SerializerV2 : Serializer

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Behaves like a SerializerWithStringManifest and is semantically its own protocol - sub-classes Serializer right now, temporarily, for migration compatibility while we get to work on introducing the new serialization system. We are going to drop the : Serializer later and rely on the SerializerV1Adapter instead to forward-port old serializer to new V2 serializer behavior.

@Aaronontheweb
Aaronontheweb marked this pull request as ready for review May 30, 2026 17:02
@Aaronontheweb
Aaronontheweb merged commit eeabb6d into akkadotnet:dev Jun 1, 2026
11 checks passed
@Aaronontheweb
Aaronontheweb deleted the feature/spec2-serializer-v2-foundation branch June 1, 2026 13:22
Aaronontheweb added a commit to Aaronontheweb/akka.net that referenced this pull request Oct 1, 2026
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.
Aaronontheweb added a commit that referenced this pull request Oct 1, 2026
…8698 (#8700)

* Audit BREAKING_CHANGES_V1.6.md against v1.5.71 and catch up through #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 #8694 and #8698.

* Add pre-ledger breaking changes to BREAKING_CHANGES_V1.6.md

Cover changes on dev since the v1.5 line diverged that landed before the
ledger existed: net10.0-only targeting and ByteString removal (#8132),
App.config HOCON loading removal (#7456), and the AddOrSet removal (#7622).

* Apply review feedback to BREAKING_CHANGES_V1.6.md

Add rows for #8222 (Serializer overloads, ByteArraySerializer manifest),
#8465 (explicit TLS hostname check), #8132 (TCP connects bypass akka.io.dns)
and #7557 (object handler without predicate blocks later Receive calls).
State net10.0-only once, folding in #8594 and the dependency bumps; fix the
ByteString row's write types; narrow the #8698 row to module serializers;
drop the .Internal AddOrSet row and say why in the preamble; shorten rows;
use asterisk list markers.

* Drop the #7557 ReceiveActor row from BREAKING_CHANGES_V1.6.md

The Receive(typeof(object), Func<object, bool>) regression is being fixed
in a separate PR instead of documented.
Aaronontheweb added a commit that referenced this pull request Oct 7, 2026
Bump VersionPrefix to 1.6.0-beta3, add the 1.6.0-beta3 release notes and
regenerate PackageReleaseNotes via build.ps1.

Also trim BREAKING_CHANGES_V1.6.md to 1.5 -> 1.6 changes only in the
#8785 and #8222 rows, and update the source-generated serializer
inheritance chain in the docs.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant