build(deps): bump github.com/tochemey/goakt/v4 from 4.2.2 to 4.2.4
Type: Pull Request
State: Open
Association: Unknown
Comments: 2
(21 days ago)
(21 days ago)
dependencies go
Bumps github.com/tochemey/goakt/v4 from 4.2.2 to 4.2.4.
Release notes
Sourced from github.com/tochemey/goakt/v4's releases.
v4.2.4
🔉 Logging changes
Quieter default log stream
The framework's
Infolevel is now reserved for system-wide, low-frequency operator events: actor system start/stop, signal handler, clustering enable/start/stop, remote server start/listen/TLS/shutdown, scheduler start/stop, eviction loop start/stop, cluster node joined/left, rebalance start/complete, and data-center topology changes. Per-actor / per-grain / per-RPC / per-peer / per-rebalance-item lifecycle (init, shutdown, passivation, suspension, reinstate, supervision, grain activate/deactivate, remote spawn, peer replication, dead-actor cleanup, routee restart/resume, NATS peer chatter) was demoted toDebug.Third-party
[INFO]lines emitted by olric and hashicorp/memberlist (routing table updates, gossip events, anti-entropy) are also demoted toDebug.[WARN]and[ERROR]/[ERR]from those libraries are unchanged.Migration. If you relied on the previous verbosity (per-actor lifecycle traces, olric routing-table chatter visible at
Info), set your logger tolog.DebugLevel. Errors and warnings are unaffected — a healthy steady-state cluster now produces close to zeroInfolines per node per minute.Memberlist transport now honors
TransportConfig.Logger
internal/memberlist.NewTransportpreviously ignored theLoggerfield on its config and wrote to stdout atInfo. It now routes through the configured logger (orlog.DiscardLoggerwhen none is supplied), so transport-level errors and warnings reach the same sink as the rest of the framework. Added recognition of memberlist's short[ERR]prefix in the third-party log adapter — these lines were previously dropped silently.✨ New Additions
JSON serializer (sonic-backed)
Third built-in serializer alongside
ProtoSerializerandCBORSerializer.remote.JSONSerializerencodes arbitrary Go values as JSON via bytedance/sonic using theConfigFastestpreset (no HTML escaping, no JSON-marshaler validation — output is consumed by another goAkt node, not a browser).
- Same wire shape as the other built-ins. Length-prefixed self-describing frame:
totalLen | nameLen | type-name | json-bytes, all big-endian uint32 headers — identical layout toProtoSerializerandCBORSerializer.- Same registration path.
WithSerializers(new(MyMessage), remote.NewJSONSerializer())auto-registers the type in the global types registry; no separateRegisterSerializableTypes-style step. Both sender and receiver must register the same types.- Platform support. sonic ships JIT-accelerated fast paths for amd64 and arm64 and falls back to
encoding/jsonon other architectures (386, riscv64, s390x). API surface is identical; only throughput differs.- Depth bound. sonic does not expose a per-decode nesting limit, so peer-controlled payloads are bounded by
WithMaxFrameSize(default 16MB). Tune downward if accepting frames from untrusted peers.
WithJSONSerializablesconvenience optionBulk JSON registration mirroring
WithSerializablesfor CBOR. Shares a lazyDefaultJSONSerializer()singleton across all calls —JSONSerializeris stateless, so reuse is safe and avoids per-option allocation.remote.NewConfig("0.0.0.0", 9000, remote.WithJSONSerializables(new(MyEventA), new(MyEventB), (*MyInterface)(nil)), )Typed nil interface pointers bind the serializer at the interface level; concrete types bind per-type.
Full Changelog: https://github.com/Tochemey/goakt/compare/v4.2.3...v4.2.4
v4.2.3
Highlights
Cluster-wide stream topologies. This release rounds out the
streampackage with cross-node and non-linear primitives — you can now wire pipelines across the cluster the same way you wire them in-process. See changelogFeatures
- Cross-node
SourceRef/SinkRef. Wire-portable handles that let any node materialise a remoteSource[T]orSink[T]. Direct host:port resolution (no cluster-registry round-trip), wire-level credit, single-subscription with a 30s grace window, andWatch-based death detection. Requiresstream.RemoteOptions()onremote.NewConfigandremote.WithSerializables(...)for element types on every node.- Graph junctions. Eight fan-in / fan-out operators:
Concat,Zip/ZipWith,MergePreferred,MergePrioritized,MergeLatest,MergeSequence,Partition,Unzip. Graph DSL gainsConcatInto.- SubFlow (stream of streams).
GroupBy,SplitWhen,SplitAfterproduce aSubFlow[K, T]; compose withSubFlowViaand collapse withMergeSubstreams. Per-substream state is genuinely independent.
... (truncated)
Changelog
Sourced from github.com/tochemey/goakt/v4's changelog.
v4.2.4 - 2026-05-15
🔉 Logging changes
Quieter default log stream
The framework's
Infolevel is now reserved for system-wide, low-frequency operator events: actor system start/stop, signal handler, clustering enable/start/stop, remote server start/listen/TLS/shutdown, scheduler start/stop, eviction loop start/stop, cluster node joined/left, rebalance start/complete, and data-center topology changes. Per-actor / per-grain / per-RPC / per-peer / per-rebalance-item lifecycle (init, shutdown, passivation, suspension, reinstate, supervision, grain activate/deactivate, remote spawn, peer replication, dead-actor cleanup, routee restart/resume, NATS peer chatter) was demoted toDebug.Third-party
[INFO]lines emitted by olric and hashicorp/memberlist (routing table updates, gossip events, anti-entropy) are also demoted toDebug.[WARN]and[ERROR]/[ERR]from those libraries are unchanged.Migration. If you relied on the previous verbosity (per-actor lifecycle traces, olric routing-table chatter visible at
Info), set your logger tolog.DebugLevel. Errors and warnings are unaffected — a healthy steady-state cluster now produces close to zeroInfolines per node per minute.Memberlist transport now honors
TransportConfig.Logger
internal/memberlist.NewTransportpreviously ignored theLoggerfield on its config and wrote to stdout atInfo. It now routes through the configured logger (orlog.DiscardLoggerwhen none is supplied), so transport-level errors and warnings reach the same sink as the rest of the framework. Added recognition of memberlist's short[ERR]prefix in the third-party log adapter — these lines were previously dropped silently.✨ New Additions
JSON serializer (sonic-backed)
Third built-in serializer alongside
ProtoSerializerandCBORSerializer.remote.JSONSerializerencodes arbitrary Go values as JSON via bytedance/sonic using theConfigFastestpreset (no HTML escaping, no JSON-marshaler validation — output is consumed by another goAkt node, not a browser).
- Same wire shape as the other built-ins. Length-prefixed self-describing frame:
totalLen | nameLen | type-name | json-bytes, all big-endian uint32 headers — identical layout toProtoSerializerandCBORSerializer.- Same registration path.
WithSerializers(new(MyMessage), remote.NewJSONSerializer())auto-registers the type in the global types registry; no separateRegisterSerializableTypes-style step. Both sender and receiver must register the same types.- Platform support. sonic ships JIT-accelerated fast paths for amd64 and arm64 and falls back to
encoding/jsonon other architectures (386, riscv64, s390x). API surface is identical; only throughput differs.- Depth bound. sonic does not expose a per-decode nesting limit, so peer-controlled payloads are bounded by
WithMaxFrameSize(default 16MB). Tune downward if accepting frames from untrusted peers.
WithJSONSerializablesconvenience optionBulk JSON registration mirroring
WithSerializablesfor CBOR. Shares a lazyDefaultJSONSerializer()singleton across all calls —JSONSerializeris stateless, so reuse is safe and avoids per-option allocation.remote.NewConfig("0.0.0.0", 9000, remote.WithJSONSerializables(new(MyEventA), new(MyEventB), (*MyInterface)(nil)), )Typed nil interface pointers bind the serializer at the interface level; concrete types bind per-type.
v4.2.3 - 2026-05-09
✨ New Additions
Cross-node stream refs (
SourceRef/SinkRef)Wire-portable handles that adapt a
Source[T]orSink[T]into a stage usable on any node in the cluster, mirroring Akka StreamRefs.
Source.SourceRef(ctx, sys)publishes a producer; receivers reconstruct the source viaref.Source(sys).Sink.SinkRef(ctx, sys)does the symmetric thing for consumers viaref.Sink(sys). Refs themselves are plain serialisable values and can be shipped inside any registered remote message — so a node can hand off "where to send/read from" the same way it would hand off any other piece of data.- Setup prerequisite — both registrations are required on every node: append
stream.RemoteOptions()to yourremote.NewConfig(registers the subscribe / request / complete / error / cancel control wires) and register the element type withremote.WithSerializables(new(MyEvent))(the same registration any remoterctx.Tellto a remote PID needs). Forgetting either is the common failure mode — missing control-plane registration manifests as the bridge hanging on subscribe; missing element-type registration manifests as"no serializer found"on the producer's first ship or as silent dead-letter on the consumer side. Asymmetric registration (one node has it, the other doesn't) breaks only the unconfigured direction. User element types travel across the wire as ordinary remote messages — no extra envelope, no double encoding — so the remoting layer's existing CBOR registry handles them with no per-stream serializer overhead.- Single-subscription semantics. The endpoint stays alive through a 30s grace window after stream completion so a racing late subscriber gets a deterministic
"already consumed"rejection rather than telling a dead actor; after the window the endpoint reaps itself viasystem.ScheduleOnce, so consumed refs don't leak in long-running processes.
... (truncated)
Commits
3124a6fchore: automate github release (#1178)2643a88chore(deps): update go modulesbeb28efrefactor: demote per-actor and third-party Info logs to Debug (#1177)a60ebdcfeat: add built-in remote json serializer (#1176)1ef4b9achore(deps): update module github.com/bufbuild/buf to v1.69.0 (#1175)5bac0c5refactor: refactor discovery providers for efficiency (#1174)54a4c67docs: set latest release date in changelog.md13cdab8chore(deps): upgrade dependencies665440drefactor: cleanup godocse9de56afeat: add remote streams functions (#1172)- Additional commits viewable in compare view
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Package Dependencies
github.com/tochemey/goakt/v4
go
4.2.2 → 4.2.4
Patch
Technical Details
| ID: | 15844007 |
| UUID: | 4469096670 |
| Node ID: | PR_kwDOOTv_y87cpdgC |
| Host: | GitHub |
| Repository: | GoCodeAlone/workflow |