Switching to C++20 in version 5.8.7: Will it be a problem for anyone?

1 view
Skip to first unread message

Yauheni Akhotnikau

unread,
Jul 29, 2026, 8:36:25 AM (3 days ago) Jul 29
to SObjectizer

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:


1. 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.


2. 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.


3. 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.


Marco Arena

unread,
Jul 30, 2026, 4:28:04 AM (2 days ago) Jul 30
to sobje...@googlegroups.com
Hi Yauheni!
Personally, I have no problems with any of your proposals. The simplest is fine for me (switching in 5.8.7). I am already on C++20 for all the projects using SObjectizer.

I am just wondering if you use semver. In this case, I think you should do the switch in 6.0.0 :⁠-⁠| (as it's a breaking change).

Best,

Marco 

--
Вы получили это сообщение, поскольку подписаны на группу "SObjectizer".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес sobjectizer...@googlegroups.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/sobjectizer/909110b7-ebc5-4515-bc88-1872b812440cn%40googlegroups.com.

Yauheni Akhotnikau

unread,
Jul 30, 2026, 7:07:13 AM (2 days ago) Jul 30
to SObjectizer
On Thursday, July 30, 2026 at 11:28:04 AM UTC+3 @gmail.com wrote:
Hi Yauheni!
Personally, I have no problems with any of your proposals. The simplest is fine for me (switching in 5.8.7).

Thank for your opinion!
 
I am already on C++20 for all the projects using SObjectizer.

I think most of the users are now on C++20 or C++23.
 

I am just wondering if you use semver. In this case, I think you should do the switch in 6.0.0 :⁠-⁠| (as it's a breaking change).

I personally don't think that semver is good for versioning of libraries. But v5.8.7 can be seen as version 8.7.0 of project named SObjectizer-5. In that case switching from 8.6 to 8.7 means addition of new features without breaking old functionality :)
 
Reply all
Reply to author
Forward
0 new messages