Wim Vander S. schreef:
kind regards,
Wim
Silly me, I forgot to paste the link, here you go:
http://nanoblog.ath.cx/index.rb?module=readmore&id=8
- Wim
Wim Vander S. schreef:
kind regards,
Wim
Silly me, I forgot to paste the link, here you go:
http://nanoblog.ath.cx/index.rb?module=readmore&id=8
Hey Wim,
Change “fase” to “phase”.
Also, I think there is a typo in the opening. Where you say
“Ruby is slow”, I think what you mean is “Ruby is an extremely
powerful and flexible language”. It’s an understandable mistake,
all of the keys are so close to each other. ![]()
Thanks for the section and examples on Ruby mark-and-sweep, this
is something I’ve been having some trouble with.
Garth
Wim Vander S. wrote:
Wim Vander S. schreef:
Hi,
I just finished a tutorial about writing simple ruby extensions.
I was hoping you guys could give me some feedback on what you think
about it.If you find any mistakes (code, spelling, grammar and explanation),
I
would also appreciate it if you told me about them?I’m looking for critisism - I hope to improve the article.
kind regards,
Wim
Silly me, I forgot to paste the link, here you go:
I like the content of the tutorial, and I’ve been curious about writing
C extensions for a while.
One thing, though, is that I believe you have misspelled phase and fase.
Dan
Wim Vander S. wrote:
I’m looking for critisism - I hope to improve the article.
Nice work! Here’s a couple of nitpicks…
You recommend using the “rb_” prefix on classes, modules, etc., but I’d
argue that rb_-prefixed names should be reserved for things defined by
Ruby itself, and your extension should use some other naming convention.
You use names_array->ptr[i] to access elements in an array. My choice
would be to use rb_ary_index instead, to put a little logical distance
between my code and the RArray structure definition. You could use
rb_ary_length to get the array size as well.
Regarding “Where to go from here,” another good learning resource is the
C sources for the builtin classes. I frequently refer to string.c,
array.c, io.c, etc. to see how things should be done.
Thank you all for your comments!
Change “fase” to “phase”.
Doh. Changed.Also, I think there is a typo in the opening. Where you say
“Ruby is slow”, I think what you mean is “Ruby is an extremely
powerful and flexible language”. It’s an understandable mistake,
all of the keys are so close to each other.
I fixed that, that always happens to me, my keyboard must have been low
on batteriesThanks for the section and examples on Ruby mark-and-sweep, this
is something I’ve been having some trouble with.
Your welcome
You recommend using the “rb_” prefix on classes, modules, etc., but
I’d argue that rb_-prefixed names should be reserved for things
defined by Ruby itself, and your extension should use some other
naming convention.
You’re right, I’ve changed that now.
You use names_array->ptr[i] to access elements in an array. My choice
would be to use rb_ary_index instead, to put a little logical distance
between my code and the RArray structure definition. You could use
rb_ary_length to get the array size as well.
Hmmm I never even heard of that, would probably be better. I’ll look
into it after my exams, and if I like it, I’ll change it.
Regarding “Where to go from here,” another good learning resource is
the C sources for the builtin classes. I frequently refer to string.c,
array.c, io.c, etc. to see how things should be done.
You’re right, I added that.
One item on my wishlist would be to show (in perhaps a sidebar) how to
use mkrf instead of mkmf.
I haven’t heard of mkrf yet, but I’ll also check that out after my
exams. Thanks for the suggestion.
Wim
Eric H. schreef:
cleanly in extconf.rb.
–Eric H. - [email protected] - http://blog.segment7.net
I LIT YOUR GEM ON FIRE!
Yes, I first did that as well, I thought have_header and the like
aborted all by themselves. I changed it to abort ‘need stdio.h’ now,
looks cleaner when it fails.
Kind regards,
Wim
On Jan 22, 2007, at 01:46, Wim Vander S. wrote:
Eric H. schreef:
I’d change this to:
abort ‘need stdio.h’ unless have_header(“stdio.h”)
Yes, I first did that as well, I thought have_header and the like
aborted all by themselves. I changed it to abort ‘need stdio.h’
now, looks cleaner when it fails.
It allows you to look for headers that may have different names for
different versions like:
have_header “foo1.h” or
have_header “foo2.h” or
abort “can’t find headers for foo”
–
Eric H. - [email protected] - http://blog.segment7.net
I LIT YOUR GEM ON FIRE!
On Jan 21, 2007, at 16:10, Wim Vander S. wrote:
Wim Vander S. schreef:
I just finished a tutorial about writing simple ruby extensions.
I was hoping you guys could give me some feedback on what you
think about it.If you find any mistakes (code, spelling, grammar and
explanation), I would also appreciate it if you told me about them?
exit unless have_header(“stdio.h”)
I’d change this to:
abort ‘need stdio.h’ unless have_header(“stdio.h”)
but other than that, thank you, thank you, thank you for using an
example that doesn’t proceed to write a Makefile when the right
thingies aren’t found. I think about half the C extensions I’ve
installed puke somewhere after attempting to build rather than puking
cleanly in extconf.rb.
–
Eric H. - [email protected] - http://blog.segment7.net
I LIT YOUR GEM ON FIRE!
Eric H. schreef:
It allows you to look for headers that may have different names for
I might add this to the discussion of the extconf.rb file later, I think
it deserves a little extra attention.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs