This report summarizes the activities of C++'s Library Evolution group from 2020-02 through 2020-10. It is split into two sections; one focused on execution (process, logistics, and operations) and one focused on technical work (papers we processed, etc).
Readers are encouraged to also look at:
-
[P2145R1]: Evolving C++ Remotely
-
[P2138R3]: Rules of Design <=> Specification Engagement
-
[P2195R0]: Electronic Straw Polls
1. Execution
1.1. Telecons
Since 2020-04, Library Evolution has held a 90 minute telecon twice a week to review papers. Typically, 1 or 2 papers are reviewed at each telecon.
More details on how we use telecons can be found in [P2145R1].
# of Telecons | 29 |
# of Papers Reviewed On Telecons | 38 |
Mean Telecon Attendance | 31.7 |
Total # of Attendees | 132 |
Mean Telecons Per Attendee | 7 |
Median Telecons Per Attendee | 3 |
1.2. Mailing List Reviews
Over the summer, we began conducting reviews of papers on the Library Evolution mailing list. We conduct 2 to 3 reviews concurrently, and each review lasts for a few weeks.
Mailing list reviews are critical to our operations, as they allow us to increase our paper-processing bandwidth without increasing the frequency or duration of telecons. Additionally, certain classes of papers tend to be particularly well suited for mailing list reviews, such as new proposals which tend need feedback, not decision making.
More details on how we use mailing lists can be found in [P2145R1].
# of Papers Reviewed On The Mailing List | 14 |
1.3. Electronic Polling
In 2020-10, we began the polling period for our first slate of Library Evolution electronic straw polls. We believe electronic straw polls are the best option for Library Evolution to make decisions given our current process. They ensure that all stakeholders have an opportunity to participate.
More details on electronic polling can be found in [P2195R0].
1.4. Chair Guide
We have developed a Library Evolution chairing guide, which can be found on the Library Evolution GitHub wiki.
1.5. Staff
Library Evolution is organized by a team, not a single individual:
-
Bryce Adelstein Lelbach, Chair
-
Fabio Fracassi, Vice Chair
-
Ben Craig, Vice Chair
-
Billy Baker, Incubator Chair
-
Nevin Liber, Incubator Vice Chair
-
Corentin Jabot, Mailing List Review Manager
-
Inbal Levi, Mailing List Review Manager
Team leadership has a number of benefits:
-
Increases our capacity and capabilities.
-
Reduces the burden on each leader.
-
Builds institutional knowledge and redundancy.
We hold a regular staff meeting every two weeks to discuss our operations and make plans for the future.
Additionally, the following noble individuals take minutes for Library Evolution, and deserve accolades:
-
Ben Craig
-
Inbal Levi
-
Mark Hoemmen
-
Guy Davidson
2. Technical
2.1. Plenary Approved Priorities
2.1.1. Executors
During the Summer of 2020, Library Evolution conducted an extensive review of [P0443R13] Executors. Six review groups were formed, each of which focused on a particular aspect of the proposal and then wrote a report with their findings which was presented at a telecon:
-
[P2183R0]: Executors: Properties Review Report
-
[P2202R0]: Executors: Senders/Receivers Review Report
-
[P2203R0]: Executors: Customization Points Review Report
-
[P2205R0]: Executors: Polymorphic Executor Review Report
-
[P2206R0]: Executors: Static Thread Pool Review Report
-
[P2207R0]: Executors: Executor Concept Review Report
Additionally, we reviewed the following papers relating to Executors at telecons:
-
[P2213R0]: Executors Naming
-
[P2220R0]: Redefine Properties in P0443
-
[P2221R0]: Define P0443 CPOs with
tag_invoke -
[P2235R0]: Disentangling schedulers and executors
In 2020-10, we started taking electronic polls on Executors; the results are expected in 2020-11.
2.1.2. Networking
Work on Networking has been proceeding in the Networking Study Group, not Library Evolution. We hope to begin a Library Evolution review of Networking for C++23 in the first half of 2021.
We did review [P2161R2] (Remove Default Candidate Executor), which proposes changes to the Networking Technical Specification. In 2020-10 we began electronic polling to advance this paper.
2.1.3. Coroutines Library Support
In the Spring of 2020, we discussed the roadmap for Coroutines Library Support at a Library Evolution telecon. We also discussed the following papers at telecons:
No further work on Coroutines Library Support occurred after the Spring of 2020 due to a lack of new papers and a lack of revisions of existing papers. This plenary-approved priority is at risk of missing C++23 unless authors actively drive the work.
2.1.4. Standard Library Modules
In the Spring of 2020, we discussed the existing proposal for Standard Library Modules ([P0581R1]) as well as a paper discussing the merits of modularizing the Standard Library ([P2172R0]).
No further work on Standard Librarhy Modules occurred after the Spring of 2020 due to a lack of new papers and a lack of revisions of existing papers. This plenary-approved priority is at risk of missing C++23 unless authors actively drive the work.
2.2. Other Highlights
2.2.1. Formatting and Printing
We reviewed a proposed output counterpart to
, [P2093R1] (Formatted Output).
The response was positive and we expect to see additional work in this area.
Additionally, a few papers proposing additions or fixes to
are on
our agenda for 2020-11 telecons:
2.2.2. Ranges
In 2020-10, we will begin reviewing a group proposal suggesting a set of range features for C++23, [P2214R0], at Library Evolution telecons.
We reviewed the following ranges papers at telecons:
-
[P1255R6]:
std :: views :: maybe
We reviewed the following ranges papers on the mailing list:
-
[P2164R2]:
std :: views :: enumerate
2.2.3. Text and Unicode
Work on Text and Unicode primarily occurs in the Text and Unicode Study Group, however a few papers are advancing to Library Evolution.
In 2020-11, we will begin a mailing list review of [P1885R3] Naming Text Encodings to Demystify Them.
2.2.4. Freestanding
We reviewed a set of coupled papers proposing a reorganization and enhancement of freestanding on Library Evolution telecons:
-
[P1641R3]: Freestanding Library: Rewording the Status Quo
-
[P1642R3]: Freestanding [utilities], [ranges], and [iterators]
In 2020-11, we’ll be reviewing a revision of [P1642R4] at a telecon.
2.3. Other Work
The following papers were reviewed at Library Evolution telecons and in 2020-10 we started electronic polls to forward them to Library Working Group:
-
[P2166R1]: A Proposal to Prohibit
andstring
construction fromstring_view
.nullptr -
[P2212R1]: Relax Requirements for
time_point :: clock
The following papers were reviewed at Library Evolution telecons:
-
[LWG1396]:
should support allocators< regex > -
[LWG3430]:
& co. should be constructible from string_viewstd :: fstream -
[LWG3440]: Aggregate-paren-init breaks direct-initializing a tuple or optional from {aggregate-member-value}
-
[LWG3451]: Inconsistently explicit deduction guides
-
[LWG3454]:
should bepointer_traits :: pointer_to constexpr -
[P1467R4]: Extended floating-point types
-
[P1478R3]: Byte-wise atomic memcpy
-
[P1673R2]: BLAS Linear algebra
-
[P2037R1]: String’s gratuitous assignment
-
[P2098R1]:
std :: is_specialization_of -
[P2136R0]:
std :: invoke < R > -
[P2139R1]: Reviewing Deprecated Facilities for C++23
-
[P2162R1]: Inheriting from
(resolving LWG3052)std :: variant
The following papers were reviewed on the mailing list:
-
[P1990R1]: Add
tooperator [] std :: initializer_list -
[P2165R1]: Compatibility between tuple and tuple-like objects
-
[P0870R4]: A proposal for a type trait to detect narrowing conversions
-
[P0205R0]: Allow Seeding Random Number Engines With
std :: random_device -
[P1709R2]: Graph Data Structures
-
[P0952R0]: A new specification for
std :: generate_canonical -
[P2146R2]: Modern
stream IO for C++std :: byte -
[P1944R1]: Add Constexpr Modifiers to Functions in
and< cstring > < cwchar > -
[P1924R0]: Making
constexprstd :: stack -
[P1925R0]: Making
constexprstd :: queue -
[P1926R0]: Making
constexprstd :: priority_queue