Upcoming Go Cells v6.0.0

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 Queues for 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 also the 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 the 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.