After the release of v5.8.6, I am returning to suspended work on adding C++20 coroutine support to SObjectizer-5. I hope to complete my experiments within two months (or so) and want to release this functionality in version 5.8.7.
But there is a small problem: SObjectizer-5.8 was a C++17 project, and support for coroutines requires updating the standard to C++20. So, I see several possibilities here:
- SO-5.8 remains a C++17 project. Coroutines support will only be enabled if a user chooses C++20 or newer. This means that part of the code will be covered with
#if statements to enable coroutines after C++17. I don't like this approach because it requires extra work and testing.
- A new branch, 5.9, will be started with an update to C++. This is a slightly better approach, but it also has some minor drawbacks. Releasing SO-5.9 would require copying and pasting a bunch of documents in the wiki, and I want to avoid that boring work. Also, I have no plans to convert SObjectizer into C++ modules this year, because I still don't think module support is sufficiently mature (in compilers, CMake, Doxygen, and so on). Therefore, I think it's not a good idea to launch branch 5.9 without properly modularizing SObjectizer.
- Switch to C++20 in the 5.8 branch, if this doesn't break source code compatibility with code written for SO-5.8. This approach is the simplest for me because it doesn't involve any additional work.
For the moment, I'm using approach №3, but all the experiments are separated into isolated branches and do not affect the main development branch (or the master branch).
If you have concerns about switching to C++20 for version 5.8.7, please let me know. It would be great if you could tell me what approach would be most suitable for your needs.
After the release of v5.8.6, I am returning to suspended work on adding C++20 coroutine support to SObjectizer-5. I hope to complete my experiments within two months (or so) and want to release this functionality in version 5.8.7.
But there is a small problem: SObjectizer-5.8 was a C++17 project, and support for coroutines requires updating the standard to C++20. So, I see several possibilities here:
#ifstatements to enable coroutines after C++17. I don't like this approach because it requires extra work and testing.For the moment, I'm using approach №3, but all the experiments are separated into isolated branches and do not affect the main development branch (or the master branch).
If you have concerns about switching to C++20 for version 5.8.7, please let me know. It would be great if you could tell me what approach would be most suitable for your needs.