Hide internal symbols from ABI
gjs' public ABI (as declared in headers) seems to be relatively small and C-only. However, the library exports a lot of C++ symbols and other internals, which look likely to change from version to version. This complicates automated tracking of whether the external ABI has been broken.
Would it be possible to remove the private symbols from the ABI, to make it clear that they are not for external use?
gjs already has a
GJS_EXPORT macro for Windows, so the easiest way would probably be to probe for compiler support for
-fvisibility=internal, and if supported (gcc/clang), add it to
CFLAGS and define
__attribute__ ((visibility ("default"))). GLib has done the equivalent for a while.