Hi Fons,
On 3/23/21 9:59 PM, Fons Adriaensen wrote:
If by that you mean it can't use dynamic libs,
then how do
you arrive at that conclusion ?
It is motivated by running plugins in process to avoid context switches.
Say you have 2 plugins, one using aubio.so.2 the other aubio.so.3, or
different plugins using different versions of libavresample.so
Distros often bundle multiple major versions of libraries and that is
fine as long as a given ABI of that library is only used by different
processes. But when you want to load plugins into a host, they will
conflict.
Another example where this happened in the past was fftw. Then this also
extends to various GUI toolkit conflicts (gtk 2/3/4 cannot co-exist in
the same memory space, nor can QT 4/5/6).
Plugins should be self-contained and not depend on external libs (except
for ones with a client/server interface where the lib needs to match the
server e.g. X11, openGL -- but those have versioned symbols and a stable
ABI).
As added benefit, this increases reliability when distributing plugin
binaries: The plugin does not use some random library version found on
the target system.
Cheers!
robin
References:
https://ardour.org/plugins-in-process.html
https://gist.github.com/abique/4c1b9b40f3413f0df1591d2a7c760db4
https://linuxmusicians.com/viewtopic.php?p=84986#p84986