Releases: Tochemey/goakt
Releases · Tochemey/goakt
v2.9.0
New Features
ForwardTo
on theReceiveContext
to forward message to a given actor when cluster mode is enabled. It passes a message from one actor to another actor by preserving the initial sender of the message.RemoteForward
on theReceiveContext
to pass a message from one actor to another actor on a remote machine by preserving the initial sender of the message.
Breaking Changes
- Fix bad api design of the remoting methods which necessitated a breaking changes in the accepted arguments of the following methods which now accepts a
from
alongside the existing argumentsRemoteTell
RemoteAsk
RemoteBatchAsk
RemoteBatchTell
Commits and PRs
- feat(enhancement): add ForwardTo and RemoteForward by @Tochemey in #538
- fix(design): fix bad design of remoting call by @Tochemey in #539
Full Changelog: v2.8.3...v.2.8.4
v2.8.3
v2.8.2
v2.8.1
What's Changed
- Dependencies upgrade by @renovate in #519
- NATs discovery configuration now accept
host
anddiscoveryPort
rather than a node instance. by @Tochemey in #520. See https://github.com/Tochemey/goakt?tab=readme-ov-file#nats-discovery-provider-setup - One can set a custom
supervisor directive
when creating an actor using the newly added optionWithSupervisor
by @Tochemey in #522. See https://github.com/Tochemey/goakt/blob/main/actors/spawn_option.go#L70C6-L70C20 - Code maintenance by @Tochemey in #521
Full Changelog: v2.8.0...v2.8.1
v2.8.0
Breaking Changes
WithReplyTimeout
removed from the ActorSystem option- All ask-based methods on
PID
andReceiveContext
accept a mandatorytimeout
argument:- Ask`
- SendSync`
BatchAsk
RemoteAsk
RemoteBatchAsk
Add-ons
- Add
Schedule
andRemoteSchedule
methods toScheduler
ExpectMessage
andExpectMessageWithin
in the testkit have been refactored- New remoting API that will allow to extend it with mTLS in the future
- Abstract remoting into a nice struct called
Remoting
for client communication - Refactor the cluster client to accept concrete
Node
instance rather than mere array list of addresses. This help to tailor client connection appropriately to the given node - Ensure that every http client connection closes appropriately to avoid resource leakage.
What's Changed
- feat: add Schedule and RemoteSchedule to scheduler by @Tochemey in #493
- refactor: refactor ExpectMessage and ExpectMessageWithin by @Tochemey in #496
- Fix typo by @autodidaddict in #503
- refactor: cleanup the code to allow easy extensibility by @Tochemey in #505
- refactor: use sync.Map for peersCache in actor system by @Tochemey in #512
- refactor: remove system ask timeout and pass timeout to asks by @Tochemey in #515
New Contributors
- @autodidaddict made their first contribution in #503
Full Changelog: v2.7.1...v2.8.0
v2.7.1
What's Changed
- refactor: enhance code coverage by @Tochemey in #482
- refactor: remove otel collector from client code by @Tochemey in #485
- refactor: refactor pidMap using sync.Map by @Tochemey in #486
- perf: add sync loop to message processing by @Tochemey in #491
Note
🎉🎉🎉This release enhances the performance of the framework drastically by the introduction of sync.Map
and sync.Pool
🎉🎉🎉
Full Changelog: v2.7.0...v2.7.1
v2.7.0
What's Changed
- Expose mailbox API
- Implement
UnboundedMailbox
using mpsc queue which is the default mailbox - Implement
BoundedMailbox
using the ring buffer queue - Add a
SpawnOption
to spawn actor with custom mailbox if needed. - Add some performance enhancement
- Add benchmark code for both
UnboundedMailbox
andBoundedMailbox
- Expose counters and remove OpenTelemetry dependency [breaking change]
Commits
- refactor: remove OpenTelemetry dependency by @Tochemey in #472
- chore: upgrade nats dependencies and enhance stale bot message by @Tochemey in #477
- feat: expose an API for custom mailboxes by @Tochemey in #479
Full Changelog: v2.6.2...v2.7.0
v2.6.2
What's Changed
- feat: add location transparent messaging capabilities by @Tochemey in #457
- refactor: add test coverage for cluster rebalancing by @Tochemey in #458
- refactor: make some method private by @Tochemey in #459
- refactor: clean the addressing engine by @Tochemey in #460
- refactor: rename gcInternal to janitorInterval to avoid confusing with Go GC by @Tochemey in #463
- perf: performance tuning by @Tochemey in #468
- refactor: move stash back to mailbox by @Tochemey in #469
Breaking Changes
- Rename
GossipPort
toDiscoveryPort
in discovery.Node (breaking changes) - Rename ClusterConfig method
WithGossipPort
toWithDiscoveryPort
(breaking changes) - Rename ClusterConfig method
GossipPort()
toDiscoveryPort()
(breaking changes) - Rename kubernetes config
GossipPortName
toDiscoveryPortName
(breaking changes) ActorPath
has been replaced withAddress
on PID (breaking changes)
Full Changelog: v2.6.1...v2.6.2
v2.6.1
What's Changed
- perf: refactor receive loop to avoid busy threads by @Tochemey in #443
- chore(deps): upgrade github.com/nats-io/nats-server/v2 to v2.10.19 by @Tochemey in #445
- fix(bugs): never redistribute system actors by @Tochemey in #447
- fix: use underlying message processor than the PID by @Tochemey in #451
- refactor: remove defer and explictly unlock by @Tochemey in #452
Full Changelog: v2.6.0...v2.6.1
v2.6.0
What's Changed
- Convert
ReceiveContext
interface into pure go struct. Small breaking change in https://github.com/Tochemey/goakt/blob/main/actors/actor.go#L45 instead of an interface now accept a pointer ofReceiveContext
- Convert
PID
interface to a pure go struct - Rewrote the mailbox with concrete type instead of generics
- Rewrote the behavior stack implementation
- Refactor the Ask implementations
- Simplify the receive loop
- Reimplement how processing panic is recovered
- Fix latest message received metric recording poor implementation
- Reimplement how error are thrown during message processing. Use
ctx.Error
instead of panicking which is the recommended way. - Remove unused code
- Remove deprecated NATs methods
Pull requests
- refactor: cleaning up code from unecessary code by @Tochemey in #423
- refactor: simplify receive loop by @Tochemey in #424
- refactor: migrate to buff v2 by @Tochemey in #426
- perf: refactor processing error handling by @Tochemey in #431
- refactor: add some local bench test by @Tochemey in #432
- refactor: cleanup by @Tochemey in #435
- refactor: refactor PID to a concrete struct instead of interface by @Tochemey in #436
- chore(deps): upgrade OpenTelemetry to 1.29.0 by @Tochemey in #438
- fix: fix wrong metric recording and cleanup code base by @Tochemey in #440
- refactor: remove NATs deprecated features by @Tochemey in #441
Full Changelog: v2.5.1...v2.6.0