| .. _PostMeetingProcedure: | |
| =========================== | |
| Post-meeting procedure | |
| =========================== | |
| The C++ standards committee (WG21) meets several times a year. Each plenary | |
| session adopts new papers and Library Working Group (LWG) issues that libc++ | |
| needs to track. This page describes the procedure that libc++ developers must | |
| follow after each WG21 plenary meeting to keep the conformance trackers in | |
| sync with what the committee voted in. | |
| The tracker files | |
| ================= | |
| For each version of the C++ standard, libc++ maintains some CSV files under | |
| ``libcxx/docs/Status/``: | |
| * ``Cxx<NN>Papers.csv`` — every WG21 paper with library impact that targets | |
| this standard version. | |
| * ``Cxx<NN>Issues.csv`` — every LWG issue that targets this standard version. | |
| Each row in the CSVs corresponds to one Github tracking issue on ``llvm/llvm-project``. | |
| Those tracking issues are also linked to the `libc++ Standards Conformance | |
| <https://github.com/orgs/llvm/projects/31>`__ project. Together, the CSVs, the tracking | |
| issues and the project board are kept in sync by the ``libcxx/utils/conformance`` script. | |
| When tracking new items after a plenary vote, the CSV files should be updated first, and | |
| then the Github issues should be created from the CSV files using the script. | |
| Deciding what plenary motions to track | |
| ====================================== | |
| After each meeting, look at the meeting's straw polls page (requires being a member | |
| of WG21) and decide what needs to be added to the trackers. Generally speaking, we | |
| want to track every plenary-approved LWG paper or LWG issue. We also want to track | |
| CWG papers and issues that have library wording or impact (but we don't track other | |
| CWG papers and issues). | |
| Also note that LWG and CWG issues are respectively bundled as a single motion/paper | |
| on the straw polls page. The papers in these motions contain the actual issues that | |
| we should be tracking. | |
| To confirm that an issue or paper was approved in plenary, ``https://wg21.link/<PAPER>/status`` | |
| can be used. That will link to the Github issue tracking the paper in WG21's system, | |
| where papers approved in plenary have the ``plenary-approved`` label. | |
| Updating the CSV files | |
| ====================== | |
| For each new paper or issue to track, add a row following the convention used in existing | |
| files. If a paper was voted as a Defect Report, mention it in the notes. The syntax of the | |
| file can be validated with:: | |
| libcxx/utils/conformance csv validate libcxx/docs/Status/Cxx<NN>Papers.csv \ | |
| libcxx/docs/Status/Cxx<NN>Issues.csv | |
| Commit the CSV changes and related updates as a first PR. The Github tracking issues are | |
| created in a separate step. | |
| Link stray Github issues | |
| ======================== | |
| People sometimes create Github issues to track standard papers outside of the workflow | |
| described here. While that should be discouraged as only plenary-voted papers should be | |
| tracked and this workflow should be used, issues created outside of this workflow should | |
| still be linked to prevent duplicates and confusion. This can be done with:: | |
| libcxx/utils/conformance github find-unlinked --labels wg21-paper --labels lwg-issue | |
| This will find existing issues with the given labels that are not linked to the Github project | |
| tracking conformance. They can then be linked manually. | |
| Create the Github tracking issues | |
| ================================== | |
| Once the CSV files are committed and any stray issues have been linked, the remaining missing | |
| Github issues can be created using ``libcxx/utils/conformance``. The script lists every issue | |
| it would create from the CSV (skipping rows that are already tracked) and asks for a confirmation | |
| before creating them. The issue title, body and labels are all populated automatically, and they | |
| are appropriately linked to the libc++ conformance project. Run it once per CSV:: | |
| libcxx/utils/conformance github create libcxx/docs/Status/Cxx<NN>Papers.csv \ | |
| --labels=wg21-paper --labels=c++<NN> | |
| libcxx/utils/conformance github create libcxx/docs/Status/Cxx<NN>Issues.csv \ | |
| --labels=lwg-issue --labels=c++<NN> | |
| The CSV ``Notes`` column is written to the issue body between ``BEGIN-RST-NOTES``/``END-RST-NOTES`` | |
| markers so that ``csv synchronize`` can round-trip it back into the CSV. | |
| Once the issues have been created, populate the ``GitHub issue`` column of each CSV row:: | |
| libcxx/utils/conformance csv synchronize libcxx/docs/Status/Cxx<NN>Papers.csv \ | |
| -o libcxx/docs/Status/Cxx<NN>Papers.csv | |
| libcxx/utils/conformance csv synchronize libcxx/docs/Status/Cxx<NN>Issues.csv \ | |
| -o libcxx/docs/Status/Cxx<NN>Issues.csv | |
| This can then be committed as a follow-up PR. |