Bitbucket is a code hosting site with unlimited public and private repositories. We're also free for small teams!


This is a project to gather together people’s experiences with porting Ruby C extensions to Ruby 1.9.1 from earlier versions, but especially 1.8.6 and 1.8.7.

The Plan (such as it is)

It’s still a work in progress, but here’s how I’m thinking I’d like to structure it:

  1. A general introduction page which provides links to the other sections (index.textile).
  2. A section (troubleshooting.textile) that has a list of errors one is likely to encounter, both at compile time and at runtime, along with suggestions for how to solve them.
  3. A section (compatibility.textile) that has suggestions for how to make your extension run under 1.8 and 1.9.

Where applicable, it’d be excellent to include a ruby -pi -e-style command that can fix things for you.

Porting Tools

I’ve also started working on an experimental porting tool (lib/porttool.rb) that might someday be functional enough to do some of the work described in this guide for you. It’s currently very much a work in progress.


This project is tracked in Mercurial, and hosted by the good folks at Bitbucket. Feel free to fork away there if you think you might want to help out.

If you wish to contribute your own experiences, you can either send me an email with your suggestions (please include examples if possible), or you can send me a pull request.

If you contribute directly, please include a change that adds your name to the Contributors section of index.textile if you’re not already listed there. Unless you’re shy, in which case make up an exotic-sounding alias and include that.

Recent activity

Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.