Getting started with the C API

M

Marvin Humphrey

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 Humphrey
 
M

Mohit Sindhwani

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.

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.
 
M

Mat Brown

Greets,

I've been teaching myself Ruby using David Black's book, "The
Well-Grounded Rubyist". =C2=A05 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. =C2=A0The 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. =C2=A0That see= ms
weird.

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

=C2=A0http://perldoc.perl.org/perlxstut.html
=C2=A0http://docs.python.org/3.1/c-api/index.html
=C2=A0http://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...

=C2=A0http://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 Humphrey

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-mi=
nutes-100.html
 
M

Marvin Humphrey

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 Humphrey
 
M

Marvin Humphrey

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.

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. ;)

Marvin Humphrey
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,765
Messages
2,569,568
Members
45,042
Latest member
icassiem

Latest Threads

Top