Marshall's July UpdateAug 5, 2019
There are four main areas where I spend my time.
- Libc++, where I am the “code owner”
- WG21, where I am the chair of the Library Working Group (LWG)
- Speaking at conferences
This month, the big news (and the big work item) was the approval of the C++ “Committee Draft” at the WG21 meeting in Cologne on July 15-20.
You can think of this as a “beta version” of the C++20 standard; all features are complete. The next step is bug fixing, with an eye towards releasing next year.
The LLVM 9.0 release is on track for September. We have a release branch, and the RC1 was recently dropped.
Because of the run-up and the aftermath of the Cologne meeting, the libc++ accomplishments are a bit sparse this month.
As the “code owner” for libc++, I also have to review the contributions of other people to libc++, and evaluate and fix bugs that are reported. That’s a never-ending task; there are new contributions ever day.
LWG issues resolved this month in libc++ (almost certainly incomplete)
LLVM features implemented this month (almost certainly incomplete)
LLVM bugs resolved this month (definitely incomplete)
Other interesting LLVM bits from this month (certainly incomplete)
Revision 365854 Reorganize the
<bit>header to make most of the facilities available for internal use pre-C++20. NFC for external users.
Revision 367120 Fix a bug in std::chrono::abs where it would fail when the duration’s period had not been reduced.
Revision 364884 Add an internal call
__libcpp_is_constant_evaluated, which works like
std::is_constant_evaluated, except that it can be called at any language level (back to C++98). For older languages, it just returns
false. This gets rid of a lot of ifdefs in the libc++ source code.
The current status of libc++ can be found here:
As I said above, we shipped a CD out of Cologne. Now we wait for the National Bodies (members of ISO, aka “NBs”) to review the draft and send us comments. When we’ve resolved all of these comments, we will send the revised draft out for balloting. If the NBs approve, then that draft will become C++20.
We approved many new features for C++20 in Cologne:
- P0553 - Bit Operations
- P0980 - Constexpr
- P1004 - Constexpr
- P1065 - Constexpr
- P1135 - The C++20 Synchronization Library
- P1208 - Source Location
- P0645 - Text Formatting
- P1361 - Integration of
chronowith text formatting
- P1754 - Rename concepts to standard_case for C++20, while we still can
- P1614 - Spaceship integration in the Standard Library
- P0600 - Stop Tokens and a Joining Thread
- P0631 - Math Constants
We also did not approve many proposed features. Most of these were not approved because we ran out of time, rather than any fault of theirs:
- P1391 - Range constructors for
- P1394 - Range constructors for
- P0288 -
- P0201 -
- P0429 - A Standard flatmap
- P1222 - A Standard flatset
- P0533 - constexpr for cmath
- P0792 -
- P0881 - A Proposal to add stacktrace library
- P1272 - Byte-swapping
- P0627 - Function to mark unreachable code
- and many others
I still have a bunch of mechanical changes that need to be made before we ship:
- P1718R0: Mandating the Standard Library: Clause 25 - Algorithms library
- P1719R0: Mandating the Standard Library: Clause 26 - Numerics library
- P1720R0: Mandating the Standard Library: Clause 28 - Localization library
- P1721R0: Mandating the Standard Library: Clause 29 - Input/Output library
- P1722R0: Mandating the Standard Library: Clause 30 - Regular Expression library
- P1723R0: Mandating the Standard Library: Clause 31 - Atomics library
We polled the NBs before Cologne, and they graciously agreed to have these changes made post-CD.
The next Boost release cycle is in process; I am helping Michael Caisse as release manager with this release. We should have a release in the next couple of weeks.
- CppCon in September in Denver.
- C++ Russia is at the end of October in St. Petersburg.
- ACCU Autumn is right after the WG21 meeting in early November.
- Meeting C++ is in mid-November in Berlin.
I will be making the “Fall 2019 C++ European Tour”, going from St. Petersburg to Belfast to Berlin before heading home mid-November.