The work of WG21/SG15 - Tooling
The C++ standardization committee has many working groups; one of them is SG15, the study group for tooling. It is a relatively new group. Here is a summary of what it is about (afaik).
History
Historically speaking, tooling was never a topic for the standardization committee. The C++ standard is an ISO document.
Compiler writers can implement a standard and claim to be 'standard conform'.
But it was, and still is, all about C++ as a language and the standard library.
Tools were never a big topic, not even a linker (platform specific implementation detail) or something like a build system.
For the standard, those things simply did not exist.
In recent years, with additional challenges like security concerns and the call to use memory-safe languages, it has become at least recognized that tooling is a topic.
This is good, since the C++ developer community also sees this as top important topic. I wrote about that in my post about the pain points in C++ development a while ago.
What is SG15?
SG15 is a group of volunteers who believe that tooling is important and dedicate their time to working on this topic. Some people overlap with their work, which is nice. Some do not and spend their free time on this topic only.
There are standing online meetings. For now, the schedule is every last Friday of the month.
And there is concrete work going on.
The most active topic is CPS, the Common Package Specification,
which could be an essential step toward better dependency management in C++.
Additionally, there are several discussion forums:
-
The usual SG dedicated mailing list for WG21 SGs.You need to be a member of the committee to participate.
-
An open mailing list. Not very active but a way to stay up to date about dates for the monthly meetings. Link.
-
The #ecosysetm-evolution channel on the cpplang.slack.
If you are not already in the slack, here a link to invite yourself here
My interest in SG15
As for all topics in the standardization committee, I am interested from the user point of view. I do not claim to be a language expert, nor do I claim to be a tooling expert.
The tooling group is the one I am most interested in. I try to participate in the meetings and contribute to the discussions to some extend. But due to my limited time, I am not able to contribute as much as I would like to.
Currently available P-papers
Here is a list of currently, as of writing this post, available papers.
The format is: Link to the paper, title, authors, and the groups the paper is tagged with.
As you can see, many papers tag not only SG15, but also other groups.
Please note that some papers date back to earlier years as listed, but here are the latest revisions.
2018
2019
2020
2021
2022
-
P1689R5: Format for describing dependencies of source files, SG15, SG16
-
P2536R0: Distributing C++ Module Libraries with dependencies json files., SG15
-
P2577R2: C++ Modules Discovery in Prebuilt Library Releases, SG15
-
P2581R2: Specifying the Interoperability of Built Module Interface Files, SG15
-
P2673R0: Common Description Format for C++ Libraries and Packages, SG15
-
P2701R0: Translating Linker Input Files to Module Metadata Files, SG15
2023
-
P2800R0: Dependency flag soup needs some fiber, SG15 Tooling
-
P2898R1: Build System Requirements for Importable Headers, SG15 Tooling
-
P2962R0: Communicating the Baseline Compile Command for C++ Modules support, SG15 Tooling
-
P3033R0: Should we import function bodies to get the better optimizations?, SG15 Tooling
-
P3034R0: Module Declarations Shouldn’t be Macros, SG15 Tooling,Evolution
-
P3041R0: Transitioning from "#include" World to Modules, SG15 Tooling
-
P3057R0: Two finer-grained compilation model for named modules, SG15 Tooling
2024
-
P3092R0: Modules ABI requirement, SG15 Tooling,ARG ABI Review Group
-
P3267R1: Approaches to C++ Contracts, SG15 Tooling,SG21 Contracts
-
P3286R0: Module Metadata Format for Distribution with Pre-Built Libraries, SG15 Tooling
-
P3321R0: Contracts Interaction With Tooling, SG15 Tooling,SG21 Contracts,EWG Evolution
-
P3470R0: Interface-Unit-Only Module Library Support, SG15 Tooling,EWG Evolution
As you can see, quite a number of papers are SG15 tagged. And there are more to come.
Conclusion
This was just a first quick overview of SG15 and the work that is going on there. I hope to find the time to write more about this topic in the future.
There is quite a lot of work. However, despite the importance of the topic, the group is understaffed.
This is strange, given the fact that tooling is one of the most important topics and pain points for C++ developers.
Obviously it is more attractive to discuss language features than to work on tooling.
Anyhow
Special thanks to all the active members of SG15 who contribute to the work. I will not list them since I might forget someone. You all do an awesome and important job!
If you are interested in SG15, the tooling group, feel free to join the discussions via the links provided. The more people, the better the results!