Feature #7177

Proposal of a new C API

Added by authorNari (Narihiro Nakamura) about 8 years ago. Updated about 8 years ago.

Target version:



We uses rb_newobj() in CRuby when we allocates any object.
However, this function has no arguments, so we can not change a
internal allocate method depending klass and flags of any object.

So I propose to add following new C APIs.

  • VALUE rb_newobj_of(VALUE klass, VALUE flags);
  • #define NEWOBJ_OF(obj,type,klass,flags)

A patch is here.

rb_newobj_of() is named by Matz. I think it's a fitting name.
Please let me know if you have more good name.


Related issues

Is duplicate of Ruby master - Feature #7047: Add new C API: rb_newobj_withClosedauthorNari (Narihiro Nakamura)09/22/2012Actions

Updated by authorNari (Narihiro Nakamura) about 8 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r37275.
Narihiro, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.

  • include/ruby/ruby.h: add C APIs.
    VALUE rb_newobj_of(VALUE klass, VALUE flags)
    #define NEWOBJ_OF(obj,type,klass,flags)
    These allow to change a allocation strategy depending on klass
    or flags.

  • gc.c: ditto

  • array.c: use new C API.

  • bignum.c: ditto

  • class.c: ditto

  • complex.c: ditto

  • ext/socket/ancdata.c: ditto

  • ext/socket/option.c: ditto

  • hash.c: ditto

  • io.c: ditto

  • marshal.c: ditto

  • numeric.c: ditto

  • object.c: ditto

  • random.c: ditto

  • range.c: ditto

  • rational.c: ditto

  • re.c: ditto

  • string.c: ditto

  • struct.c: ditto
    [Feature #7177][Feature #7047]

Also available in: Atom PDF