MichalStrehovsky commented on issue #1841:
URL: https://github.com/apache/arrow-adbc/issues/1841#issuecomment-2108871073

   > There would also need to be a way to dynamically register with a shared 
ADBC driver manager in-memory, because in this scenario there wouldn't be 
native entry points available for the drivers.
   
   FWIW, C# without AOT compilation could use something like 
[DNNE](https://github.com/AaronRobinsonMSFT/DNNE) to create the native 
entrypoints. DNNE allows building native libraries with proper exports. Behind 
the scenes, the native library uses the .NET runtime hosting APIs to activate 
the runtime and call into managed code.
   
   > EDIT: if you follow the links from that reply, you get a pretty sobering 
picture about the viability of loading multiple mid-to-heavy weight runtimes 
into the same process. I guess it's back to Rust, then ;).
   
   As a sidenote, these problems are not unique to mid-to-heavy weight 
runtimes. Any time one loads a dynamic library with a different memory 
allocator, these problems can show up. They only don't show up if everyone 
agrees on using malloc/free from the same C runtime library. As soon as 
libraries start being fancy and each brings their own 
tcmalloc/jemalloc/whatever (and they often are), you now have multiple heaps 
with their own heuristics for expanding/giving memory back to the OS. (E.g. I 
don't know how Rust manages memory, but it's very likely each Rust DLL would 
have its own heap as well).


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to