For those who are not familiar with the framework yet: it implements the actor model, a design pattern from the Erlang/Elixir world. It is not a BEAM virtual machine, but rather an analogue of the OTP library for building distributed systems.
This release is very large, so I’ll focus on the key changes.
Observability. This is probably the biggest improvement.
A lot of components were reworked so they can be monitored in real time. Because of that, the visual Observer tool was reworked as well. It gives you an almost complete picture of what is happening in the system: you can watch processes, events, network connections to other nodes in real time, and move around remote nodes in the cluster. All of this works out of the box.
If you actively use coding agents, Observer also provides an MCP interface, so an agent can inspect the whole cluster, including any process on any node.
We also added support for distributed tracing: you can enable a sampler on any process, and all of its outgoing messages will carry additional tracing information. This information transparently travels together with the message across the cluster, from one process to another, leaving a trace on every node along the way.
Testing. The harness has been completely redesigned. It is now a full-cycle testing tool with a common validation language in ergo.services/ergo/testing/check.
There is a complete set of mocks in ergo.services/ergo/testing/mock, as well as a convenient toolkit for unit-testing actors. For those who are not familiar with actors: working with them is different from testing ordinary functions, so having the right tooling makes a big difference.
And the most interesting part is ergo.services/ergo/testing/stage: it lets you write system tests, start a cluster of nodes, and capture all events and messages produced by actors. No containers, Docker, etc. are required.
By the way, thanks to this harness, test coverage of the entire Ergo Framework is now at 85%.
Pub/Sub subsystem. Performance has been significantly improved by moving completely away from mutexes in favor of lock-free mechanisms. This avoids performance degradation when tens or hundreds of thousands of processes create subscriptions or publish events. They no longer compete with each other.
EDF data format now supports pointers and schema evolution, somewhat similar to how this is handled in Protobuf.
More generally, Ergo Framework is growing into an entire ecosystem, because the framework itself is just the foundation for building distributed systems.
You still need to integrate with the cloud stack, and for that there is the ready-to-use ergo.services/application/radar application.
For collecting and publishing traces, there is ergo.services/application/pulse.
For Raft-based leader election, there is ergo.services/actor/leader.
For an eventually-consistent distributed registry, there is ergo.services/application/grid.
All of these components were released or updated together with Ergo Framework 3.3.
For the skeptics: this is a release of a framework and ecosystem that have already been actively developed and battle-tested in real production for about half a year. So the product is polished enough to call this a real release, rather than just a version bump because enough new code has accumulated. :)
For newcomers: if you want to get familiar with the actor model, take a look at the tour in github.com/ergo-services/examples. It will help you understand the nature of the actor model and gradually explore what the framework can do.
For experienced users: in github.com/ergo-services/examples/tree/master/observability you’ll find a ready-made environment that starts a loaded cluster with multiple applications implementing different scenarios. You can see Observer in action, as well as ready-made Grafana dashboards for inspecting the cluster and distributed traces.
Documetnation: https://docs.ergo.services
Github: https://github.com/ergo-services/
Full changelog: https://github.com/ergo-services/ergo/blob/master/CHANGELOG.md
P.S. Apparently September 4th has become Ergo release day, since 3.0 and 3.1 were released on exactly the same date in previous years.
P.P.S. If you use Claude, you can install the plugin directly via /plugin — Ergo is registered there. You’ll get the ergo:framework and ergo:devops skills, as well as the ergo:framework-architect and ergo:devops agents. They are very useful for design, implementation, and inspecting Ergo clusters. They've been surprisingly useful.
[link] [留言]