The Committee: WG21
The ISO C++ committee is called WG21, officially ISO/IEC JTC1 (Joint Technical Committee 1) / SC22 (Subcommittee 22) / WG21 (Working Group 21). WG21 was formed in 1990-91, and consists of accredited experts from member nations of ISO/IEC JTC1/SC22 who are interested in C++ work.
The WG21 officers are:
- Convener: Herb Sutter (Microsoft). The convener chairs the WG, sets the WG meeting schedule ("convenes" meetings), appoints Study Groups, and is responsible to higher levels of ISO (SC22, JTC1, and ITTF) for the WG's work.
- Project Editor: Richard Smith (Google). The project editor is the person ultimately responsible for applying committee-approved changes to the standard's working draft.
- Secretary: Nina Ranns. The secretary is responsible for taking and distributing minutes of WG21 meetings.
In addition, the following roles are essential to running or organization and meetings:
- Meeting Logistics: Jens Maurer. The logistics officer is responsible for working with the local host to ensure that each meeting's local arrangements are suitable for the committee's needs for that meeting, from the number/size/times of meeting room space to food and beverage arrangements.
- Email Lists: Detlef Vollmann (Vollmann Engineering). The mailing list officer is responsible for helping people join and manage their membership in the committee's internal email lists, and related setup and maintenance.
At most meetings, we typically have experts representing about a dozen national bodies. Recently attending nations include Bulgaria, Canada, Czech Republic, Finland, France, Germany, Netherlands, Poland, Russia, Spain, Switzerland, United Kingdom, and United States.
Because many regular participants are based in the United States, the U.S. national C++ committee (originally called J16, officially ANSI X3J16; now called .16, officially INCITS PL22.16) arranges its schedule to meet jointly in the same room with WG21. The .16 officers are:
- Chair: John Spicer (Edison Design Group). The chair runs .16 meetings, organizes the operation of the U.S. committee, and is responsible to the U.S. national body for the committee's work.
- Vice-Chair and Admin chair: Hal Finkel (Argonne National Laboratory). The vice-chair assists the chair, including by maintaining the document register. As Admin group chair, they are also responsible for coordinating the work of maintaining and evolving our infrastructure, such as our use of GitHub, wikis, bug tracking, and related tools. (Meeting logistics and email lists specifically are managed by the people noted above.)
- Secretary: Nina Ranns. The secretary is responsible for taking and distributing minutes of .16 meetings. (Not coincidentally, we use a U.S. member to serve as secretary for both WG21 and .16 since the minutes have a large overlap.)
- International Representative (IR): Barry Hedquist (Perennial). The IR is responsible for communication between the U.S. and international committees, and is usually head of delegation for U.S. at WG21 meetings.
When we talk about "the committee" we typically mean the full membership of the ISO committee, which is a superset of the U.S. national committee.
Subgroups and Study Groups
The committee is organized into a three-stage pipeline consisting of several subgroups, each run by the indicated chairperson. Note "SG" stands for "Study Group."
The Direction and ABI subgroups are advisory groups for advising, respectively, on evolution direction and on the ABI impact of particular proposals:
- Direction Group, aka DG: Rotating chair. 2020 chair: Michael Wong (Codeplay).
- ABI Review Group, aka ARG: Daveed Vandevoorde (Edison Design Group).
Stage 3 (Wording and Consistency) has two groups:
- Core Language Wording, aka CWG: Mike Miller (Edison Design Group).
- Library Wording, aka LWG: Jonathan Wakely (IBM), assistant chairs Jeff Garland (CrystalClear Software), Dietmar Kuehl (Bloomberg).
CWG and LWG are responsible for the maintenance of the "standardese" specification wording and consistency of change proposals from the design groups and SGs.
Stage 2 (Design and Target) has two groups broken down the same way:
- Core Language Evolution, aka EWG: JF Bastien (Apple), assistant chair David Stone (Uber).
- Library Evolution, aka LEWG: Titus Winters (Google), assistant chair Fabio Fracassi (independent consultant), incoming chair Bryce Adelstein Lelbach (NVIDIA).
EWG and LEWG are responsible for new features that involve language and standard library extensions, respectively. In addition to the extensions each group works on directly, they review the style of work produced by language and library extensions developed in a domain-specific SG. They also recommend the target vehicle (International Standard or Techical Specification) where each new feature should be included.
Stage 1 (Domain Specific Investigation and Incubation) consists of Study Groups (SGs) who meet as breakouts during full WG21 face-to-face meetings, and can also meet independently between meetings either face-to-face or by telecon. The work of the SGs is eventually reviewed by the appropriate central groups, which helps to ensure consistency. For example, library features like networking features have their domain-specific design done within their SG, their library design reviewed by LEWG, and their library specification wording reviewed by LWG.
The domain-specific Study Groups are as follows.
Note: Those marked "*" are currently dormant -- proposals have progressed to core groups, and the SG might be reactivated in the future if we receive new papers in the subject area.
- SG1, Concurrency: Olivier Giroux (NVIDIA). Concurrency and parallelism topics, including the concurrency memory model and the related clauses of the standard.
- SG2, Modules: David Stone (Uber). Modules-related topics, and maintaining an overall view of modules-related work.
- * SG3, File System.
- SG4, Networking: Jeff Snyder (PDT Partners). Networking library development beyond the Networking TS for potential inclusion into the standard.
- SG5, Transactional Memory: Hans Boehm (Google). Exploring transactional memory constructs for potential future addition to the C++ language.
- SG6, Numerics: Lisa Lippincott (Tanium). Numerics topics, including but not limited to fixed point, decimal floating point, and fractions.
- SG7, Compile-time programming: Hana Dusíková (Avast). Initially focused on compile-time reflection capabilities, then expanded to compile-time programming in general.
- * SG8, Concepts.
- * SG9, Ranges.
- SG10, Feature Test: Barry Revzin (Jump Trading). Means for portable code to check whether a particular C++ product implements a feature yet, as we continue to extend the standard.
- * SG11, Databases. Database-related library interfaces.
- SG12, UB & Vulnerabilities: Gabriel Dos Reis (Microsoft). A systematic review to catalog cases of vulnerabilities and undefined/unspecified behavior in the standard, and recommend a coherent set of changes to define and/or specify the behavior.
- SG13, HMI & I/O (Human/Machine Interface): Roger Orr (BSI). Selected low-level output (e.g., graphics, audio) and input (e.g., keyboard, pointing) I/O primitives.
- SG14, Game Development & Low Latency: Michael Wong (Codeplay). Topics of interest to game developers and (other) low-latency programming requirements.
- SG15, Tooling: Michael Spencer (Apple), assistant chair Ben Boeckel (Kitware). Topics related to creation of developer tools for standard C++, including but not limited to modules and package management.
- SG16, Unicode: Tom Honermann (Synopsis). Topics related to Unicode text processing in C++.
- SG17, EWG Incubator: Botond Ballo (Mozilla), assistant chair Erich Keane (Intel). A pipeline stage in front of EWG for language proposals that aren't yet ready for EWG or that EWG does not yet have bandwidth to consider.
- SG18, LEWG Incubator: Billy Baker (FlightSafety), assistant chair Nevin Liber (Argonne National Laboratory). A pipeline stage in front of LEWG for library proposals that aren't yet ready for LEWG or that LEWG does not yet have bandwidth to consider.
- SG19, Machine Learning: Michael Wong (Codeplay). Address and improve on C++’s ability to support fast iteration, better support for array, matrix, linear algebra, in memory passing of data for computation, scaling, and graphing, as well as optimization for graph programming.
- SG20, Education: JC van Winkel. Produce guidance for modern course materials for C++ education.
- SG21, Contracts: John Spicer (Edison Design Group). Discussion related to contract programming for checking, documentation, analysis, and other purposes.