Skip to content

Releases: Tochemey/goakt

v3.11.2

18 Dec 11:50
Immutable release. Only release title and notes can be modified.
7c44a4a

Choose a tag to compare

🧰 Maintenance

Full Changelog: v3.11.1...v3.11.2

v3.11.1

12 Dec 01:37
Immutable release. Only release title and notes can be modified.
9e5369b

Choose a tag to compare

🚀 Highlights

  • ⚡ Refactor the implementation of Kill method to take into consideration cluster mode.

🔗 Pull Requests

Full Changelog: v3.11.0...v3.11.1

v3.11.0

08 Dec 21:25
Immutable release. Only release title and notes can be modified.
048b17c

Choose a tag to compare

✨ What’s Changed

🚀 Features

  • ✨ Add cross-nodes context propagator to remoting by @Tochemey in #996. The documentation can be found here

📦 Dependency Updates

  • ⬆️ Update actions/checkout to v5.0.1 by @renovate[bot] in #992
  • 🧹 Update golangci/golangci-lint to v2.6.2 by @renovate[bot] in #993
  • 📦 Update github.com/bufbuild/buf to v1.60.0 by @renovate[bot] in #994

Full Changelog: v3.10.0...v3.10.1

v3.10.0

02 Dec 21:42
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

🚀 Highlights

  • ✨ Metrics instrumentation via OpenTelemetry
  • ⚡ Code refactoring to improve efficiency
  • 🐛 ActorRefs regression bug fix

Pull Requests

Full Changelog: v3.9.9...v3.10.0

v3.9.9

22 Nov 10:31
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

✨ What's Changed

  • ⚡ Refactor grain/pid to reduce memory footprint, improving overall efficiency by @Tochemey in #978
  • 📦 Update golangci/golangci-lint to v2.6.1 to keep static analysis up to date by @renovate[bot] in #979
  • 🔐 Upgrade dependencies and address reported vulnerability issues by @Tochemey in #980

Full Changelog: v3.9.8...v3.9.9

v3.9.8

14 Nov 17:33
Immutable release. Only release title and notes can be modified.
eff8ff4

Choose a tag to compare

🚀 Highlights

  • Grains and Actor activation/placement strategies in cluster mode
  • Refactor the implementation of ActorRefs to return error to make it more predictive.
  • Refresh tooling and dependencies upgrade.
  • Add a miscellaneous package to support local end-to-end testing workflows when fixing bugs.

What’s Changed

