I attended the recent Issaquah and Kona ISO C++ standards meetings, representing Red Hat and the GCC project, and helping to complete the C++17 standard. As usual, I spent the majority of my time in the Library Working Group (LWG) sessions, but also took part in a subgroup focusing on the Filesystem library, more on that below.
Continue reading “Red Hat at the ISO C++ Standards Meetings (November 2016, Issaquah, and February 2017, Kona): Library”
The recent WG21 meeting in Oulu, Finland, was an especially busy one for the Library Working Group. Every day was spent working through the list of proposals intended for inclusion in C++17, and we also had three “evening” sessions that ran well past the evening (until nearly midnight, although the sun was still up to trick us into working late).
This post describes what I think are the most important library features that were reviewed and approved for inclusion in C++17. As usual, see Jason and Torvald’s posts for news from the Core and Parallelism & Concurrency groups. As Jason explained, the main goal of the Oulu meeting was to finalize the content of the Committee Draft (CD) for C++17. The Library Working Group started the meeting with a huge number of papers intended for inclusion in the CD, and we managed to complete the review of almost all of them.
Continue reading “Red Hat at the ISO C++ Standards Meeting (June 2016, Oulu): Library”
Earlier this year I attended the WG21 C++ standards committee meeting in Jacksonville, Florida, and as usual I spent most of my time in the Library and Library Evolution Working Groups. You can read about some of the other groups’ work in Jason’s Core report and Torvald’s Parallelism & Concurrency report.
As Jason wrote, several of the Technical Specifications published in the last few years were proposed for inclusion into the next revision of the C++ standard (C++17) and most of them added new features to the Standard Library. That meant that the Library Working Group spent much of the week doing careful review of those large documents, to ensure that what was added to the standard was correctly specified and that it was coherent with the rest of the library. This blog summarizes some of the significant changes from this meeting.
Continue reading “Red Hat at the ISO C++ Standards Meeting (March 2016): Library”
One of the reasons that C++ has been so successful and become so widely used is that it was (at least initially) compatible with C, which was already very popular. C++ programs were able to make use of lots of pre-existing C code, and in particular to make use of the C Standard Library. Although the C and C++ languages have diverged, the C++ Standard Library incorporates most of the C99 library by reference.
This article explains some of the difficulties that arise when implementing the parts of the C++ standard library that are shared with C. Some of the difficulties were the cause of longstanding bugs in the GNU C++ standard library, bugs which have only recently been fixed for the forthcoming GCC 6 release. Understanding these issues involves some history of the relevant standards, and some gory details of how a C++ standard library interacts with a C standard library. The gory details will be kept to a minimum though, only referring to them from a high level.
Continue reading “Why < cstdlib > is more complicated than you might think”
Fedora 22 will ship with GCC 5, which brings a whole host of enhancements, among which is a new default C++ ABI. In this article, we’ll cover how that ABI transition will work in Fedora.
Background – what’s an ABI, why is it changing, and what does this mean for developers?
Put simply, binary compatibility means applications that are compiled on a combination of an operating system and a particular hardware architecture will load and run similarly across different instances of the operating environment. Application binaries consist of executable files and Dynamic Shared Objects (DSOs – the formal name for shared libraries), and the level of compatibility is defined by a specific application binary interface (ABI).
Continue reading “GCC 5 in Fedora”
Last month I attended the ISO standardisation meeting for C++ in Urbana-Champaign. As usual I spent most of the week in the Library Working Group or Library Evolution Working Group. In LWG, about half the week was spent processing comments received from National Bodies during the ballots for the Technical Specification (TS) on C++ Extensions for Parallelism and the TS for C++ Extensions for Library Fundamentals, both of which were at the PDTS (public draft) stage.
LWG reviewed some changes to the Parallelism TS, based on National Body comments, more details of those changes can be found in Torvald’s report.
The Library Fundamentals TS received quite a few National Body comments, some of which were rejected or ruled to be out of scope for the first version of the TS, but some resulted in changes to the draft TS. One significant change to the PDTS was the removal of the generic versions of
htonl due to concerns about implementation difficulty and interference with the C library versions. The other changes to the PDTS are in the post-Urbana mailing as N4270 and N4288. With those changes the Library Fundamentals TS has moved to DTS stage. GCC’s implementations of
string_view will be updated soon to conform to the DTS.
Continue reading “Red Hat at the ISO C++ Standards Meeting (November 2014): Library”
In June, Red Hat engineers Jason Merrill, Torvald Riegel and Jonathan Wakely attended the ISO C++ standards committee meeting, held in Rapperswil, Switzerland. This post contains reports on the core language work by Jason, and the library work by Jonathan. Torvald’s report out on Parallelism and Concurrency is here.
Continue reading “Red Hat at the ISO C++ Standards Meeting (June 2014): Core and Library”