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-boun...@rubyforge.org 
[mailto:ironruby-core-boun...@rubyforge.org] On Behalf Of Nathan Stults
Sent: Tuesday, October 06, 2009 6:10 PM
To: ironruby-core@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-boun...@rubyforge.org
[mailto:ironruby-core-boun...@rubyforge.org] On Behalf Of Jimmy
Schementi
Sent: Tuesday, October 06, 2009 6:00 PM
To: ironruby-core@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-boun...@rubyforge.org
[ironruby-core-boun...@rubyforge.org] on behalf of Nathan Stults
[li...@ruby-forum.com]
Sent: Tuesday, October 06, 2009 4:18 PM
To: ironruby-core@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@rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core

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

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

Reply via email to