Forum: Ruby Fw: Re: Ruby/DL Documentation

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.
C306d9e1df9a8b3c65830547618cc7fb?d=identicon&s=25 Aston (Guest)
on 2009-05-07 11:38
(Received via mailing list)
I think this thread makes more sense here instead of polluting core ML

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

thanks a lot and

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


From: "" <>
Sent: Tuesday, 5 May, 2009 2:06:09 PM
Subject: [ruby-core:23359] Re: Ruby/DL Documentation


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

$ cat d.rb
require 'dl/import'
module M
  extend DL::Importer
  dlload './'
  extern 'double sum(double*, int)'
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]

2009/5/4 Aston <>:
> 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 topic is locked and can not be replied to.