Forum: Ruby Communication between different C extensions

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
Ea24c17719a975fb38c107a60f4b3802?d=identicon&s=25 Vincent Fourmond (Guest)
on 2007-01-28 12:24
(Received via mailing list)
Hello !

  A long time ago, I was bitten hard by interoperability between
different C extensions that need to access each others internals. As at
that moment I was controlling the source code of all extensions, I got
away with a (simple ?) workaround.

  Now is time for me to get bitten again. I'm currently writing a Ruby
wrapper for a C++ library providing simple symbolic calculus (and
evaluation). The extensions provides functions to apply a formula to a
great number of numbers, a bit like the following:

apply("x + y", 'x' => [1,2], 'y' => [3,4])
=> [4,6]

  I want to be able to interface that with the common libraries for
manipulating data (Narray, ruby-gsl and Dobjects, a library used by
Tioga). However, I'm not aware of any way to do this 'cleanly'. Sure, I
can hack the data structures from the headers of these extensions, but
that means breaking binary compatibility everytime a header changes -
not very much something I like.

  Is there a better way to do so ? Going through Ruby arrays isn't an
option for speed issues (very expensive to convert a double * to a VALUE
array and back to double *...). Any ideas ?


This topic is locked and can not be replied to.