Google Summer of Code 2010 Proposal: Patch Crypt::Primes and Crypt::Random to use Math::GMPz and Math::Primality [UPDATED]


Currently Crypt::Primes and Crypt::Random use Math::Pari for their mathematical processing. Bindings to Pari (through Math::Pari) are fragile and can slow Perl 5 development when new versions are released as bugs must be hunted. This project will move these two core modules to use Math::GMPz and Math::Primality (accessing the GMP library) which will provide identical functionality with less headaches. Since I do not own either of these modules I will provide a set of patches that the authors may choose to incorporate for this functionality.


  • Crypt::Primes patches, documentation, and tests
  • Crypt::Random patches, documentation, and tests
  • The same for any other libraries that may depend upon them

Project Details

This project will attempt to remove Perl 5’s dependence upon Pari and the fragile Math::Pari bindings.  Last year through Google’s Summer of Code I developed Math::Primality to provide this type of functionality and now this project will integrate it into core modules.  The main idea is to remove the dependencies without having any noticeable affect to the end-user.  If there is insufficient tests or documentation, I will add them to ensure correct functioning and clarity. If time permits, I will profile the modules and attempt to optimize the performance of these core cryptographic libraries.

Project Schedule

April 26th – May 24th: Install and test Crypt::Primes and Crypt::Random as is.  Contact module author(s) to introduce myself and explain what is happening.  Determine if any other core modules need to be updated. I will also finish polishing Math::Primality (Issues #1 – #4 at–primality/issues – Convert README to POD, use Dist::Zila, test with 5.12, and clarify documentation).

May 24th – July 12th: Work on patching Crypt::Primes.  Fill out any missing documentation and enhance test suite.

By July 12th: Have Crypt::Primes converted to use Math::GMPz and Math::Primality.

July 12th – August 9th: Work on patching Crypt::Random.  Fill out any missing documentation and enhance test suite.

By August 16th: Merge patches if possible.  Polish code and fill out test suite and documentation.

If I finish early or am ahead of schedule I will move on to other Crypt::* modules that are commonly used and depend upon Math::Pari, providing the same documentation and tests as above.

References and Likely Mentors

I’ve worked with Jonathan Leto on last year’s Google Summer of Code and work with him on Parrot currently.


Same terms as Perl itself.


My name is Bob Kuo and I am a 24 year old graduate student living in Champaign-Urbana, IL.  My undergraduate degree was in Math and Computer Science with classwork focusing on Number and Coding Theory, Numerical Analysis, and Algorithms.  I participated in last year’s Google Summer of Code with The Perl Foundation writing Math::Primality and finished ahead of schedule.  I have been involved with Parrot since the end of last year’s Google Summer of Code and am an active committer.  I currently work part-time as a web developer where I support a legacy PHP system and develop in Ruby/Rails.  I have been using Perl in web development and system administration for 4+ years.  I’ve contributed bug fixes to the CPAN modules CGI and Math::GMPz. You can see my open source code at


I am currently a full time student in graduate school at an accredited institution living in the United States.

Posted in Google Summer of Code | Comments Off on Google Summer of Code 2010 Proposal: Patch Crypt::Primes and Crypt::Random to use Math::GMPz and Math::Primality [UPDATED]

Comments are closed.