September - Corolib: distributed programming with C++ coroutines


Details
Our monthly meeting features with a talk about Corolib: distributed programming with C++ coroutines by Johan Vanslembrouck
Agenda
19:00 Socializing in Lounge
19:15 Welcome message
19:45 **An introduction to time travel debugging (**Sponsor message from Undo)
20:30 Talk
21:30 Talk Q & A debate in room
21:xx - Socializing / End
Details:
Distributed applications often use remote method invocation (RMI) to allow a client application to make use of the services of a server application. A constant in many of these applications is the use of either a synchronous two-way RMI style, or an asynchronous style where the invocation is split into a request and a response that has to be handled at a later place and time in the application. This leads to a very different programming style, with programs having to be completely rewritten if the synchronous style was considered to be not efficient enough and a transition has to be made to an asynchronous style.
My talk will demonstrate that we can make a synchronous-style RMI application behave in a responsive, asynchronous way using C++ coroutines by making only minor changes to the original program. This is the purpose of the corolib library. Corolib uses Boost ASIO and Qt for communication between applications, without any changes to the underlying libraries (Boost or Qt).
The major objectives of corolib are:
- Try to accomplish as much coroutine functionality as possible with a minimum of code
- Allow a novice to learn about coroutines by following program traces
- Demonstrate the strict separation of the asynchronous communication library from its use by coroutines
- Demonstrate that synchronous style programs can be executed in a responsive, asynchronous way with only minor modifications to the original program
- Demonstrate that coroutines can be used to replace threads, running the whole application on the main thread

September - Corolib: distributed programming with C++ coroutines