Fw: Re: Ruby/DL Documentation

I think this thread makes more sense here instead of polluting core ML

----- Forwarded Message ----
From: Aston [email protected]
To: [email protected]
Sent: Wednesday, 6 May, 2009 11:34:36 PM
Subject: [ruby-core:23371] Re: Ruby/DL Documentation

thanks a lot [email protected] and [email protected]

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: “[email protected][email protected]
To: [email protected]
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 [email protected]:

hack around ./ext/dl/.c files but i have gained very little usable
some_fast_math_function( float
array, int len);
array = DL.malloc(size)
Click here!


Explore your hobbies and interests. Click here to begin.

  Cricket on your mind? Visit the ultimate cricket website. Enter