--0-600190453-12416885406635 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable I think this thread makes more sense here instead of polluting core ML ----- Forwarded Message ---- From: Aston <blackapache512-ticket / yahoo.com> To: ruby-core / ruby-lang.org Sent: Wednesday, 6 May, 2009 11:34:36 PM Subject: [ruby-core:23371] Re: Ruby/DL Documentation thanks a lot tad.bochan / bnpparibas.com and sh / sheepman.sakura.ne.jp tad seems to be using 1.8.x, i am using ruby19 on FreeBSD7.2 [diesalunix@raptor ~]$ uname -a FreeBSD raptor 7.2-PRERELEASE FreeBSD 7.2-PRERELEASE #1: Sun Mar 29 19:18:27 UTC 2009 root@raptor:/usr/obj/usr/src/sys/ARGON18amd64 [diesalunix@raptor ~]$ ruby19 -v ruby 1.9.2dev (2009-05-02 trunk 23326) [x86_64-freebsd7.2] as suggested by sh@ test/dl/test_*.rb are good (not gr8!) source for learning, but given the fact there exists no other code using dl elsewhere I am very happy I found them. thanks sh@ While googling around I discovered ruby-ffi (http://kenai.com/projects/ruby-ffi/pages/Home), and it seems to be much more clean and complete solution. It is supported by other VMs as well. I would have prefered to beith dl since it is part of standard ruby C implementation but it is very difficult to use(u got to have lot of time and little black magic), code using it is almost non-existent and /dev/null documentation when readingbout ruby-ffi elsewhere it appears very promising, what is its future in regard to ruby's C implementation ? will it ever be part of stdlib ? it appears it is still taking shape but by and large stable Aston ________________________________ From: "sh / sheepman.sakura.ne.jp" <sh / sheepman.sakura.ne.jp> To: ruby-core / ruby-lang.org Sent: Tuesday, 5 May, 2009 2:06:09 PM Subject: [ruby-core:23359] Re: Ruby/DL Documentation Hi, It is helpful to read test/dl/test_*.rb in ruby-1.9.tar.gz. You have to master pack and unpack anyway. The following is an example. $ cat sum.c double sum(double *arry, int len) { double ret3D 0; int i; for(i = 0; i < len; i++){ ret = ret + arry[i]; } return ret; } $ gcc -shared sum.c -o libsum.so $ cat d.rb require 'dl/import' module M extend DL::Importer dlload './libsum.so' extern 'double sum(double*, int)' end p M.sum([2.0, 3.0, 4.0].pack("d*"), 3) $ ruby-1.9 -v d.rb ruby.9.2dev (2009-05-02 trunk 23326) [i686-linux] 9.0 2009/5/4 Aston <blackapache512-ticket / yahoo.com>: > Hello, > > recently i have been trying to learn and use dl library. while searching i > found this excellent link > http://www.jbrowse.com/text/rdl_en.html > > unfortunately it is specific to 1.8.x > > i wonder how people here use DL, since its very scarcely documented. i > have been trying to > hack around ./ext/dl/*.c files but i have gained very little usable > information. > > ok, my question is about passing an array from ruby to some native libraries > (IPP(http://software.intel.com/en-us/intel-ipp/) to be specific) > on windows. yes i about other alternatives, i could embed ruby in my app and > do whatever, there is gr8 support there > but this is about quickly loading and using native libraries via dynamic > loader. > > consider code below > some_fast_math_function( float* array, int len); > > then how to pass 'array' argument from ruby ? > i tried this > >equire 'dl' > > module NativeLibs > # do the job for accessing some_fast_math_function > end > > array = DL.malloc(size) > NativeLibs.some_fast_math_function( array, size) # crashes :( > > some how sucess is elusive for me, this crashes(core dumps) for me, i am > sure this isue to my inexperienced stunts with DL > > Aston > > > ________________________________ > Now surf faster and smarter ! Check out the newirefox 3 - Yahoo! Edition * > Click here! ________________________________ Explore your hobbies and interests. Click here to begin. Cricket on your mind? Visit the ultimate cricket website. Enterttp://beta.cricket.yahoo.com --0-600190453-12416885406635--