testing for ruby 1.9 in extension code - RUBY

This is a discussion on testing for ruby 1.9 in extension code - RUBY ; Hi In C extension code, what's the canonical way to test whether the ruby being compiled against is 1.8 or 1.9? I've been using ways like #ifdef RUBY_RUBY_H .... 1.9 code #endif But this seems accidental. However I didn't find ...

+ Reply to Thread
Results 1 to 3 of 3

testing for ruby 1.9 in extension code

  1. Default testing for ruby 1.9 in extension code

    Hi

    In C extension code, what's the canonical way to test whether the ruby
    being compiled against is 1.8 or 1.9?

    I've been using ways like

    #ifdef RUBY_RUBY_H
    .... 1.9 code
    #endif

    But this seems accidental. However I didn't find a RUBY_VERSION constant
    in the headers anywhere.

    I'd like to submit a patch to SWIG to fix problems it has with the
    latest 1.9.1-preview, and wish to use the authoritative way.

    thanks
    a

  2. Default Re: testing for ruby 1.9 in extension code

    Alex Fenton wrote:
    > In C extension code, what's the canonical way to test whether the ruby
    > being compiled against is 1.8 or 1.9?
    > [...]
    > But this seems accidental. However I didn't find a RUBY_VERSION constant
    > in the headers anywhere.
    > [...]


    Have you looked at version.h?

    # head -n12 ruby-1.9-svn/version.h
    #define RUBY_VERSION "1.9.0"
    #define RUBY_RELEASE_DATE "2008-11-10"
    #define RUBY_VERSION_CODE 190
    #define RUBY_RELEASE_CODE 20081110
    #define RUBY_PATCHLEVEL 0

    #define RUBY_VERSION_MAJOR 1
    #define RUBY_VERSION_MINOR 9
    #define RUBY_VERSION_TEENY 0
    #define RUBY_RELEASE_YEAR 2008
    #define RUBY_RELEASE_MONTH 11
    #define RUBY_RELEASE_DAY 10

    Regards,
    Daniel

  3. Default Re: testing for ruby 1.9 in extension code

    Daniel Schömer wrote:
    > Alex Fenton wrote:
    >> In C extension code, what's the canonical way to test whether the ruby
    >> being compiled against is 1.8 or 1.9?
    >> [...]
    >> But this seems accidental. However I didn't find a RUBY_VERSION constant
    >> in the headers anywhere.
    >> [...]

    >
    > Have you looked at version.h?
    >
    > # head -n12 ruby-1.9-svn/version.h
    > #define RUBY_VERSION "1.9.0"
    > #define RUBY_RELEASE_DATE "2008-11-10"
    > #define RUBY_VERSION_CODE 190
    > #define RUBY_RELEASE_CODE 20081110
    > #define RUBY_PATCHLEVEL 0



    Thanks, this looked perfect. I wondered why my 'grep VERSION
    include/ruby/*.h' hadn't found this. Turns out version.h is deliberately
    not installed for ruby 1.9, although it is in the source tree:

    http://blade.nagaokaut.ac.jp/cgi-bin...uby-core/12069

    So the correct way is apparently never to test version, but presence of
    features. In my case I ended up doing

    #ifdef HAVE_RUBY_IO_H
    #include "ruby/io.h"
    #else
    #include "rubyio.h"
    #endif

    to get around the disappearance of the latter header in 1.9.1.

    thanks
    a


+ Reply to Thread