Getting started with the C API

Greets,

I’ve been teaching myself Ruby using David Black’s book, “The
Well-Grounded Rubyist”. 5 chapters in or so, things are going well.
However, things would be going even better if I was able to get
started on the project that’s motivating my course of study: there’s a
C library I’d like to write Ruby bindings for.

The Black book, while appropriate in pace and tone for an experienced
programmer, doesn’t cover any sort of Ruby C API. The pickaxe book
does, but before I go and buy a copy of that, I’d like to know if
those pickaxe chapters are really the canonical reference. That seems
weird.

What I’m looking for is the analogue to these pages:

http://perldoc.perl.org/perlxstut.html
http://docs.python.org/3.1/c-api/index.html
http://java.sun.com/docs/books/jni/html/jniTOC.html

From what I can tell, the closest thing Ruby has to that is a raw
Doxygen dump…

http://www.ruby-doc.org/doxygen/current/

… but that’s not much better than just spelunking the source code,
because it doesn’t give you any idea where to get started.

I know the first edition of the pickaxe book is online, but I don’t
like to waste time learning from dated materials.

Where should I be looking?

Marvin H.

On 13/2/2010 11:25 PM, Marvin H. wrote:

Even if you don’t learn from it, the PickAxe Edition 1 Online will give
you an idea of the kind of coverage you can expect in the PickAxe later
editions. When I get the chance later, I’ll write back to let you know
what is actually in the later edition. I think I did buy the book.

Cheers,
Mohit.
13/2/2010 | 11:57 PM.

On Sat, Feb 13, 2010 at 10:25, Marvin H. [email protected]
wrote:

does, but before I go and buy a copy of that, I’d like to know if
Doxygen dump…

Marvin H.

If you download the Ruby source, there’s a file called README.EXT
which gives a pretty good, detailed treatment of the Ruby C API.
Better than anything I’ve seen online. Here it is in the Ruby SVN:
http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_8/README.EXT

This article on Ruby Inside gives you a quick primer on using mkmf to
build a Makefile so you can start playing around with it:
http://www.rubyinside.com/how-to-create-a-ruby-extension-in-c-in-under-5-minutes-100.html

On Sun, Feb 14, 2010 at 01:11:42AM +0900, Mat B. wrote:

If you download the Ruby source, there’s a file called README.EXT
which gives a pretty good, detailed treatment of the Ruby C API.

That’s exactly the kind of thing I was looking for. On its own, it’s
much more useful than the Doxygen dump – but it also makes the
Doxygen dump itself more useful.

For what it’s worth, I think that README should be given greater
prominence,
as I was unable to discover such an important document despite some
fairly
diligent web searching before asking for help here.

Better than anything I’ve seen online.

I agree.

Marvin H.

Basically you can use anything that enlists the API for ruby extensions,
I had a hard time figuring all
out when embedding ruby into my window manager (subtle) and writing the
C extension:

Here are some of my favorite links beside the pickaxe:
http://www.eqqon.com/index.php/Ruby/Ruby_V1.9_C_Extension
http://macournoyer.wordpress.com/2008/04/16/ruby-to-c-a-couple-snippets/
http://metaeditor.sourceforge.net/embed/ (For embedding, outdated but
still helpful)

And for building stuff:
http://ruby-doc.org/stdlib/libdoc/mkmf/rdoc/index.html

Many other things need to be checked in the ruby doxygen or even worse
in the source code for stuff
like this:

Wbr,

Christoph

http://subforge.org/blogs/show/1

---- On Sat, 13 Feb 2010 16:25:46 +0100 Marvin H.
[email protected] wrote ----

On Sun, Feb 14, 2010 at 01:25:30AM +0900, Christoph K. wrote:

Here are some of my favorite links beside the pickaxe:
http://www.eqqon.com/index.php/Ruby/Ruby_V1.9_C_Extension

Ah, that’s the README, html-ified. Curious that ruby-lang.org doesn’t
give it
greater visibility.

And for building stuff:
http://ruby-doc.org/stdlib/libdoc/mkmf/rdoc/index.html

I think I’m going to need Rake, as the build process for this library is
very
involved. The Perl bindings use Module::Build, the pure-Perl successor
to
ExtUtils::MakeMaker, beause doing complicated stuff with MakeMaker is a
nightmare. I’m expecting to need something analogous for the Ruby
bindings.

I also intend to publish a gem later. It seems like docs.rubygems.org
is a
good place to start, though it references a non-existent
“DeveloperGuide”
(sigh).

http://docs.rubygems.org/read/chapter/5#page18

Also, this…

http://rubyforge.org/docman/view.php/5/460/faq.html

… and there are two books which have a chapter or two on creating gems

both apparently out of date:

http://www.amazon.com/Practical-Ruby-Gems-David-Berube/dp/1590598113
http://www.amazon.com/Cookbook-Cookbooks-OReilly-Lucas-Carlson/dp/0596523696/

Many other things need to be checked in the ruby doxygen or even worse in
the source code for stuff like this:

Wbr,

Hmm… that’s pretty confusing, all right. :wink:

Marvin H.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs