3 ms·
> Nobody is trying to run multiple incompatible versions of glibc in a single application on windows multiple incompatible versions of the C runtime in the sam
by jcelerier 5y ago
> Nobody is trying to run multiple incompatible versions of glibc in a single application
on windows multiple incompatible versions of the C runtime in the same application are mostly fine as far as I know and fairly useful, one can load a DLL built in 2003 in a program built in 2022.
- jancsika 5y agoWhat's the use case, loading plugins?
- jcelerier 5y agoyes, it's pretty common in audio and I guess in other creative fields.
- jancsika 5y agoIt's funny you mention audio. For example, going back to the early 2000s I can't think of a single case of a user reporting such a need on the Pure Data mailing list. And there are a few thousand plugins for it. I guess Csound would be the grandaddy to check. But I have a feeling this would essentially be limited to running old proprietary plugins for which no source is available?
- detaro 5y agoWith all respect for it, Pure Data (nor csound) is not exactly representative of audio software with plugins overall.
- jancsika 5y agoThe only case I can think of that's not represented would be plug-in binaries for which there is no source available.
- jcelerier 5y ago> But I have a feeling this would essentially be limited to running old proprietary plugins for which no source is available? Yes, I have some songs from circa 2007-2009 which depend on windows 32-bit versions of freeware plug-ins whose developers have been MIA for 15 years now. Well, now I know better and try to only use software that I can recompile or write for my music (including pd :-)). But then I also spent 10 years not making much music because of that. I also work with artists who keep old 10.6 Macs around in case they'd have to perform one of their past songs.
- jancsika 5y ago> But then I also spent 10 years not making much music because of that. Because of the songs being locked away, or because of having to learn an entirely new software stack? > I also work with artists who keep old 10.6 Macs around in case they'd have to perform one of their past songs. Thanks to the various guild orgs from the early 2000s, many commercial filters from that time period were GPL time-bombed. Regardless, it was likely registered and is still held in the Trust's archive. Contact your local maker rep-- you may be able to make a commons release request and obtain the abandonware key from them. Oops, wrong timeline... glorp
- jcelerier 5y ago> Because of the songs being locked away, or because of having to learn an entirely new software stack? because of writing my own software stack to do exactly what I want aha (https://ossia.io https://ossia.io) > Oops, wrong timeline... you really had my hopes up for a few seconds
- Asooka 5y agoMost often, yes. As a consequence, you'll often see DLLs with a "createFoo" and a "deleteFoo" functions for creating and deleting Foo objects. The reason is that you can't free a pointer allocated from one DLL in a different DLL, since they can use different runtimes and thus different heaps. This is one of the sources of really fun bugs when writing for Windows :) .
- dfox 5y agoFor win32 style code multiple different versions of msvcrt in same process is mostly fine except when some of the dlls involved in that is built without sxs manifest (it will probably still work, but produces modal ShowMessage saying that you should no do that). The issue is then when porting stuff from unix world which expects that you can pass things like FILE* between different modules or that you can return malloc()'d thing that can be free()'d by the caller. Edit: another thing is that on windows there are CRT implementations that do not implement C++ exceptions and setjmp/longjmp in terms of SEH, which creates additional dimension of hard to debug ABI incompatibilities (and sidestepping this issue involves being sure that SEH unwind will not happen through SEH unaware code, which is essentially impossible to do unless you handle that as an fatal error).