Issue #6083 has been updated by Akira Tanaka.


nobu wrote a patch: https://github.com/nobu/sqlite3-ruby/compare/bignum-conversion?expand=1

I'm not sure the status to merge it to the upstream.
(I think the patch should be similified by removing code for nails != 0.)

Note that the original condition, RBIGNUM_LEN(result) * SIZEOF_BDIGITS <= 8, is wrong.
It tests -2**64 < x < 2**64 but it should test -2**63 <= x < 2**63 which accepts NUM2LL.

----------------------------------------
Feature #6083: Hide a Bignum definition
https://bugs.ruby-lang.org/issues/6083#change-45455

* Author: Koichi Sasada
* Status: Closed
* Priority: Normal
* Assignee: 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.



---Files--------------------------------
hide-bignum-internal.patch (4.66 KB)


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