Marshall's July Update
Aug 5, 2019There 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)
- Boost
- 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.
Libc++
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)
- LWG2273
regex_match
ambiguity
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 likestd::is_constant_evaluated
, except that it can be called at any language level (back to C++98). For older languages, it just returnsfalse
. This gets rid of a lot of ifdefs in the libc++ source code.
The current status of libc++ can be found here:
- C++20 status
- C++17 status
- C++14 status (Complete)
- Libc++ open bugs
WG21
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
string
- P1004 - Constexpr
vector
- P1065 - Constexpr
INVOKE
- P1135 - The C++20 Synchronization Library
- P1208 - Source Location
- P0645 - Text Formatting
- P1361 - Integration of
chrono
with 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
string_view
- P1394 - Range constructors for
span
- P0288 -
any_invokable
- P0201 -
polymorphic_value
- P0429 - A Standard flatmap
- P1222 - A Standard flatset
- P0533 - constexpr for cmath
- P0792 -
function_ref
- 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.
Boost
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.
Conferences
Upcoming talks:
- 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.
All Posts by This Author
- 09/27/2019 Marshall's Combined August and September Update
- 08/05/2019 Marshall's July Update
- 07/02/2019 Marshall's June Update
- 06/01/2019 Marshall's May Update
- 05/01/2019 Marshall's April Update
- 04/02/2019 Marshall's March Update
- 03/04/2019 Marshall's March Update
- 01/14/2019 Marshall's January Update
- View All Posts...