News

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.

A Tour of C++ -- Bjarne Stroustrup

tour.jpgBjarne Stroustrup's new book is now available:

A Tour of C++

by Bjarne Stroustrup

(see on Amazon)

From the announcement:

The tone of the book is set when the author uses an analogy to reference "A Tour of C++." He writes, "...think of a short sightseeing tour of a city, such as Copenhagen or New York. In just a few hours, you are given a quick peek at the major attractions, told a few background stories, and usually given some suggestions about what to see next. You do not know the city after such a tour. You do not understand all you have seen and heard. To really know a city, you have to live in it, often for years. However, with a bit of luck, you will have gained a bit of an overview, a notion of what might be special about the city, and ideas of what might be of interest to you. After the tour, the real exploration can begin."

Much of "A Tour of C++" is written as though the reader is having a friendly chat about C++ programming with the author.

C++ Papers for Chicago - Library

This is the third part of my series about the C++ papers for Chicago:

C++ Papers for Chicago: Part 3 - Library

by Jens Weller

From the article:

This week the C++ committee meeting has started in Chicago, and we will hopefully see at its end, what improvements C++14 brings to C++11. And in this 3rd part of my series for the Chicago papers, I will start looking at the library proposals...

POCO 1.4.6p2 and Development Release 1.5.2 are available

Now available:

POCO Stable Release 1.4.6p2 and Development Release 1.5.2 Available

From the announcement:

Stable release 1.4.6p2 contains mostly bugfixes, upgrades to some bundled libraries (expat, zlib and sqlite) and a few new features (e.g. ColorConsoleChannel). ...

Development release 1.5.2 adds the MongoDB client library, contains significant updates to the JSON library, adds all changes from 1.4.6p2 and a whole lot of other improvements and fixes. ...

Startup Cloudius announces OSv, a new C++ open-source VM operating system

Froosv.PNGm Cloudius comes OSv: An alternative to Linux running in a virtual machine, written in modern C++. Cloudius is a startup formed by a group of ex-Red Hat OS virtualization experts.

Announcement: OSv, a new open-source operating system for virtual machines

InformationWeek, Charles Babcock: "Cloudius Takes On Linux as Cloud OS"

From the announcement:

Another refreshing feature of OSv is that is written in C++. It's been 40 years since Unix was (re)written in C, and the time has come for something better.

C++ is not about writing super-complex type hierarchies (as some people might have you believe). Rather, it allowed us to write shorter code with less boiler-plate repetition and less chances for bugs. It allowed us to more easily reuse quality code and data structures. And using newly standardized C++11 features, we were able to write safe concurrent code with standard language features instead of processor-specific hacks. And all of this with zero performance overheads -- most of C++'s features, most notably templates, are compile-time features which result in no run-time overhead compared to C code.

 

New paper: N3767, WG21 Teleconference 2013-09-13 Minutes -- Kyle Kloepper

A new WG21 paper is available. A copy is linked below, and the paper will also appear in the next normal WG21 mailing. If you are not a committee member, please use the comments section below or the std-proposals forum for public discussion.

Document number: N3767

Date: 2013-09-13

WG21 Teleconference 2013-09-13 Minutes

by Kyle Kloepper

This was the pre-Chicago WG21 administrative telecon.

New paper: N3773, async and ~future (Revision 4) -- Herb Sutter, Chandler Carruth, Niklas Gustafsson

A new WG21 paper is available. A copy is linked below, and the paper will also appear in the next normal WG21 mailing. If you are not a committee member, please use the comments section below or the std-proposals forum for public discussion.

Document number: N3773

Date: 2013-09-12

async and ~future (Revision 4)

by Herb Sutter, Chandler Carruth, Niklas Gustafsson

Excerpt:

N3637 documented the consensus of SG1 in Bristol. This paper is a minor update to N3637 to make the “change std::async” part of the proposal explicitly separable by updating the example code and adding three alternate sections to section 3 (3.1, 3.2, 3.3). This is to reflect that the main question at the end of Bristol was about how changing std::async affects binary compatibility, and to reflect the “N3637 except {remove|deprecate|leave-as-is} std::async instead of changing it” straw polls that had the most support in the July Santa Clara SG1 meeting.