Skip to content

Releases: Tochemey/goakt

v2.9.0

28 Nov 21:41
Compare
Choose a tag to compare

New Features

  • ForwardTo on the ReceiveContext 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 the ReceiveContext 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 arguments
    • RemoteTell
    • 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

27 Nov 19:04
Compare
Choose a tag to compare

What's Changed

Full Changelog: v2.8.2...v2.8.3

v2.8.2

26 Nov 10:54
c07cce7
Compare
Choose a tag to compare

What's Changed

Full Changelog: v2.8.1...v2.8.2

v2.8.1

22 Nov 19:40
Compare
Choose a tag to compare

What's Changed

Full Changelog: v2.8.0...v2.8.1

v2.8.0

12 Nov 11:05
9760b03
Compare
Choose a tag to compare

Breaking Changes

  • WithReplyTimeout removed from the ActorSystem option
  • All ask-based methods on PID and ReceiveContext accept a mandatory timeout argument:
    • Ask`
    • SendSync`
    • BatchAsk
    • RemoteAsk
    • RemoteBatchAsk

Add-ons

  • Add Schedule and RemoteSchedule methods to Scheduler
  • ExpectMessage and ExpectMessageWithin 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

Full Changelog: v2.7.1...v2.8.0

v2.7.1

12 Oct 14:31
Compare
Choose a tag to compare

What's Changed

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

28 Sep 20:18
Compare
Choose a tag to compare

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 and BoundedMailbox
  • 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

24 Sep 18:04
10dc734
Compare
Choose a tag to compare

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 to DiscoveryPort in discovery.Node (breaking changes)
  • Rename ClusterConfig method WithGossipPort to WithDiscoveryPort (breaking changes)
  • Rename ClusterConfig method GossipPort() to DiscoveryPort() (breaking changes)
  • Rename kubernetes config GossipPortName to DiscoveryPortName (breaking changes)
  • ActorPath has been replaced with Address on PID (breaking changes)

Full Changelog: v2.6.1...v2.6.2

v2.6.1

31 Aug 10:15
f4f11a0
Compare
Choose a tag to compare

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

25 Aug 23:10
Compare
Choose a tag to compare

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 of ReceiveContext
  • 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

Full Changelog: v2.5.1...v2.6.0