[en] Intermediate SObjectizer-5.6 status report (2019.03.23)

4 views
Skip to first unread message

Yauheni Akhotnikau

unread,
Mar 23, 2019, 6:30:22 AM3/23/19
to SObjectizer
According to the preliminary plan the first beta-version of v.5.6.0 was expected at the end of March 2019. It is obvious now that it won't happen. Because of that, there is a sense to speak about what was done and what has to be done.

There are the changes which already implemented in SObjectizer-5.6:
  • only send-functions can be used for message sending. There is no access to deliver_message from a mbox anymore;
  • every mbox now has a reference to environment_t. This leads to the same format of all send_delayed() and send_periodic() functions. Now send_delayed(target_agent, pause, args) looks the same way as send_delayed(target_mbox, pause, args);
  • there isn't ad-hoc agents in SObjectizer-5.6;
  • there isn't a support for tuple_as_message;
  • there isn't methods which accept raw pointers. For example, coop_t::add_agent() and environment_t::register_agent_as_coop() receive unique_ptr now;
  • introduce_coop() and introduce_child_coop() functions return a value now. This is a return value from a lambda passed to these functions;
  • dispatcher's mechanism was rewritten. There isn't public and private dispatcher now. New dispatchers are very similar to private dispatchers from SObjectizer-5.5: they are created by a user when appropriately and automatically destroyed when no one uses them. Dispatcher's binders are still there. But now shared_ptr is used instead of unique_ptr. It allows to use the same disp_binder for agents from different coops;
  • coop's mechanism was significantly redesigned. Coops are still here and coops can be bound in a parent-child relationship. But coops have no names now. The register_coop() function returns a handle for a new coop (an instance of coop_handle_t type). This handle can be used for the creation of a new child coop or for deregistration of an existing coop. The new mechanism is not faster than the old one, but it is much more scalable if several registrations and deregistrations are performed at the same time. For example there is a new benchmark. With parameters roots=3, levels=5, level-size=9 it works on my notebook for 44s for v.5.5.24.3 and for 11s for v.5.6.0.

What is still to be done in v.5.6.0?
  • a new implementation of synchronous interaction between agents;
  • a polishing of v.5.6.0 (additional testing, profiling, checking and actualizing of Doxygen's comments).
Then a lot of work with documenting SObjectizer-5.6 should be done. And a new version of so_5_extra project with adaptation to SObjectizer-5.6 should be prepared.

Why the work on v.5.6.0 has taken so long?

Before the redesign of coop's mechanism took at least 2.5 times more time than it was expected.

What the current plans about SObjectizer-5.6 release?

Unfortunately, there will be a pause in work on SObjectizer-5.6 (maybe a week long): we have to resolve some issues with our other projects. It is expected that work on v.5.6.0 will be resumed at the beginning of April 2019. And the first beta-version of SObjectizer-5.6 is expected in the mid of April. In that case, the v.5.6.0 can be released at the beginning of May 2019. But it is a very optimistic scenario that doesn't include any problems or delays in working with documentation for SObjectizer-5.6 and a new version of so_5_extra.

Reply all
Reply to author
Forward
0 new messages