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

   > we don't have an official port of gRPC for Rust yet
   
   Wow, I definitely didn't expect that. It looks like Tonic is fairly widely 
used, though. Apparently, there's no shortage of reasons for why it's so hard 
to move away from C as an implementation language.
   
   As a thought experiment, let's say that we wanted to implement a bunch of 
drivers in some (uniform) non-C language and then consume them via the C API 
from Python.
   
   For Go, the implication is that all the Go drivers would need to be bundled 
into a single cgo-based dynamic library in order to ensure no conflicts between 
them. It also implies that there could be problems trying to load any non-ADBC 
extension which also happened to be implemented in Go.
   
   For C# with AOT compilation, there wouldn't be direct conflicts between the 
individual drivers, but there would be an increasingly heavy burden in terms of 
thread and address space consumption. The larger problem would be that a lot of 
existing code doesn't work with AOT compilation. This seems to cover a good 
chunk of what's needed to connect to BigQuery. The resource consumption issue 
could also be resolved by bundling all the drivers together into a single 
dynamic library.
   
   For Java and for C# without AOT compilation, it would require the user to 
have the corresponding runtime installed on their machine. All the drivers 
implemented in those languages could then be dynamically loaded into that 
runtime and would share a single set of runtime features like the garbage 
collector. They could then also share dependencies for an overall smaller 
footprint -- but of course this has the corresponding drawback that isolation 
between dependencies is more difficult. 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.
   
   Feel free to add your favorite language to the list... .


-- 
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