Did you (at gtkmm) consider supporting std::execution as an alternative to libsigc++?
std::execution will be in C++26 but until then a library could be used: stdexec or libunifex.
Its been some time since I was in the particulars, but I believe I came to a conclusion that sigc++ signals/signalproxys could be annotated with some typedefs and maybe an additional method which would allow them to qualify as senders.
I don’t plan to make any serious efforts until std::execution is in the gnu stdlib c++ and there is good documentation (at least on cppreference). So that’s definitely a year or two off still. I recall struggling a lot to find documentation from the nvidia library. And so many conference talks on execution are like “You only need to understand senders to use them, there’s no need to worry about receivers or such (…unless you’re a library developer…).”
Given the conversation I am motivated to flesh out this example repo a little more. I want to have the example app show cancellation and error reporting in action. And I did also want to show using coroutines in gtkmm with senders as well. But I’m going overseas tomorrow, so it will be a while before I make any progress again.
That said, gtkmm’s maintainer has been saying for a while that he wants to retire. If senders can really be added with a few typedefs and tag_invoke then I guess it has a shot at being merged. But a big restructuring of all the async methods seems unlikely unless a new maintainer pops up and wants to support it.
Just a quick note, today nvidia’s stdexec has made a new 25.09 release. Thankfully it doesn’t throw compilation errors. I’ve updated my repo to use it and made a couple other fixes. It runs fine on gcc 15 & gtkmm 4.18 now.