In the case of Ableton, it might be that Pd's extern functions are clashing with Max's coming from Max4Live. I thought there was a linker flag, at least on Windows, in order to deal with this that puts linked libs into a sort of different space, however that probably doesn't help in the case of externs trying to find the class functions.
Overall, I think prepending all such functions into a general "pd_" naming is the easiest and most correct long term solution, with fallback to classic naming. As established by Peter K, libpd took this route for all public functions. Even for such a storied project, it's cool to see Pd still has "growing pains" and is indicative that we still have new and interesting spaces to grow into ala "pd anywhere." ;)
I would suggest doing this with a Pd 0.56 release since IMO it would be the beginning of a major API change, even if such a release is really only bug fixes + this. IN the future, it would be easier to mark where this change came to know which precompile externs would still work and which not.
Another option, for compatibility, would be a completive define which exposes the original API after a hard transition is made.
On Apr 5, 2025, at 11:54 AM, Miller Puckette mpuckette@ucsd.edu wrote:
That's right - my mistake. OTOH externs that use &s_, etc., won't be binary compatible and will need recompiling or fixing to avoid those symbols. This is probably less concerning than in the case of VST plug-ins where users might not have a compiler handy.
So I think I should just provide s_, etc., for VST plug-ins and no more broadly than that - other people making end-user apps with libpd can always do the same.
Meanwhile, c-language symbol clashes are still a problem. I've thought of a way one could edit, recompile and package externs so that they try first to bind to pd_class_new() and then failing that go back to class_new()... but the easier path is probably for me to release a pd vanilla 0.55-3 that provides the new symbols, so that it's at least possible to make an extern whose binary works in "stable" Pd but also in VSTs, and that won't need recompiling or repackaging for future Pds.
cheers Miller
On 4/4/25 10:28 PM, Dan Wilcox wrote:
This already works for desktop libpd projects as long as libdl is linked.
On Apr 4, 2025, at 8:41 PM, Miller Puckette via Pd-dev pd-dev@lists.iem.at wrote:
My longer-term hope is to be able to load externs dynamically into either Pd or libpd without having to compile separately for the two situations...
Dan Wilcox danomatika.com https://urldefense.com/v3/__http://danomatika.com__;!!Mih3wA!DLYqLdlNz2mWdUR0rCMmFhrz-1mZkad-bvOzMhljIHb92ehrsjst63rBXbNW7Vf5ImDYaxZoAfyXwOp0BXIw$ robotcowboy.com https://urldefense.com/v3/__http://robotcowboy.com__;!!Mih3wA!DLYqLdlNz2mWdUR0rCMmFhrz-1mZkad-bvOzMhljIHb92ehrsjst63rBXbNW7Vf5ImDYaxZoAfyXwHBNrcb6$
-------- Dan Wilcox danomatika.com http://danomatika.com/ robotcowboy.com http://robotcowboy.com/