What is the proper way to distribute dynamic libraries with a SC plugin?

On macOS, plugins have the .scx extension and libraries have the .dylib extension. But on Linux, both have the .so extension. For me this is causing scsynth to try to load libraries as plugins, and crash on boot.

I can see it just loads anything with the plugin extension here: (supercollider/SC_Lib_Cintf.cpp at 18c4aad363c49f29e866f884f5ac5bd35969d828 · supercollider/supercollider · GitHub).

Looks like I could hide libraries in a directory with the name ignore (supercollider/SC_Filesystem.hpp at 18c4aad363c49f29e866f884f5ac5bd35969d828 · supercollider/supercollider · GitHub), but that feels like a bit of a hack? Or is that the intended way of doing things?

Should trying to load a binary which is not a SC plugin crash the server, or could it just print a warning?

Yes, it is really unfortunate that on Linux - for whatever reason - we do not use the .scx extension.

The next time we bump the plugin API version, we could actually change the extension. Since old plugins won’t load anyway, there wouldn’t be a problem. However, all the plugin build systems on Linux would need to be updated…