After my prior inquiry into the use of python as a build tool for maintainers didn't produce any negative comments and several active and even enthusiastic support message I'm going forward with submitting the patch. To repeat the detail, for the generation of the upcoming C++ standard library module and the hints for missing definitions/declarations in the std:: namespace we need a list of standard C++ APIs. The information needed for the two use cases is different but the actual APIs overlap almost completely and therefore it would be a bad idea to have the data separated. We could opt for a file format that is easy to read in awk and writing the appropriate scripts to transform the data into the appropriate output format but this looks ugly, is hard to understand, and a nightmare to maintain. On the other hand, writing the code in Python is simple and clean. Therefore, Jonathan and I worked on a CSV file which contains the necessary information and a Python to create the gperf input file to generate std-name-hint.h and also, in future, the complete source of the export interface description for the standard library module. This mode is not yet used because the module support isn't ready yet. The output file corresponds to the hand-coded version of the export code Jonathan uses right now. Note that in both of these cases the generated files are static, they don't depend on the local configuration and therefore are checked into the source code repository. The script only has to run if the generated files are explicitly removed or, in maintainer mode, if the CSV file has changed. For normal compilation from a healthy source code tree the tool is not needed. One remaining issue is the responsibility for the CSV file. The file needs to live in the directory of the frontend and therefore nominally changes need to be approved by the frontend maintainers. The content entirely consists of information from the standard library, though. Any change that doesn't break the build on one machine (i.e., the Python script doesn't fail) will not course any problem because the output format of the script is correct. Therefore we have been wondering whether the CSV file should at least have shared ownership between the frontend maintainers and the libstdc++ maintainers. The CSV file contain more hint information than the old hand-coded .gperf file. So, an additional effect of this patch is the extension of the hints that are provided but given that the lookup is now fast this shouldn't have any negative impact. The file is not complete, though, this will come over time and definitely before the module support is done. I build my complete set of compilers with this patch without problems. Any comments? 2022-09-12 Jonathan Wakely Ulrich Drepper contrib/ChangeLog * gcc_update: Add rule to generate gcc/cp/std-name-hint.gperf. gcc/cp/ChangeLog * Make-lang.in: Add rule to generate gcc/cp/std-name-hint.gperf. Adjust rule to generate $(srcdir)/cp/std-name-hint.h. Add explicit rule to depend cp/name-lookup.o on $(srcdir)/cp/std-name-hint.h. * cxxapi-data.csv: New file. Database of C++ APIs. * gen-cxxapi-file.py: New file. Script to generate source code for C++ standard library exports and to generate C++ std:: namespace fix hints. * std-name-hint.gperf: Regenerated. * std-name-hint.h: Regenerated.