From: Robert Feldt Date: 2004-04-06T22:39:46+09:00 Subject: Re: Proposal: New Bignum Evan Webb wrote: >During some experiments with ruby cryptography, I found some problems with >the existing Bignum classes. These problems were primarily focused around >certain lacking features required to do more complex operations as well as >some number theory ones. After examining the existing Bignum code, I found >it would be simpler and yield larger results to work on an alternative. I >had at the time been working with libtommath, a public domain math library >with all the functions I required and more. In addition, it's API made it >extremely easy to create a simple, thin, easy layer between ruby and the >library. And thus MBignum was born. > >Early uses found it extremely easy to integrate as an alternative to Bignum. >My Crypt::RSA, Crypt::DSS, and Crypt::ElGamal implementations become simple, >elegant, and importantly, fast. > >And thus I propose that we integrate MBignum into the ruby core as Bignum, >replacing the current implementation. This will give ruby more builtin >mathematical power and allow other core developers the ability to >concentrate on other issues. Licensing wise, there is no problem. Tom St. >Denis, the author of libtommath, has released libtommath as public domain. I >believe that we should of course give him credit if and when we integrate >his work. > > > I agree with this proposal. Python has fast bignum exponentiation in the core and Ruby should also have that. I also wrapped libtommath to do crypto and find it very good to work with. Clean, simple and fast. Evan: Am I correct in that exponentiation is the main problem? That's what I found even though libtommath is generally faster than what we have now. Evan: One way to convince matz might be to actually do it, ie produce patches to the Ruby interpreter. If it's integrated, the right license and works that would make his decision easier. If I remember correctly the conversions Fixnum <=> Bignum are fairly concentrated in the source so it should be doable. Matz: If this is not possible in the 1.9 series please consider using libtommath for Rite. My 2 cents, Robert