i guess this thread is more appropriate in ruby-talk rather than polluting ruby-core
···
----- 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/ARGON18 amd64
[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 be with 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 reading about 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 ret = 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 1.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.htmlunfortunately it is specific to 1.8.x
i wonder how people here use DL, since it is 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(Intel® Integrated Performance Primitives) 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 thisrequire 'dl'
module NativeLibs
# do the job for accessing some_fast_math_function
endarray = DL.malloc(size)
NativeLibs.some_fast_math_function( array, size) # crashessome how sucess is elusive for me, this crashes(core dumps) for me, i am
sure this is due to my inexperienced stunts with DLAston
________________________________
Now surf faster and smarter ! Check out the new Firefox 3 - Yahoo! Edition *
Click here!
________________________________
Explore your hobbies and interests. Click here to begin.
Cricket on your mind? Visit the ultimate cricket website. Enter http://beta.cricket.yahoo.com