See this post for the details.
Command line arguments parsing must be reimplemented without ACE_Get_Opt.
There must be timer_wheel_thread_factory(wheel_size, granularity) function.
Project various_helpers_1 must be used instead of local copies of time_limited_execution.hpp, cmd_line_args_helpers.hpp, benchmark_helpers.hpp and so on.
Macro SO_5_EXPORT_FUNC_SPEC must be reimplemented the way which will allow Doxygen to detect return value type correctly.
All so_environment_impl_t functionality can be implemented by so_environment_t itself.
There must be names so_5::rt::environment_t and so_5::rt::environment_params_t.
Old names so_environment_t and so_environment_params_t must be aliases for new names in the namespace so_5::rt.
Old names must be declared as deprecated.
There must be just two free functions:
launch( std::function< void(so_5::rt::environment_t &) > ); launch( std::function< void(so_5::rt::environment_t &) >, std::function< void(so_5::rt::environment_params_t &) > );
All existing run_so_environment will stay here but must be declared as deprecated.
There must be new sample which demonstrates usage of timer_thread factories. May be it can be used also as a stress test for timers.
All FIXME marks in code must be reviewed and fixed.