✨ Features

  • Add a miscellaneous package to support local end-to-end (e2e) testing workflows
    (#972 by @Tochemey)

⚡ Improvements & Refactors

  • Return a clear error when listing actors across nodes fails, improving debuggability in distributed scenarios
    (#970 by @Tochemey)
  • Rewrite the logic for round-robin and least-load strategies to make routing behavior more predictable and maintainable
    (#974 by @Tochemey)

📦 Dependency & CI Updates

  • ⬆️ Bump actions/upload-artifact GitHub Action to v5 for more reliable artifact handling in CI
    (#969 by @renovate[bot])
  • ⬆️ Update golangci/golangci-lint to v2.6.0 to pick up the latest linting rules and fixes
    (#971 by @renovate[bot])

⚠️ Notes

  • No breaking changes are expected.
  • If you rely on cross-node actor listing, you may now see explicit errors where silent failures previously occurred—check logs and error handling paths accordingly.

🔗 Pull Requests

  • chore(deps): update actions/upload-artifact action to v5 by @renovate[bot] in #969
  • refactor: return an error when listing actors across nodes by @Tochemey in #970
  • feat: ✨ miscellaneous package for local e2e by @Tochemey in #972
  • chore(deps): update dependency golangci/golangci-lint to v2.6.0 by @renovate[bot] in #971
  • refactor: rewrite the logic round-robin and least-load strategies by @Tochemey in #974

Full Changelog: v3.9.7...v3.9.8

v3.9.7

11 Nov 09:14
Immutable release. Only release title and notes can be modified.
d2218c8

Choose a tag to compare

🚀 Highlights

  • Revamped the whole implementation Router
  • Enhance the Router documentation
  • Added unix timestamp to remote.Peer to specify their creation date
  • Added cluster utilities methods to the ActorSystem:
    • Leader: to return the leader node when the actor system is in cluster mode
    • IsLeader: to check whether a given node is the leader node when the actor system is in cluster mode

📦 Pull Requests

  • chore(deps): update module github.com/bufbuild/buf to v1.59.0 by @renovate[bot] in #961
  • fix: stop faulty routees before removing them from the pool by @Tochemey in #963
  • feat: ✨ enhance router capabilities with new options by @Tochemey in #965

Full Changelog: v3.9.6...v3.9.7

v3.9.6

02 Nov 11:45
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

🚀 Highlights

  • Placement strategies for Grains activation as option to GrainIdentity
  • Role-based placement for Grains activation as option to GrainIdentity
  • Peers list for a given actor system in cluster mode. The method can be found on the ActorSystem
  • Role-based placement to Cluster Singleton Actors as option to SpawnSingleton
  • Upgrade Go to v1.25.3

📦 Pull Requests

  • feat: ✨ add placement strategies for Grains activation by @Tochemey in #950
  • feat: ✨ implementation of peers list on the actor system by @Tochemey in #953
  • chore(deps): update golang docker tag to v1.25.2 by @renovate[bot] in #952
  • chore(deps): update golang docker tag to v1.25.3 by @renovate[bot] in #956
  • feat: ✨ add role-base feature to cluster singleton by @Tochemey in #958

Full Changelog: v3.9.5...v3.9.6

v3.9.5

19 Oct 13:24
Immutable release. Only release title and notes can be modified.
355abc1

Choose a tag to compare

🚀 Highlights

  • Cluster Member Role: This will enable developers to tag cluster members with specific roles using the ClusterConfig. By tagging nodes with meaningful roles—like backend, mobile , web, etc...—you give the runtime a simple, explicit signal for locality and resource fit. That keeps placement decisions fast and predictable, and it avoids the guesswork that creeps in when every node looks identical on paper but behaves differently under load. Roles cleanly separate concerns: they describe what a node is for, so your Actors can be deployed to where they should live. Instead of scattering lightweight services across heavyweight machines.
  • SpawnOn with the role placement capability

📦 Pull Requests

  • chore: 🗑️ remove unused code and add tests by @Tochemey in #937
  • chore(deps): update dependency golangci/golangci-lint to v2.5.0 by @renovate[bot] in #938
  • test: ✅ refactor client code and add more tests by @Tochemey in #941
  • refactor: refactor some of the implementation and add tests by @Tochemey in #942
  • test: add additional unit tests by @Tochemey in #943
  • feat: ✨ add role capabilities to cluster node by @Tochemey in #944
  • chore(deps): update ossf/scorecard-action action to v2.4.3 by @renovate[bot] in #945
  • chore(deps): upgrade dependencies by @Tochemey in #946

Full Changelog: v3.9.4...v3.9.5

v3.9.4

05 Oct 15:22
a710d59

Choose a tag to compare

🚀 Highlights

  • Cluster engine reimplementation with a significantly improved memory footprint.
  • 🛡️ Supervision improvements to prevent deadlocks and reduce flakiness.
  • Expanded test coverage across critical paths and reported edge cases.
  • 🧹 API cleanup: removed deprecated/obsolete cluster configuration options.

What’s Changed

  • Refactor cluster engine to improve memory footprint and overall responsiveness.
  • Remove deprecated WithPeerStateLoopInterval from ActorSystem.
  • Remove ClusterConfig methods:
    • WithPeersStateSyncInterval
    • PeersStateSyncInterval

    These are no longer needed—cluster coordination is now reactive rather than polling.

  • Remove ClusterConfig.WithWAL.

    The cluster WAL now uses the running application's home directory to persist peer state. The file is automatically deleted on graceful shutdown.

  • Enhance supervision routine to avoid potential deadlocks and reduce flakiness.
  • Add extensive unit tests to cover likely use cases and previously reported issues.

🧨 Breaking Changes / Migration Notes

If you reference any of the following in your code or configuration, you’ll need to remove or replace them:

  • ActorSystem.WithPeerStateLoopInterval (removed)
  • ClusterConfig.WithPeersStateSyncInterval (removed)
  • ClusterConfig.PeersStateSyncInterval (removed)
  • ClusterConfig.WithWAL (removed)

Why? The cluster is now event-driven and reactive, eliminating periodic polling controls and custom WAL wiring.


⚡ Performance

  • Avoided unnecessary heap allocations in hot paths.
  • Reduced memory footprint of the cluster engine.

Pull Requests


Acknowledgements

  • Thanks to @GrafGenerator for helping improve memory footprint (more improvements planned in future releases).
  • Thanks to @Anillc for spotting performance issues.

Full Changelog: v3.9.3...v3.9.4