It has been quiet around the Go Cells since some time. But it’s alive and in change. Currently it’s making good progress towards the new major version 6.0.0.
One important change here is the introduction of
the transportation of events. Right now there’s only one
implementation using channels as before. But the idea is to
add other ones for distributed cells later. And to achieve this
Payload format had to be changed and some other
in-memory techniques like
Scene had to be removed. The data
inside a payload now has to be a byte slice, a string, or
something marshable into a byte slice.
A very often recurring need for writing own behaviors
is the collection and analysis of events. As long as these
fit into memory there’s now an
EventSink. It also implements
EventSinkAccessor which provides reading access to the
events for closure arguments of more generic behaviors.
Another part of the cells are the contained behaviors. Their number is continuously growing, this release now nows the following new ones:
- Aggregator aggregates events and emits each aggregated value.
- Combo waits for a user-defined combination of events.
- Condition tests events for conditions using a tester function and calls a processor then.
- Evaluator evaluates events based on a user-defined function which returns a rating.
- Once calls the once function only for the first event it receives.
- Pair checks if the event stream contains two matching ones based on a user-based criterion in a given timespan.
- Rate measures times between a number of criterion fitting events and emits the result.
- Rate Window checks if a number of events in a given timespan matches a given criterion.
- Sequence checks the event stream for a defined sequence of events discovered by a user-defined criterion.
- Status receives and processes status events by other behaviors. Those have to emit it when receiving the topic “status” with a status cell ID as payload.
The Configurator and the Scene don’t fit anymore, so they have been dropped. But four further behaviors are planned, see https://github.com/tideland/gocells/issues. They will be the last parts, then then new version 6.0.0 will be released.