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 GJS_EXPORT
to __attribute__ ((visibility ("default")))
. GLib has done the equivalent for a while.