From: "mame (Yusuke Endoh)" Date: 2012-11-02T01:33:37+09:00 Subject: [ruby-core:48714] [ruby-trunk - Feature #6083] Hide a Bignum definition 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 ---------------------------------------- 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/