Browse in : |
All
> Topics
> Process
All > Journals > CVu > 324 Any of these categories - All of these categories |
Note: when you create a new publication type, the articles module will automatically use the templates user-display-[publicationtype].xt and user-summary-[publicationtype].xt. If those templates do not exist when you try to preview or display a new article, you'll get this warning :-) Please place your own templates in themes/yourtheme/modules/articles . The templates will get the extension .xt there.
Title: The Standards Report
Author: Bob Schmidt
Date: 04 September 2020 18:17:42 +01:00 or Fri, 04 September 2020 18:17:42 +01:00
Summary: Guy Davidson talks about executors and their journey towards acceptance into the standard.
Body:
About eight and a half years ago, A paper was published, N3378, by some folk from Google entitled ‘A preliminary proposal for work executors’. In this paper, the authors outlined a future which contained “executors, objects that can execute units of work packaged as function objectsâ€. Little did they know where this would lead or how long it would take to get there.
The initial motivation was that well-written multithreaded programs contain discrete pieces of work which are executed asynchronously. Something needs to schedule the execution of these pieces, by launching a new thread or reusing an existing one, choosing the most appropriate thread.
Momentum gathered. Along the way, two additional models were proposed by Nvidia and by Chris Kohlhoff, which were aimed at different use cases: the Parallelism TS for Nvidia, and the Networking TS for Chris Kohlhoff.
Nearly thirty papers and many revisions later, we have arrived at Revision 13 of P0443. This paper hoped to unify Google’s, Nvidia’s and Chris Kohlhoff’s models. Work started on this paper at the end of 2016; it was never going to make C++17 but it was hoped that it would make its way into the working draft in plenty of time for C++20. Once safely ensconced, this would leave time to unblock the Networking TS, allowing that to become a tentpole feature of C++20, alongside modules, coroutines, concepts and ranges.
Four years on and P0443 has yet to reach the Library Working Group (LWG), holding up networking library support. Frankly, C++20 contains an embarrassment of riches already and the fact that we’re going to have to wait at least until C++23 for networking isn’t so disappointing when we have all these new toys to learn to play with.
Agreement has been reached on the design, though, and in an attempt to move the paper through the pipeline, the chair of the Library Evolution Working Group (LEWG) convened six review groups of nine people. Each group would take a part of the paper and check API design and wording. I chaired one of the groups; we were asked to look at the new concepts proposed by the paper. I also participated in another group since there aren’t 45 people available to LEWG!
This ended up being quite a tough gig. The hardest part is that the development of executors has taken such a twisty turny path that there are very few people who are aware of the full motivation for each part. Fortunately each group contained three of the authors (there are eleven authors and eight ‘Other Contributors’). Over the course of five hours, we carefully parsed the paper and looked at the items presented, metaphorically kicking the tyres. It felt more like a tutorial than a review, though, with the authors explaining many details to us, but I hope the job is done and we provided useful feedback.
The weekly LEWG telecons have been reviewing the efforts of each group. When all six groups have reported back, which should be by the end of August, and the authors have responded to the feedback, there should be a further (and let’s hope final) revision of the paper. LEWG can consider moving this forward to LWG, in the hope that it can make a speedy entry to the working draft of C++23 and allow the Networking TS to be merged.
Virtual plenary meetings
If you have been paying close attention to my remarks about ISO governance (thrilling stuff, I know), you will be aware that face-to-face meetings have been suspended, which means that we have not been able to have any plenary votes to amend the working draft of the next C++ standard. Recently however, regulations were changed In Light Of The Ongoing Pandemic. We will now be able to hold three virtual plenary meetings each year until further notice.
There are some complications to this. The first is timezones. One advantage of the face-to-face committee meetings is that everyone is in the same place, and therefore the same timezone. Delegates turn up to committee meetings from around the world, which means that any meeting is going to require some attendees to be awake in the middle of their night.
SG14 recently held what we termed an ‘inverted’ telecon. Rather than meet at 18:00 UTC we met at 06:00 UTC so that we could get attendees from Australia, New Zealand and the rest of the West Pacific region. This was remarkably well attended and highlights the thriving community in that part of the world, which should not be excluded from any plenary voting session. This makes choosing a timeslot even harder: the weekly LEWG meetings have been taking place at 15:00 UTC but that would rule out all but the most dedicated West Pacific folk. I imagine therefore that virtual plenaries might happen in the early evening UTC, perhaps 19:00, to give them a chance of attendance at the beginning of their day.
Conferences
One more thing: you may have noticed that conferences have still been continuing online. I have spoken at a couple, and this does seem to be working out quite well. I do encourage you to consider the upcoming conferences if you want to get more C++ goodness in your life. Next time I’ll be reviewing further developments in the executors story and looking at some of the highlights from the summer conferences.
Guy Davidson is the Principal Coding Manager at Creative Assembly. He has been writing games for about 75% of his life now. He is climbing through his piano grades and teaching Tai Chi while parenting in Hove and engaging in local political activism.
Notes:
More fields may be available via dynamicdata ..