Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 650485
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 13, 20262026-05-13T22:03:29+00:00 2026-05-13T22:03:29+00:00

I am looking to generate ruby modules from existing C libraries. In the past,

  • 0

I am looking to generate ruby modules from existing C libraries.

In the past, I have used Swig, and found that it was a painful task. I just want to check if there’s something better for Ruby out there, and any gotchas.

Just need to evaluate choices, so even a simple url pointing me to the site will do!

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-13T22:03:30+00:00Added an answer on May 13, 2026 at 10:03 pm

    In the past, the go-to method for binding Ruby to C (or C to Ruby, it doesn’t really matter) was writing an MRI C extension by hand. SWIG basically automates that, but in a really crappy way, so that writing it by hand is usually easier, faster, more performant.

    However, there is a significant problem with MRI C extensions: they are MRI C extensions. This was fine, when MRI was the only Ruby Implementation, but now we have three production-ready Ruby Implementations with another two on the way in the next couple of weeks and yet another two or three to be released later this year.

    Of course, there is another problem with MRI C extensions: you have to write them in C.

    A better solution is the DL library in the Ruby standard library, which allows you to bind to a dynamic library (.dll, .so, .dylib) at runtime, in pure Ruby. Unfortunately, it’s pretty badly documented and because of that, it is not very well supported (or completely unsupported) by several Ruby Implementations: how are you going to provide a compatible implementation if there is no documentation of what "compatible implementation" means?

    Rubinius introduced the Rubinius Foreign Function Interface (FFI), which is much easier to use than DL, much easier to implement for Ruby VM writers and fully documented, specified and tested. JRuby immediately copied the API, Wayne Meissner wrote two C extensions for MRI and YARV, tinyrb supports it, IronRuby, MacRuby and MagLev will pretty soon.

    So, if you use FFI, you won’t have to write a single line of C, and your library will automatically work on MRI, YARV, JRuby and Rubinius and in the future also on IronRuby, MacRuby and MagLev.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 391k
  • Answers 391k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer Try this: "asnthsnth4nts4h3n".replace(/\d+/g, function($0) { return Array(parseInt($0, 10)+1).join(" "); }) May 15, 2026 at 1:21 am
  • Editorial Team
    Editorial Team added an answer Use templates to define behavior on specific elements <!-- after… May 15, 2026 at 1:21 am
  • Editorial Team
    Editorial Team added an answer Uncheck Enable Application Framework in Project Properties. May 15, 2026 at 1:21 am

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.