Trip report: Fall ISO C++ meeting

The fall 2013 WG21 (ISO C++) meeting was held in Chicago on September 23-28. Many thanks to DRW Trading Group for hosting us! We once again saw record attendance with over 100 experts in attendance, as also happened at the previous meeting (Bristol, April).

Below are some highlights from this week's meeting. For background, see also these links:

  • Committee structure and organization
  • Current status including how we’re delivering work via Technical Specifications (TS’s), independent specifications that are a step to eventual inclusion in the standard itself (as was done last decade with the Library Extensions “TR1”)

C++14 is on track: Clean CD, all comments tentatively or finally addressed

The primary purpose of the meeting was CD ballot resolution to deal with the national body comments on the primary international comment ballot for C++14, which concluded in mid-August.

Thanks to the high quality of the draft, the ballot results came in very clean: We received a total of 85 official comments from national bodies, plus 30 unofficial late comments. This is far lower than than the over 500 comments received for each of the two comment ballots for C++0x/C++11. Thank you very much to all the committee participants who have worked hard on the C++14 draft to bring it in at such high quality!

At this meeting, the committee addressed all 135 official and unofficial comments with final or tentative resolutions, and we expect to complete the job at the Issaquah meeting in February and launch the possibly-final C++14 ballot in February or March.

Tweaks/adjustments to the C++14 feature set

A few controversial or not-fully-baked features, mostly libraries, got moved out of C++14 into separate vehicles that are still expected to ship concurrently in a similar timeframe to C++14, but will put the facilities into a std::experimental or similar namespace instead of directly into std. In particular:

  • optional<> has moved to the Library Fundamental TS.
  • Runtime-sized arrays (a.k.a. arrays with runtime bound, or ARBs) and dynarray<> have moved to a new Array Extensions TS, possibly to be joined by one or two related facilities such an array_ref type.

We also added a few new little features, which had been discussed before but didn't make it into the C++14 working draft before the CD cutoff.

  • Digit separators: It will now be legal to write things like int x = 12’345’789; -- that is, use a single-quote instead of what in English would be a comma -- including in combination with user-defined literals.
  • Sized deallocation: Optionally passing a size to operator delete for improved allocation performance.
  • The [[deprecated]] attribute.

Technical Specification (TS) progress

As noted on the Status page, the committee has transitioned to a “decoupled” model where major pieces of work progress independently from the Standard itself and can be delivered asynchronously in the form of Technical Specifications (TS’s) that are separate from the main Standard and can later be incorporated into the Standard. This decoupled model allows the committee to deliver smaller pieces of work in a faster and more predictable way as they become ready, and to deliver the standard itself on a more consistent cadence.

We approved one TS for its next ballot:

We also launched four (count 'em, four) more TS’s, whose work has already been in progress and has now reached a point where we want to start converting each proposal into a working draft for a shippable Technical Specification:

  • Library Fundamentals TS: A set of standard library extensions for vocabulary types like optional<> (see above) and other fundamental utilities.
  • Array Extensions TS: Language and library extensions related to arrays, including runtime-sized arrays (aka arrays of runtime bound) and dynarray<> (see above).
  • Concurrency TS: Initially includes library support for executors and schedulers as well as non-blocking extensions to std::future such as .then() and .when_*() functions. Additionally may include language extensions like await, and additional libraries such as concurrent hash containers.
  • Parallelism TS: Jared Hoberock. Initially includes a Parallel STL library with support for parallel algorithms to exploit multiple cores, and vectorizable algorithms to exploit CPU and other vector units.

New ​SG for graphics drawing

Finally, I also appointed a new Study Group 13 for Graphics, with the goal of working toward a "2D Lite" drawing API. For general discussion about this topic area, see also my GoingNative talk from early September, particularly from about the 42-minute mark onward.

Thank you to the over 100 people who came to Chicago, and even more who worked on proposals in preparation for the meeting, for a very productive week. I look forward to seeing many of you at the next meeting, which will be held in February in Issaquah, WA, USA.

Add a Comment

Comments are closed.

Comments (1)

1 0

Bartosz Bielecki said on Oct 3, 2013 11:27 PM:

Could you elaborate a little bit more how will the parallel & independent TS work with the main standard?

Can the library developers already start implementing optional?
Are the devs required to use std::experimental namespace?
When & where shall the work on TS happen? (discussion groups, informal meetings, format meetings)
At which ballot the TS can be incorporated into standard?