Issue #6083 has been updated by mame (Yusuke Endoh).

Target version changed from 2.0.0 to Next Major

> If there's no big opposition, I can accept this proposal.

Sorry, but I must voice big opposition.

Unfortunately, hiding RBignum will cause significant incompatibility.
The macro RBIGNUM_BDIGITS uses RBignum internally.  Many extension
libraries actually uses RBIGNUM_BDIGITS to construct a bignum object.

So, to hide RBignum, we must carefully design a new alternative API
to construct a bignum.  It will take a time.
Worse, source compatibility will break anyway because it is almost
impossible to make it the same as the current RBIGNUM_BDIGITS.

(Consider replacing the internal representation with GMP.
RBIGNUM_BDIGITS must malloc a BDIGIT array and export GMP into the
array.  But no one will free the allocated memory.)

Thus, I'm moving this to "Next Major".  Again, I'm sorry.

-- 
Yusuke Endoh <mame / tsg.ne.jp>
----------------------------------------
Feature #6083: Hide a Bignum definition
https://bugs.ruby-lang.org/issues/6083#change-32172

Author: ko1 (Koichi Sasada)
Status: Assigned
Priority: Normal
Assignee: matz (Yukihiro Matsumoto)
Category: 
Target version: Next Major


Now, the struct RBignum which is a definition of Bignum in C is located in include/ruby/ruby.h.  It means we can't change implementation of Bignum.  For example, using GMP as Bignum representation.

I propose to move the struct RBignum definition from include/ruby/ruby.h to bignum.c.  I believe no one use struct RBignum directly (except core).

It has possibility to break binary compatibility.




-- 
http://bugs.ruby-lang.org/