Every repository with this icon (
Every repository with this icon (
| Description: | Rubinius, the Ruby VM edit |
-
i tried installing the rjb gem without installing rubinius (that is, running rbx directly after 'rake'. i didn't install since that did not succeed, see another issue)
bin/rbx gem install rjb-1.1.6.gem --no-rdoc --no-ri Building native extensions. This could take a while...
ERROR: Error installing rjb-1.1.6.gem:
ERROR: Failed to build gem native extension./work/research/rubinius/bin/rbx extconf.rb checking for jni.h... yes
checking for dl.h... no
checking for ruby/dl.h... no
extconf.rb failedComments
-
1 comment Created 4 months ago by morrisConst Assignment gives unexpected behaviouronholdxAssigning to already defined constants gives unexpected behaviour or even segmentation faults. I have built from latest git. Examples:
String = nil
puts "foo"
=> Segmentation FaultString = nil
class String; end
=> Segmentation FaultArray = nil
puts "foo"
=> (Nothing gets printed)Array = nil
class Array; end
=> (Nothing happens)Fixnum = nil
puts 42
=> 42Fixnum = nil
class Fixnum; end
=> Fixnum is not a class (TypeError) with backtrace: Exception occurred during top-level exception output! (THIS IS BAD)In all of this, Fixnum seems to behave most correctly. I haven't tried any other constants.
Comments
-
0 comments Created about 1 month ago by brixenRubinius allows method to be bound where MRI does notkernelxReported by wycats as Lighthouse issue 781.
module Annotations def self.extend(klass) klass.class_eval { include Annotation } end def annotate(module_name, &block) new_module = Module.new do @@execute_method = Annotations.const_get(module_name).method(:execute) def self.method_added(name) original_method = instance_method(name) remove_method(name) method_module = Module.new do define_method(name, original_method) end execute_module = Module.new do define_method(name, @@execute_method) end include method_module include execute_module end end new_module.module_eval(&block) include new_module end end module Annotations module Logging def self.execute(*args, &block) puts "ARGS: #{args}" super end end end class Foo extend Annotations annotate :Logging do def hello puts "HELLO" end end end puts Foo.new.helloResult in MRI:
annotations.rb:52:in `hello': singleton method bound for a different object (TypeError) from annotations.rb:52Result in Rubinius
ARGS: An exception occurred running annotations.rb No method 'execute' on Annotations::Logging (Module) (NoMethodError) Backtrace: Kernel(Module)#execute (method_missing) at kernel/delta/kernel.rb:45 Annotations::Logging.execute at annotations.rb:37 Method#call at kernel/common/method.rb:70 Rubinius::DelegatedMethod#call at kernel/common/delegated_method.rb:17 main.__script__ at annotations.rb:52 Rubinius::CompiledMethod#as_script at kernel/common/compiled_method.rb:216 Compiler::Utils.single_load at kernel/compiler/compile.rb:244 Compiler::Utils.load_from_extension at kernel/compiler/compile.rb:329 Rubinius::Loader#script at kernel/loader.rb:326 Rubinius::Loader#main at kernel/loader.rb:406 Object#__script__ at kernel/loader.rb:454Comments
-
Module#append_features does not detect cyclic include
0 comments Created about 1 month ago by brixenReported by shugo, LH 779.
Module#append_features does not detect cyclic include.
$ cat t.rb module A end module B include A end begin A.send(:append_features, A) rescue ArgumentError => e p e end begin B.send(:append_features, A) rescue ArgumentError => e p e end p A.ancestors p B.ancestors $ ruby -v t.rb ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux] #<ArgumentError: cyclic include detected> #<ArgumentError: cyclic include detected> [A, B] [B, A] $ rbx -v t.rb rubinius 0.11.0-dev (1.8.6 8679f8dd 12/31/2009) [i686-pc-linux-gnu] [A, B, A] [B, A]Comments
-
TypeError in string interpolation (when #to_s does not return a String)
0 comments Created about 1 month ago by brixenLH 765 by shugo.
Rubinius handles the following script differently from MRI. Is it intensional?
$ cat t.rb x = Object.new def x.to_s return 1 end p "#{x}" $ ruby-1_8_6 -v t.rb ruby 1.8.6 (2008-08-08 patchlevel 286) [i686-linux] "#<Object:0xb7dedbd8>" $ rbx -v t.rb rubinius 0.11.0-dev (ruby 1.8.6) (eabf5ec7d 12/31/2009) [i686-pc-linux-gnu] An exception has occurred: Tried to use non-reference value 0x3 as type String (48) (TypeError) Backtrace: Compiler::Utils.single_load at kernel/compiler/compile.rb:245 Compiler::Utils.load_from_extension at kernel/compiler/compile.rb:323 Object#__script__ at kernel/loader.rb:240Comments
-
Not correctly distinguishing vcall in IRB
0 comments Created about 1 month ago by brixenLH 717 reported by Charles L
gauss:rubinius brian$ bin/rbx irb(main):001:0> a = 1; a() => 1 irb(main):002:0> b = 1 => 1 irb(main):003:0> b() => 1 irb(main):004:0>
gauss:rubinius brian$ irb >> a = 1; a() NoMethodError: undefined method `a' for main:Object from (irb):1 >> b = 1 => 1 >> b() NoMethodError: undefined method `b' for main:Object from (irb):3 >>Evan's comment:
I investigated this a bit more today. The fix is to, when vcall is normalized, remember that it was a vcall in some way.
That way, we can only check for a local variable override where a vcall was used. This is tricky right now, because adding things to the sexp form blows up the compiler, since it's using .last for a number of things related to inspecting a call sexp (and expecting an s(:arglist...))
I tried to add a @style instance variable to the sexp, but it never makes it all the way through the pipeline, I'm assuming due to the sexp being pulled apart and rebuilt, which looses the ivars.
Comments
-
Problem defining or finding methods on a metaclass
0 comments Created about 1 month ago by brixenLH 614 reported by Sam Aaron
Run this code: http://gist.github.com/204542
ruby 1.8.6 (2008-08-11 patchlevel 287) [universal-darwin9.0] A.cheese: edam B.cheese: stilton a.cheese: shropshire blue b.cheese: cheddar b_with_meta.cheese: cheshire b_with_meta.metaclass.cheese: stilton b_with_meta_meta.cheese: brie b_with_meta_meta.metaclass.cheese: gouda b_with_meta_meta.metaclass.metaclass.cheese: wensleydale
gauss:rubinius brian$ bin/rbx -v meta.rb rubinius 0.13.0-dev (1.8.7 d300514e 2009-11-06 JI) [i686-apple-darwin9.8.0] A.cheese: edam B.cheese: stilton a.cheese: shropshire blue b.cheese: cheddar b_with_meta.cheese: cheshire An exception occurred running meta.rb No method 'cheese' on #> (MetaClass) (NoMethodError) Backtrace: Kernel(MetaClass)#cheese (method_missing) at kernel/delta/kernel.rb:45 main.__script__ at meta.rb:57 Rubinius::CompiledMethod#as_script at kernel/common/compiled_method.rb:221 Compiler::Utils.single_load at kernel/compiler/compile.rb:244 Compiler::Utils.load_from_extension at kernel/compiler/compile.rb:330 Rubinius::Loader#script at kernel/loader.rb:327 Rubinius::Loader#main at kernel/loader.rb:406 Object#__script__ at kernel/loader.rb:454Comments
-
Local variables in blocks leak their existence (in IRB)
1 comment Created about 1 month ago by brixenLH 522 reported by manveru.
I found that there is a different behaviour in rubinius for local variables assigned in a block.
# Ruby 1.8: 10.times{ bar = 1 }; bar #=> NameError: undefined local variable or method `bar' for main:Object # Rubinius 10.times{ bar = 1 }; bar # nilAccording to evan, the following sexp has to change.
pp "10.times { bar = 1 }; bar".to_sexp [:block, [:newline, 1, "(eval)", [:iter, [:call, [:lit, 10], :times], nil, [:block, [:dasgn_curr, :bar], [:newline, 1, "(eval)", [:lasgn, :bar, [:lit, 1]]]]]], [:newline, 1, "(eval)", [:lvar, :bar, 0]]]that should read
pp "10.times { bar = 1 }; bar".to_sexp [:block, [:newline, 1, "(eval)", [:iter, [:call, [:lit, 10], :times], nil, [:block, [:dasgn_curr, :bar], [:newline, 1, "(eval)", [:lasgn, :bar, [:lit, 1]]]]]], [:newline, 1, "(eval)", [:vcall, :bar, 0]]]so the :lvar on the last line becomes :vcall
Comments
-
0 comments Created about 1 month ago by brixenSend patch to get libxml-ruby gem to buildcapixThe libxml-ruby gem builds under the rbx C-API except for this error. Send a patch to not use st_foreach:
case T_HASH: st_foreach(RHASH_TBL(nslist), iterate_ns_hash, self); break;ruby_xml_xpath_context.c: In function ‘rxml_xpath_context_register_namespaces’: ruby_xml_xpath_context.c:223: warning: implicit declaration of function ‘assert’ ruby_xml_xpath_context.c:223: error: syntax error before ‘?’ token ruby_xml_xpath_context.c:223: error: syntax error before ‘)’ token
Comments
-
Reported by pluskid LH 310
The second optional argument of Regexp.new can be used to indicate the language/encoding.
The default behavior:
re = Regexp.new(".") str = "䏿–‡" # or "\344\270\255\346\226\207" in utf-8 encoding re.match(str)[0] # => "\344"When specifying the language/encoding:
re = Regexp.new(".", nil, 'u') str = "䏿–‡" # or "\344\270\255\346\226\207" in utf-8 encoding re.match(str)[0] # => "\344\270\255"However, there's a global variable $KCODE that indicate the current language/encoding. When set, the regexp should behavior according to this, thus:
$KCODE = 'u' re = Regexp.new(".") str = "䏿–‡" # or "\344\270\255\346\226\207" in utf-8 encoding re.match(str)[0] # => "ä¸" or "\344\270\255" in utf-8 encodingThose are Ruby 1.8 behavior. Since Ruby 1.9 gains full Unicode support, the global variable $KCODE is no longer used. I think Rubinius is currently making capability mainly to Ruby 1.8, so this should be considered.
One way to fix this, I think, is to change the default value for the second optional argument (lang) of Regexp.new from "nil" to "$KCODE".
I don't know whether Rubinius and Ruby1.8 use the same regexp engine. But it seems that even though I set $KCODE to 'u' in Ruby1.8. The code
Regexp.new(".").inspectwill return "/./" but
Regexp.new(".", nil, "u").inspectreturns "/./u" . However, the "/./" can successfully match a multi-byte character when setting $KCODE to 'u', but fails in Rubinius. So I think maybe some better way is to patch the regexp engine to take care of the global variable instead of patch the Regexp.new method.
Comments
-
LH 542
Add hooks like rubyprof uses so that we can get rcov running.
Comments
-
Use monotonic clock if possible (instead of gettimeofday)
0 comments Created about 1 month ago by brixenReported by zimbatm LH 279
Paraphrasing: "gettimeofday" is used in various places. This could possibly cause timing problems if the system date is changed between the uses.
(I don't know if this is an issue.)
Suggested fix:
I find that "get_clock" in libev's "ev.c" is a good implementation but it is not exported in "ev.h". It would be nice if libev would also export it's cross-platform timers independently.
Comments
-
Reported by Tony Arcieri LH 536
Multiplexing different types of events on Channels is presently pretty difficult, to the point that IO#select cannot be implemented.
Evan threw out the idea of event objects. These could hopefully store any data resulting from I/O completions, the source of the I/O event, or completely non-I/O related things as not all events are I/O related, such as timeout events.
Event objects could abstract interaction with scheduler directly, e.g.:
te = TimeoutEvent.perform chan, 5.0, value
re = ReadEvent.perform chan, io, 4096, value(where value is an optional user-specified parameter)
when the event occurs, a corresponding Event object is written to the channel, which would include the event type through the nature of its class, and also provide accessors for the event source, any data that may have resulted from the event (e.g. data read from an IO object), and the user value, if it was specified.
This would make for easy case-based processing of IO events, e.g.:
ev = chan.receive
case ev
when ReadEvent then read_handler(ev)
when WriteEvent then write_handler(ev)
when TimeoutEvent then timeout_handler(ev)
... endComments
-
Reported by kwatch LH 319
$SAFE is Proc local in Ruby but not in Rubinius.
hoge.rb:
puts "*** before: $SAFE=#{$SAFE.inspect}" proc { $SAFE = 2 puts "*** in proc: $SAFE=#{$SAFE}" }.call puts "*** after: $SAFE=#{$SAFE.inspect}"result:
$ ruby hoge.rb *** before: $SAFE=0 *** in proc: $SAFE=2 *** after: $SAFE=0 # not changed $ shotgun/rubinius hoge.rb *** before: $SAFE=0 *** in proc: $SAFE=2 *** after: $SAFE=2 # CHANGED!
environment:
$ ruby -v ruby 1.8.6 (2007-09-24 patchlevel 111) [i686-darwin8.11.1] $ shotgun/rubinius -v rubinius 0.8.0 (ruby 1.8.6 compatible) (2ffa558ee) (02/08/2008) [i686-apple-darwin8.11.1]
Comments
-
Incorrect Process.setrlimit spec on (some?) Linux
0 comments Created about 1 month ago by brixenReported by Wilson LH 378
The Process.setrlimit spec for RLIMIT_MEMLOCK needs revision on Linux.
It appears to fail because the lim/max return values are not necessarily valid arguments to setrlimit.
While this is retarded, it is real, and needs some work.I am currently installing Ubuntu so that I can debug this mess.
Process.setrlimit and Process.getrlimit limit and get total size for mlock(2) (bytes) ERROR Invalid argument: Errno.handle at kernel/core/errno.rb:19 Process.setrlimit at kernel/core/process.rb:35 Object#__script__ {} at ./spec/ruby/1.8/core/process/setrlimit_spec.rb:73Comments
-
Reported by agardiner LH 497
A seek error results on a socket when an attempt is made to write to a socket on which there is also data still to be read. On MatzRuby, no error occurs.
The exception on RBX is as follows:
Unable to seek (ESPIPE) Backtrace: IO(TCPSocket)#seek at kernel/core/io.rb:507 IO(TCPSocket)#write at kernel/core/io.rb:490 IO(TCPSocket)#puts {} at kernel/core/io.rb:371 Array#each at kernel/core/array.rb:573 IO(TCPSocket)#puts at kernel/core/io.rb:355 Object#__script__ at /home/ads/test_client.rb:10 CompiledMethod#as_script at kernel/core/compiled_method.rb:326 Compile.single_load at kernel/core/compile.rb:238 Compile.load_from_extension at kernel/core/compile.rb:310 Object#__script__ at kernel/loader.rb:201The following server and client code can be used to reproduce the problem:
Server code
require 'socket' REMOTE_DEBUG_PORT = 1098 TEST_DATA = " Here is some multi-line data " port = ARGV.shift || REMOTE_DEBUG_PORT server = TCPServer.open(port) puts "*** waiting for client..." socket = server.accept puts "Sending data" TEST_DATA.each_line {|l| socket.puts l} socket.flush resp = socket.gets socket.closeClient code
require 'socket' host = ARGV[0] || 'localhost' port = ARGV[1] || 1098 socket = TCPSocket.new(host, port) puts "Connected to server on #{host}:#{port}" while line = socket.gets puts line socket.puts line end socket.closeComments
Some progress toward a patch by Benjamin Stiglitz: http://gist.github.com/204795
-
Reported by Lin Jen-Shin LH 729
Greetings, I sent below to rubinius-dev mailing list but it didn't show up in google group, so I re-post them here.
Sorry if it's wrong place to post here.
I am not (yet) digging into source code,
and I guess IncludedModule was created
for separating each included module.
For example:
http://gist.github.com/30606 (first one or below)module M def m end end module K end class C include K end module K include M end C.new.m # => undefined method class D include K end D.new.m # => nil C.new.m # => undefined method
Things are different in Kernel, because there's no
IncludedModule for Kernel in superclass_chain:
http://gist.github.com/30606 (last one or below)module M def m end end module Kernel include M end class C end C.new.m # => undefined method class D include Kernel end D.new.m # => nil C.new.m # => nil in Rubinius # undefined method in MRI 1.8/1.9 and JRuby
Should there be (an) IncludedModule(s) for Kernel?
Thanks and cheers,
Comments
-
0 comments Created about 1 month ago by brixenFix Method#inspect when it's backed by an AccessVariable instead of a CompiledMethodreviewxReported by Jari Bakken LH 774
Method#inspect was broken when backed by a Rubinius::AccessVariable:
[].method(:length) #=> NoMethodError: No method 'name' on an instance of Rubinius::AccessVariable.
There are other problems here as well
[].method(:length).call # NoMethodError: No method 'activate' on an instance of Rubinius::AccessVariable.
[].method(:length).arity # NoMethodError: No method 'arity' on an instance of Rubinius::AccessVariable.
Comments
-
rake build fails when configure --prefix option is given
0 comments Created about 1 month ago by dbarkersteps to reproduce:
$> cd rubinius $>./configure --prefix=/usr/local $> rake ... VM Assertion: set RBX_RUNTIME to runtime (or equiv) 2 rbx 0x00048673 rubinius::VMException::VMException(char const*, bool) + 99 3 rbx 0x00126082 main + 850 4 rbx 0x00002746 start + 54 Ruby backtrace: Abort! 2 rbx 0x00048968 rubinius::abort() + 40 3 rbx 0x0012668e main + 2398 4 rbx 0x00002746 start + 54 Assertion failed: (0), function abort, file vm/exception.cpp, line 114. rake aborted! Command failed with status (): [./bin/rbx compile -p -I/usr/local/src/rub...]Which seems to indicate rbx can't find it's runtime dir.
Comments
-
Segfault when pasting code into irb
1 comment Created about 1 month ago by GICodeWarriorHere is a transcript of it in action with a gdb trace.
http://gist.github.com/212795Rubinius version: 590b40c
I can't reproduce the failure when running a file with the same code.
Comments
-
Script and transcript here:
http://gist.github.com/212963Rubinius version: 590b40c
It requires large and complex data to trigger (visible in example above).
Comments
-
2 comments Created 7 days ago by zacheryphstripping vm/vm (rbx) breaks rubinius.buildxif vm/vm (rbx) is stripped, it no longer works.
liquid:rubinius context$ ./bin/rbx -v
rubinius 0.13.0-dev (1.8.7 cde67054 2009-11-06) [x86_64-apple-darwin10.2.0]
liquid:rubinius context$ strip vm/vm
liquid:rubinius context$ ./bin/rbx -v
Fatal error loading runtime kernel:
Unable to find FFI 'ffi_environ' in: this process
0x7fff5fbfd480: #raise in kernel/alpha.rb:160 (+50)
0x7fff5fbfd830: #attach_function in kernel/platform/library.rb:108 (+114)
0x7fff5fbfdc60: Rubinius::EnvironmentAccess.module_init in kernel/platform/env.rb:9 (+87)
0x7fff5fbfdfe0: Rubinius.module_init in kernel/platform/env.rb:2 (+30)
0x7fff5fbfe370: Object#script in kernel/platform/env.rb:1 (+28)
Fatal error loading runtime kernel:
Unable to find FFI 'ffi_errno' in: this process
0x7fff5fbfd800: #raise in kernel/alpha.rb:160 (+50)
0x7fff5fbfdbb0: #attach_function in kernel/platform/library.rb:108 (+114)
0x7fff5fbfdfe0: FFI::Platform::POSIX.module_init in kernel/platform/posix.rb:8 (+27)
0x7fff5fbfe370: Object#script in kernel/platform/posix.rb:4 (+32)
Fatal error loading runtime kernel:
Unable to send 'malloc' on 'FFI::Platform::POSIX' (Module)
0x7fff5fbfcd00: #raise in kernel/alpha.rb:160 (+50)
0x7fff5fbfd0b0: #malloc in kernel/alpha.rb:186 (+41)
0x7fff5fbfd490: MemoryPointer.new in kernel/platform/memorypointer.rb:64 (+104)
0x7fff5fbfd890: FFI::Struct#initialize in kernel/platform/struct.rb:70 (+62)
0x7fff5fbfdc40: Class#new in kernel/alpha.rb:100 (+16)
0x7fff5fbfdfe0: File::Stat.class_init in kernel/common/file.rb:838 (+60)
0x7fff5fbfe370: Object#script in kernel/common/file.rb:831 (+126)
Fatal error loading runtime kernel:
Unable to send 'isatty' on 'FFI::Platform::POSIX' (Module)
0x7fff5fbfd4f0: #raise in kernel/alpha.rb:160 (+50)
0x7fff5fbfd8a0: #isatty in kernel/alpha.rb:186 (+41)
0x7fff5fbfdc80: IO#tty? in kernel/common/io.rb:1446 (+17)
0x7fff5fbfdff0: Rubinius.module_init in kernel/delta/rubinius.rb:2 (+10)
0x7fff5fbfe370: Object#script in kernel/delta/rubinius.rb:1 (+28)
exception detected at toplevel: No method 'add_reader' on Rubinius (Module) (NoMethodError)
kernel/delta/kernel.rb:47
kernel/delta/module.rb:110
kernel/bootstrap/array.rb:156
kernel/delta/module.rb:110
kernel/delta/options.rb:8
kernel/delta/options.rb:7
kernel/delta/options.rb:4
kernel/delta/options.rb:1
Unknown VM exception detected.
2 rbx 0x00000001000523a5 rubinius::event::Write::~Write() + 4149
3 rbx 0x0000000100052480 rubinius::event::Write::~Write() + 4368
4 rbx 0x000000010004dd7b std::Rb_tree<std::string, std::pair<std::string const, rubinius::ConfigParser::Entry*>, std::Select1st<std::pair<std::string const, rubinius::ConfigParser::Entry> >, std::less<std::string>, std::allocator<std::pair<std::string const, rubinius::ConfigParser::Entry> > >::M_erase(std::Rb_tree_node<std::pair<std::string const, rubinius::ConfigParser::Entry> >) + 6507
5 rbx 0x000000010004e440 std::Rb_tree<std::string, std::pair<std::string const, rubinius::ConfigParser::Entry*>, std::Select1st<std::pair<std::string const, rubinius::ConfigParser::Entry> >, std::less<std::string>, std::allocator<std::pair<std::string const, rubinius::ConfigParser::Entry> > >::M_erase(std::Rb_tree_node<std::pair<std::string const, rubinius::ConfigParser::Entry> >) + 8240
6 rbx 0x0000000100179f10 std::right(std::ios_base&) + 832
7 rbx 0x000000010017a610 std::right(std::ios_base&) + 2624
8 rbx 0x0000000100011498 llvm::cl::ValuesClass llvm::cl::values(char const, int, char const, ...) + 6296
9 ??? 0x0000000000000002 0x0 + 2Comments
-
Since @subclasses stores the list of classes that are inherited, the class definition will not be garbage collected due to being referenced in this list.
Comments
-
Build on OSX Leopard. Ruby 1.8.7
./configure rake
Produces the following output:
1) Resolv#getaddresses resolves localhost FAILED Expected 0 to be greater than 0 #.__script__ {} at spec/frozen/library/resolv/get_addresses_spec.rb:19 Kernel(Object)#instance_eval at kernel/common/eval.rb:136 Enumerable(Array)#all? {} at kernel/common/enumerable.rb:266 Array#each at kernel/bootstrap/array.rb:156 Enumerable(Array)#all? at kernel/common/enumerable.rb:266 Array#each at kernel/bootstrap/array.rb:156 main.__script__ at spec/frozen/library/resolv/get_addresses_spec.rb:4 Rubinius::CompiledMethod#as_script at kernel/common/compiled_method.rb:230 Requirer::Utils.single_load at kernel/delta/requirer.rb:236 Requirer::Utils.unified_load at kernel/delta/requirer.rb:80 Kernel.load at kernel/common/kernel.rb:690 Kernel(Object)#instance_eval at kernel/common/eval.rb:136 Array#each at kernel/bootstrap/array.rb:156 Rubinius::CompiledMethod#as_script at kernel/common/compiled_method.rb:230 Requirer::Utils.single_load at kernel/delta/requirer.rb:236 Requirer::Utils.load_from_extension at kernel/delta/requirer.rb:321 Rubinius::Loader#script at kernel/loader.rb:334 Rubinius::Loader#main at kernel/loader.rb:448 Object#__script__ at kernel/loader.rb:452 Finished in 74.542019 seconds 3002 files, 11423 examples, 35492 expectations, 1 failure, 0 errors rake aborted! Command failed with status (1): [bin/mspec ci -B full --background...] /Users/jonahfox/Downloads/rubinius-0.13.0/Rakefile:20 (See full trace by running task with --trace)Comments












Ok, looks like the rjb gem requires some C headers we don't yet have implemented.
what is ./stdlib/ext/dl/dl.h?
I would guess thats a header file for the DL extension
any ETA on providing dl.h?
no, no ETA. Patches welcome though!