To me at least, it seems that it might be easier to take the approach of developing an FFI. I think JRuby took that approach and they're just about at the point where they've got access to Nokogiri. Might be worth looking into if someone wants to put forth the effort. I might even look into it :).

-Zac

On 4/20/2010 1:35 AM, Ivan Porto Carrero wrote:
There are several approaches you can take.

Nokogiri has been a b**** to get going on windows, and even now it only compiles on mingw based MRI AFAIK. To come close to the quality of the Nokogiri gem I think you would need to find a very fast .NET based xml library (it's not XLinq :)), that also has a SAX parser, knows about CSS3 for parsing documents in addition to XPATH, and then provide an adapter to make it look like the nokogiri API. You could potentially use P/Invoke to call to libxml2 but then you take on a dependency on a native library. I'm also not sure if libxml2 actually performs in the same way on windows as it does on *nix.

If we would have an implementation of FFI then we could use the FFI based nokogiri gem.

I looked at it a few times but it would be a serious amount of work, too much for my taste :).

---
Met vriendelijke groeten - Best regards - Salutations
Ivan Porto Carrero
Web: http://whiterabbitconsulting.eu - http://flanders.co.nz
Twitter: http://twitter.com/casualjim
Author of IronRuby in Action (http://manning.com/carrero)
Microsoft IronRuby/C# MVP


On Tue, Apr 20, 2010 at 12:22 AM, Chris Bilson <cbil...@pobox.com <mailto:cbil...@pobox.com>> wrote:

    Just out of curiosity: What's the process for making an ironruby
    port of something like Nokogiri?

    I looked at a blog post
    <http://blog.headius.com/2010/04/nokogiri-java-port-help-us-finish-it.html>
    by one of the people working on the JRuby port and it looks pretty
    involved, but essentially, to port it you would just implement all
    the "attach_functions" in libxml.rb in .NET?


    --c



    On Sun, Apr 18, 2010 at 18:46, Tomas Matousek
    <tomas.matou...@microsoft.com
    <mailto:tomas.matou...@microsoft.com>> wrote:

        Using native code in your app also requires full trust
        (implying it won't work in Silverlight) and is potentially a
        security issue. Any exploit in the library would make IronRuby
        vulnerable to attacks.

        Tomas

        -----Original Message-----
        From: ironruby-core-boun...@rubyforge.org
        <mailto:ironruby-core-boun...@rubyforge.org>
        [mailto:ironruby-core-boun...@rubyforge.org
        <mailto:ironruby-core-boun...@rubyforge.org>] On Behalf Of
        Wayne Meissner
        Sent: Sunday, April 18, 2010 4:57 PM
        To: ironruby-core@rubyforge.org
        <mailto:ironruby-core@rubyforge.org>
        Subject: Re: [Ironruby-core] How could I get RPC in iron ruby?

        Performance is one negative - since most of the logic that
        would normally be implemented in C, Java or C# is implemented
        in Ruby, it will be slower.  Libxml is callback heavy, and
        depending on how well the FFI impl handles these, the rather
        large number of transitions between ruby and the native lib
        costs a lot.

        Portability is another - with a pure-ruby or C# impl, you
        don't need to worry about having the appropriate native lib on
        the system - its plug and play.  libxml is also a pretty nasty
        api to bind using something like FFI, and nokogiri really
        pushes FFI, so until you have a really complete FFI impl,
        you'll have stability problems.

        In hindsight, I think JRuby would have been better served by
        just going for a java impl of nokogiri upfront rather than the
        nokogiri-over-FFI stopgap.

        On 19 April 2010 07:10, Ryan Riley
        <ryan.ri...@panesofglass.org
        <mailto:ryan.ri...@panesofglass.org>> wrote:
        > Speaking of FFI, what's the tradeoff here? FFI let's us use the
        > existing libraries without porting, but a managed
        alternative should
        > be more performant, right? Seems like FFI is the winner
        here, but I
        > may be missing something.
        >
        > Ryan Riley
        >
        > Email: ryan.ri...@panesofglass.org
        <mailto:ryan.ri...@panesofglass.org>
        > LinkedIn: http://www.linkedin.com/in/ryanriley
        > Blog: http://wizardsofsmart.net/
        > Twitter: @panesofglass
        > Website: http://panesofglass.org/
        >
        >
        > On Sun, Apr 18, 2010 at 12:49 AM, Jimmy Schementi
        > <jimmy.scheme...@microsoft.com
        <mailto:jimmy.scheme...@microsoft.com>> wrote:
        >>
        >> So whose going to port it? :) or even implement FFI?
        >>
        >> ~Jimmy
        >> On Apr 18, 2010, at 12:02 AM, "Ivan Porto Carrero"
        >> <i...@cloudslide.net <mailto:i...@cloudslide.net>>
        >> wrote:
        >>
        >> nokogiri works on windows but not on IronRuby ... it needs a
        >> C-extension
        >> ---
        >> Met vriendelijke groeten - Best regards - Salutations Ivan
        Porto
        >> Carrero
        >> Web: http://whiterabbitconsulting.eu - http://flanders.co.nz
        >> Twitter: http://twitter.com/casualjim Author of IronRuby in
        Action
        >> (http://manning.com/carrero) Microsoft IronRuby/C# MVP
        >>
        >>
        >> On Sat, Apr 17, 2010 at 9:14 PM, Ryan Riley
        >> <ryan.ri...@panesofglass.org
        <mailto:ryan.ri...@panesofglass.org>>
        >> wrote:
        >>>
        >>> Maybe I spoke too soon, but I thought it did. I was
        switching back
        >>> and forth a lot at the time. I will try again once I get
        everything
        >>> re-installed.
        >>>
        >>> Sent from my iPhone
        >>>
        >>> On Apr 17, 2010, at 1:47 AM, Seo Sanghyeon
        <sanx...@gmail.com <mailto:sanx...@gmail.com>> wrote:
        >>>
        >>>> 2010/4/17 Ryan Riley <ryan.ri...@panesofglass.org
        <mailto:ryan.ri...@panesofglass.org>>:
        >>>>>
        >>>>> Or use hpricot or nokogiri Ruby libraries. You will find
        several
        >>>>> libs to choose from.
        >>>>
        >>>> Does nokogiri work on IronRuby?!
        >>>>
        >>>> --
        >>>> Seo Sanghyeon
        >>>> _______________________________________________
        >>>> Ironruby-core mailing list
        >>>> Ironruby-core@rubyforge.org
        <mailto:Ironruby-core@rubyforge.org>
        >>>> http://rubyforge.org/mailman/listinfo/ironruby-core
        >>>
        >>> _______________________________________________
        >>> Ironruby-core mailing list
        >>> Ironruby-core@rubyforge.org
        <mailto:Ironruby-core@rubyforge.org>
        >>> http://rubyforge.org/mailman/listinfo/ironruby-core
        >>
        >> _______________________________________________
        >> Ironruby-core mailing list
        >> Ironruby-core@rubyforge.org
        <mailto:Ironruby-core@rubyforge.org>
        >> http://rubyforge.org/mailman/listinfo/ironruby-core
        >>
        >> _______________________________________________
        >> Ironruby-core mailing list
        >> Ironruby-core@rubyforge.org
        <mailto:Ironruby-core@rubyforge.org>
        >> http://rubyforge.org/mailman/listinfo/ironruby-core
        >>
        >
        >
        > _______________________________________________
        > Ironruby-core mailing list
        > Ironruby-core@rubyforge.org <mailto:Ironruby-core@rubyforge.org>
        > http://rubyforge.org/mailman/listinfo/ironruby-core
        >
        >
        _______________________________________________
        Ironruby-core mailing list
        Ironruby-core@rubyforge.org <mailto:Ironruby-core@rubyforge.org>
        http://rubyforge.org/mailman/listinfo/ironruby-core

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



    _______________________________________________
    Ironruby-core mailing list
    Ironruby-core@rubyforge.org <mailto: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