[Ironruby-core] Native Extensions

Shri Borde Shri.Borde at microsoft.com
Wed Oct 7 00:57:49 EDT 2009


Presumably that workflow would work. 

An alternative is to write a thin Ruby or C# wrapper that wraps the native HTTP parser using either FFI (http://www.igvita.com/2009/01/15/bridging-mri-jruby-rubinius-with-ffi/ or http://www.javaworld.com/community/?q=node/1722), or pinvokes. IronRuby supports neither FFI nor Ruby/dl. So you would have to use pinvokes from C# for now.

FWIW, another alternative is implementing something like IronClad (http://code.google.com/p/ironclad/) which would allow native extensions to work as is, but this is a large feature.

-----Original Message-----
From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Nathan Stults
Sent: Tuesday, October 06, 2009 6:10 PM
To: ironruby-core at rubyforge.org
Subject: Re: [Ironruby-core] Native Extensions

Thanks for the tip. It looks like the Http Parser is generated via
Ragel, and it appears there is a Java version of the language file, so
theoretically all I should have to do is learn Ragel and port that file
to C#, piece of cake :) Then I suppose I'd need a patched version of
mongrel that required the new .NET HTTP parser dll instead of the C
version? Is that how that would work?

-----Original Message-----
From: ironruby-core-bounces at rubyforge.org
[mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Jimmy
Schementi
Sent: Tuesday, October 06, 2009 6:00 PM
To: ironruby-core at rubyforge.org
Subject: Re: [Ironruby-core] Native Extensions

Native extension support is not on the roadmap for 1.0. Win32OLE support
is actually in there now, because of the Dynamic Language Runtime's
support for dispatching to COM objects. So IronRuby's version of
win32ole.rb uses IronRuby's OLE support, rather than depending on native
code.

The current work-around for libraries which use native code to
communicate with the OS or Ruby is to rewrite those using .NET so
IronRuby can use them. Mongrel is actually \mostly Ruby code, as most
Ruby libraries which use native code; there is usually a very small part
of the library which depends on native code. For Mongrel, the HTTP 1.1
parser is the only native piece; rewriting that in C# would allow you to
run Mongrel on .NET.

IMO, after 1.0 would be the time to consider supporting the native Ruby
API.

~Jimmy
________________________________________
From: ironruby-core-bounces at rubyforge.org
[ironruby-core-bounces at rubyforge.org] on behalf of Nathan Stults
[lists at ruby-forum.com]
Sent: Tuesday, October 06, 2009 4:18 PM
To: ironruby-core at rubyforge.org
Subject: [Ironruby-core] Native Extensions

I noticed on the road-map this item under .NET Interop:

[P3] COM: for Win32OLE compatibility

Is that the same thing as supporting native extensions? If not, is it on
the roadmap to support such a thing? Also, is there a workaround, like
replacing files in the gem installation with a .NET wrapper? I'd love to
use IronRuby to embed Thin or Mongrel in my .NET services, but from from
my few experiments it looks like most of the networking libraries these
servers use tend to rely on native dll's.
--
Posted via http://www.ruby-forum.com/.
_______________________________________________
Ironruby-core mailing list
Ironruby-core at rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core

_______________________________________________
Ironruby-core mailing list
Ironruby-core at rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core
_______________________________________________
Ironruby-core mailing list
Ironruby-core at rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core



More information about the Ironruby-core mailing list