There were many different changes, additions to and removal from SObjectizer-5 since it was published in public in 2013. This blog post is an attempt to enumerate some of them. Just to show how SObjectizer-5 evolves with time.
Initially, SObjectizer-5 supported both error codes and exceptions and a user can choose between them (somewhat similar to Asio's approach). But the support for error codes was completely removed somewhere between 2013 and 2014. Only exceptions are used for error reporting now.... read more
SObjectizer-5 is in production use for several years. The experience shows that writing an agent is not a complex task. Writing the code of agent is, probably, the simplest part. But there is a more tricky part of work: testing the behaviour of the agent.
Today the writing of unit-tests is the essential approach in software development. But how to write unit-tests for SObjectizer's agents?... read more
We have tagged the second beta version of upcoming SObjectizer-5.5.23 and so_5_extra-1.2.0. This beta can be downloaded from Files section: so-5.5.23-beta2.zip and so_5_extra-1.2.0-beta2.zip (or so_5_extra-1.2.0-beta2-full.zip).... read more
The first version of documentation for new features of upcoming release of SObjectizer v.5.5.23 and so_5_extra 1.2.0 is available in project's Wiki:
[so-5.5 In-depth - Enveloped Messages]
[so5extra 1.2 Proxy Mbox]
[so5extra 1.2 Revocable Messages]
[so5extra 1.2 Revocable Timers]
[so5extra 1.2 Just Envelope]
[so5extra 1.2 Sending of Envelopes]
[so5extra 1.2 Time-Limited Message Delivery]
If you are interested in what is going on with SObjectizer please take a look. Fill free to ask questions and tell us about what you like or dislike or don't understand. We will try to make our documentation better.... read more
After a pause we can return to the development of next version of SObjectizer-5.5. Because this version is expected to be a continuation of 5.5 branch we don't want to make any breaking changes to SObjectizer-5.5. It means that we can include only those changes and new features which keep compatibility with SO-5.5 behaviour and public API. Nothing revolutionary, only a smooth evolution.... read more
It's more than three years after the first release of 5.5.0. All these three years we tried hard to keep compatibility between 5.5-releases. May be sometimes there were not 100% compatible releases, but in most cases the switch from one version to another inside 5.5 branch was smooth and required only recompilation of the code.... read more
There is a nine months pause between SObjectizer's releases: previous stable version 5.5.18 was released in Sep 2016 and new stable version 5.5.19 is released in May 2017. Why is such big pause? Does this mean that development of SObjectizer is slower down or even abandoned?... read more
The SObjectizer Team got acknowledgement from Dmitry Mosckalchuk - the leader of CrystaX NDK project. SObjectizer was used in a large test suite for CrystaX NDK and helped to find a tricky bug in CrystaX's implementation of POSIX Thread API.
It's great pleasure to know that our software showed its usefulness in such big and complex project. And we appreciate Dmitry's acknowledgements of high quality of SObjectizer itself and its test suites in particular.
The strange difference was noticed while comparing SObjectizer 5.5.15 and C++ Actor Framework (CAF) 0.14.4 performance. We have created CAF-version of thread_pool_disp benchmark from SO-5.5. The benchmark shows the performance of event scheduling on pool of worker threads and has the following description. A bunch of agents (actors) are created. Every agent sends several messages to itself at the start and then continues sending such messages until some limit is reached. After that each agent sends a special completion signal to the main agent-controller and the agent-controller finishes the benchmark when all completion signals are received.... read more
Over the last few years the Actor model has become rather popular. But it seems that Erlang and Akka (widely used and well known implementations of the actor model) are primarily used in development of distributed applications. This can make you think that the actor model is oriented only towards distributed application development.
It's hard to say that this impression is completely wrong. The development of some distributed application is significantly easier when the actor model is used. But this is just a consequence of the main feature of that model: usage of asynchronous interaction between isolated actors. Due to asynchronous message passing, sometimes, there is hardly any difference between in-process and inter-process communications.... read more
Dispatchers are one of SObjectizer's cornerstones. They are necessary to simplify the development of multithreaded applications where working threads are used for various tasks. Instead of manual manipulations with threads a programmer uses dispatchers and binds agents to an appropriate dispatcher. All further thread management and event scheduling will be performed by dispatchers.... read more
Few days ago the version 5.5.15 of SObjectizer was released. Let's speak about what to expect from the project in near future.
There are no plans to add some new functionality to SObjectizer like it was several versions before, especially in v.5.5.9, v.5.5.13 and v.5.5.15. Right now, SObjectizer is a mature, stable and full of features framework with a lot of tuning options and customization points. It is a rather complex tool for complex tasks.... read more