The standardization process for C++ involves a structured and collaborative effort by the ISO/IEC JTC1/SC22/WG21 committee, which is responsible for defining and updating the C++ standard. Here's an overview of how this process works:
Structure of the Committee
-
Working Groups: The committee is divided into several working groups, primarily focusing on the core language and the standard library. There are two core working groups: the Evolution Working Group (EWG) and the Core Working Group (CWG), and two library working groups: the Library Evolution Working Group (LEWG) and the Library Working Group (LWG)1.
-
Study Groups: In addition to the working groups, there are study groups focused on specific topics. These groups help generate papers that are then reviewed by the working groups.
Steps in the Standardization Process
-
Proposal Submission: Individuals submit proposals for new features or changes in the form of papers. These papers are typically discussed and refined within study groups or directly by working groups.
-
Review and Revision: Papers are reviewed and revised through multiple iterations. They are discussed within the appropriate working groups (e.g., EWG for language features, LEWG for library features).
-
Voting Sessions (Plenary Sessions): Once a proposal is deemed ready, it is presented to the full committee during a plenary session for a vote. If approved, it is incorporated into the working draft of the standard1.
-
Working Draft: The working draft is the evolving document that accumulates all approved changes. It serves as the basis for the next version of the standard.
-
Draft International Standard (DIS): When the committee believes the working draft is complete, it is voted to become a Draft International Standard (DIS). This stage allows national bodies to review and comment on the draft.
-
Final Draft International Standard (FDIS): After addressing national body comments, the draft is revised and voted to become a Final Draft International Standard (FDIS). This version is then sent to national bodies for a final vote.
-
International Standard Publication: If the FDIS is approved by the national bodies, it becomes the new international standard for C++. The ISO then publishes this standard, making it available worldwide.
Timeline and Meetings
-
The committee meets two to three times a year, with each meeting lasting about a week.
-
The process from proposal submission to final standard publication can take several years, depending on the complexity of the changes and the committee's workload.
This structured process ensures that C++ evolves in a way that balances innovation with stability and compatibility, maintaining its position as a leading programming language in various industries.
Citations:
- https://www.youtube.com/watch?v=YKM7Zkfg-vI
- https://isocpp.org/std/the-standard
- https://codefinity.com/blog/The-Standardization-Process-of-C-plus-plus
- https://help.perforce.com/sourcepro/legacy-hpp/stdug/1-1.html
- https://isocpp.org/std/iso-iec-jtc1-procedures
- https://en.wikipedia.org/wiki/C++
- https://www.reddit.com/r/cpp/comments/772icg/how_does_one_become_a_member_of_the_c_standards/
- https://www.open-std.org/jtc1/sc22/wg21/
- https://www.iso.org/standard/79358.html
- https://stackoverflow.com/questions/31033130/how-does-the-standards-committee-indicate-the-status-of-a-paper-under-considerat
- https://botondballo.wordpress.com/2022/01/03/2021-c-standardization-highlights/
- https://herbsutter.com/2010/03/03/where-can-you-get-the-iso-c-standard-and-what-does-open-standard-mean/
- https://isocpp.org/std
- https://stackoverflow.com/questions/79304551/what-is-the-official-c-standard
- https://developers.redhat.com/articles/2022/03/29/c-standardization-core-language-progress-2021
- https://www.open-std.org/jtc1/sc22/wg21/docs/standards
- https://stackoverflow.com/questions/35300580/does-the-c-standard-support-processes
- https://news.ycombinator.com/item?id=40179954
- https://www.iso.org/standard/68564.html
- https://www.reddit.com/r/cpp/comments/y8ahxj/what_is_the_value_of_having_c_as_a_standard/
0 Comments