The View from C++ Standard Meetings Urbana Nov 2014, Skillman Jan 2015, and Cologne Feb 2015
Michael_Wong 120000M1EH Visits (8457)
"I am a HAL Nine Thousand computer Production Number 3. I became operational at the Hal plant in Urbana, Illinois, on January 12, 1997.”, said HAL9000 in 2001: A Space Odyssey. From reading this book as a kid, I have always wanted to visit University of Urbana-Champaign, knowing that even in 1964 when this book was written by Arthur C. Clarke, it was already known as a hot bed of innovation for computer science.
Although we did not get a HAL9000 computer in 1997, but seventeen years later the C++ Standard meeting arrived to meet at the Siebel Computing Center to discuss a new Standard, known now as C++17. Even though it was at this meeting where we voted to officially request a new work item to start on C++17, the content of C++17 in fact had started several meetings ago in the form of new features and the Technical Specifications.
Since we were in a quiet period in the last
In fact as I write this (just after the Cologne meeting, which is 3 months after the Urbana meeting), C++14 is already officially ratified. It is currently available on the ISO website at a fairly high price of 198 Swiss Franc..
But rest assured we are working with other national Standards organization to make it available at a more reasonable price. BSI will likely look at an edition that is priced much much lower.
Most groups spent its primary focus on Technical Specification (TS) wording and C++17 proposals, followed by issue processing.
The major TSs in-flight were Concept-lite, Library Fundamental, Transactional Memory, Parallelism, Concurrency and the start of Library Fundamental 2. The phases can be understood from here:
A just announced change in 2015 has essentially eliminated the final DTS phase of TS such that the PDTS phase is essentially the last phase. This applies to many of these TSs in flight such that PDTS will be the last phase before publication.
The end result was that Parallelism TS (aka parallel STL) is moving to DTS balloting stage with the addition of trsansform/reduce and packaging exceptions, with the National Body (NB) Comment responses from the PDTS ballot. Not all NB comments were in because there is a mismatch in precise time of completion of all NB comments this meeting. So there was a ballot resolution telecom on December 5th to include any straggler NB comments. This was done with no additional changes and Parallelism TS has completed its PDTS phase. After this will come Parallelism 2 TS which will likely contain parallel execution, and vector/simd execution.
There was a discussion as to whether we want the current Concurrency TS (which has only the futures extensions) to go to PDTS, or wait for more features (e.g. such as google or asio executors). Most wanted to have more extensions to be added in the forms of latches/barrier and atomic shared pointers, but without the current form of google executors. There has been some discussion around the inheritance nature of the current Google executor design, and that there is an upcoming form of executors from teh Networking TS in the form of boost::asio which may be the the preferred form for concurrency executors. The net result is that Concurrency TS was waiting on LWG working out issues involving latches/barriers and atomic smart pointers. This was done this week at the Cologne meeting. So Concurrency remains waiting to enter PDTS stage. There is reasonable expectation that it might ship as a PDTS at Lenexa now, after what we have now done in the Cologne LWG meeting addressing the latches/barriers and atomic smart pointer issues.
ASIO was reviewed extensively and exclusively by a dedicated group at the Cologne LWG meeting. Its sheer size (nearly 200 pages) means work continues beyond this meeting using a specially constructed short-lived mailing list between meetings to complete reviewing the changes suggested in this meeting. They identified 175 issues, some are design issues and a short list is to be added to gitHub where this TS is hosted. There will be a revised paper for Lenexa. The design changes were minor, but potentially pervasive. They involve such design choices as
These design issues will be investigated for LEWG. The resultant working paper could be voted at Kona in October such that a Networking PDTS will be issued. This TS uses string view and array view from Fundamental TS, and could also benefit from type-erased allocator.
Library fundamental TS also moved to DTS balloting post Urbana after addressing the PDTS ballot comments and many minor changes. Both are likely to be approved as TS by May 2015 as it seems that both Parallelism and Library fundamental TS need to go through the DTS phase as they actually entered that phase before 2015.
My Study group on Transactional Memory is SG5 and it also made progress after multiple core and library wording reviews, leading to PDTS ballot vote being approved to start after this meeting. We will receive National Body comments in-between meeting, leading to us addressing those comments in the May 2015 meeting. As of this writing at the end of February, Canada and US have already issued their comments and we have considered many of these comments in continuing chat sessions within our SG. None seems to be major, so unless other NBs submitted comments we are not aware of, we believe TM TS will be published.
Concept TS had multiple reviews before and at this meeting. It was reviewed in Issaquah, Rapperswil, two 2 hour telecons and 2+ days of time at this meeting in core. Although fundamental design did not change, many details are shifting and so there was no consensus to issue a PDTS at the Urbana meeting. A between meeting F2F meeting was held at Skillman, New Jersey by Bloomberg on Jan 26-28 to bring the reviewer and Andrew Sutton together to close on the final details of this 40 page document. The meeting started just as a massive "crippling and potentially historic blizzard" otherwise known as Winter Storm Juno lead to a complete shutdown of Manhattan, so many members had to telecon in even though they were staying in nearby hotels. However, the work to compete review of the document was far less and they were also voted to go out as a PDTS at the Skillman meeting.
For both Transactional Memory and Concept TS, they entered PDTS in 2015, and as such will be allowed to follow the new 2015 rule making PDTS as their last stage before publication.
All these TSs, in addition to the already completed FIlesystem TS are potential candidates for standardization in some form for 2017.
Core processed about 100 new issues since Rapperswil, and 107 Defect Reports were moved at this meeting. Their motions are now also aiming for C++17, the next C++ Standard. A few interesting approved motions involved:
N3994 Range-based for loop was the only motion from core that did not move forward due to questions of teachability of syntax. This is
There will be more core telecon meetings at a rate of 1 every month to continue the processing.
Library WG had also approved a large number of motions for C++17 at Urbana. Too large for this blog to list. But work also started on Library Fundamental 2 TS with features including:
There was much concerns on this last one as many did not like the proposal. The problem is that with an observer_ptr which converts transparently to or from T*, many mght feel they need the opposite thing.But it does not convert to a raw pointer.
As a rebuttal to the scepticism of the committee, Walter Brown, the author reported he has 8-9 years of experience with this usage at Fermi Lab and reported that this feature, though initially disliked, were later much appreciated, because it pointed out where people had forgotten ownership issue.
IN my view, this is just for a TS used to gain experience and it is precisely this kind of question that we want to answer through that experience. I felt comfortable voting for it, reserving the possibility of voting against it if user or implementation experience turns out to be negative given enough time.
There were a few other small but important matters to address.
Special Math was a Technical Report released as its own International Standard during C++11. Now it seems it will be brought back for conditional support.
Library Evolution actually finished processing early after giving feedback on the design part of Library Fundamental 2 TS as well as looking at I/O library and regex. They regrouped to help LWG which has been backlogged due to the large number of issues now that stream to them from all the various SGs. The same also applies to Core which is why both groups now need telecons, and extra meetings to do issue processing, as we just did this last week in Cologne for LWG.
Evolution Group Chair is now Ville Voutillianen who takes over from Bjarne Striustrup. I wish to thank Bjarne for serving for 25 years of leading us through several C++ Standard releases. Ville has been involved first as a Minute taker extraordinaire for EWG, then took on maintenance of the issue list. He now keeps tap of the TINY issues list that contains discussions too small to spin off into a separate SG. Congratulation to Ville for earning this role through his hard work.
For the most recent LWG meeting in Cologne which was a pure LWG meeting to enable more dedicated paper reviews and issue processing due to the mounting backlog, more candidates were reviewed for Library Fundamental 2 TS in addition to the list that was processed in Urbana above.
For concurrency SG1, we reviewed:
The group also looked at more C++17 papers. As I mentioned earlier, a second group broke off to consider Boost::ASIO for the Network TS, as the author Christopher Kohlhoff was here and went through 5 full days of review, with 175 suggested changes. A short-lived mailing list will be set up to continue the review of the revision with the aim of getting a TS out for the October Kona meeting.
This completes 3 trip reports and sets us up into shape going into the May Lenexa meeting with the potential at the end of that meeting for publication of the Transactional memory TS and possibly Concepts, PDTS for Concurrency with added papers from this meeting, Networking and Library Fundamentals 2, and of course the collection of new features for C++17.
Tomorrow, I will be giving a talk at CERN to motivate Supersymmetry (SUSY) scientists on using Transactional Memory. Next month, I will be back in Germany at Karlsruhe for a Parallel 2015 keynote. I am due to come back in Sept for the new OpenMP's Users meeting (OpenMPCon) and IWOMP 2015 in Aachen. If you know of anyone using OpenMP, please let them know and submit a talk at OpenMPCon. Hope to see you at one of these events.