06-17-2008

Sophia Antipolis - A Standards Meeting Reviewed (Part 1)

Those following the process of developing the next C++ Standard will know that we have just got back from our latest meeting in the south of France hosted by INRIA, the reknowned French research institute.

To give you a flavour of a typical standards meeting, we typically see around 60 delegates from all corners of the C++ community.  Obviously compiler and library vendors are present with a very strong stake in the standard they will have to implement!  Also a variety of interests on the user side are present, from research institutions like Fermilab to commercial users like Adobe.  A most valuable addition to the mix are acceademic institutions like INRIA itself, and Texas A&M University has a thriving department led by Bjarne himself.  These departments are often the source of the most creative new features as ideas that become familiar in computer science research filter down in practical ways for modern languages.  The most obvious example this time around has been Concepts (more about these in a future post) but important features such as lambda functions and variadic templates also came out of this direction.

A meeting lasts six days, much of the opening morning given over to status reports and planning for the week.  Likewise, the final afternoon is given over to reports on the week’s progress and formal motions to adopt new features for the standard.  There is also a dry run on the Friday afternoon so that contentious issues can usually be taken off the agenda to build another meeting’s worth of consensus.  This helps to run an efficient Saturday meeting - which can be handy when you have transport plans for leaving later that day.  It also means that the Friday meeting is usually the more ‘interesting’ one!

The other aspect to running the meeting is that it is essentially two meetings in one, an ISO meeting for national standards bodies, and the ANSI (more spefically INCITS) meeting for the American delegation itself.  This means that typically two votes are taken on each motion, one to determine the US vote, and a second to determine the ISO.  There were 7 nations represented at the last meeting in Sophia-Antipolis, France, Canada, Germany, Holland, Switzerland, UK, USA.  If your nation is not listed and you think they should have a say in the future of C++, now would a really important time to get them interested because…

… one of the key topics and early decisions made this meeting is to try to finalize our timetable.  The new standard is going to be a big deal, there are at least new 50 language features planned, ranging from small features like default template parameters for function templates, to seriously far-reaching features like Concepts.  In addition to incorporating the new language feature the library is almost doubling in size! Pulling all this together has been a huge ammount of work, but it is important to finally close out the submissions and ship the standard.  We spent some time weighing up the risk and cost of large new features like Concepts versus the timetable, and came up with what we hope will be the right balance.  We plan to ship a feature complete Candidate Document (CD) at the next meeting, which means we should have everything we plan to include in the next version of C++ written up in formal Standards language, and we plan to spend a little more time cleaning up the document to make the specification as tight and precise as we believe an international stadard should be.  Essentially, C++0x should be complete next meeting, bar the bookkeeping and bug-fixing.  The purpose of shipping a CD is that an official ballot is called for all participating ISO nations to approve the document and make comments, so this will be the first real test of whether we have got our feature-set right.

Next the timetable calls for the Final Candidate Document (FCD) to be produced in the next 12 months, so we can send that out for a ballot around September next year.  That ballot should also produce comments. If we are approved we can pass a final version of the document, further ammended in response to comments and now dubbed the Final Draught International Standard (FDIS), along to the top level of ISO/IEC for the final vote to adopt the standard.  Again, we anticipate 12 months and 3 meetings to resolve FCD comments before sending out the FDIS.

So now we have a timetable with a clear plan to release a standard in just over 2 years.  Essentially, C++0x will be ‘complete’ this year, 2008, but the final standard is likely to be available around 2010, or early 2011.  So 0x may be 08, or hexadecimal 0A, depending on your point of view!

Next time I’ll talk about some of the features that were discussed and approved during the meeting.

Posted by Alisdair Meredith in Standards, C++0x | RSS 2.0

Leave a Reply

You must be logged in to post a comment.