Fw: Re: Ruby/DL Documentation

i guess this thread is more appropriate in ruby-talk rather than
polluting ruby-core

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

[[email protected] ~]$ uname -a
FreeBSD raptor 7.2-PRERELEASE FreeBSD 7.2-PRERELEASE #1: Sun Mar 29
19:18:27 UTC 2009 [email protected]:/usr/obj/usr/src/sys/ARGON18 amd64
[[email protected] ~]$ ruby19 -v
ruby 1.9.2dev (2009-05-02 trunk 23326) [x86_64-freebsd7.2]

as suggested by [email protected] 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 [email protected]

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 

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs