We have received the following grant application. Please leave feedback in the comments field by March 22nd, 2014.
RPerl Test Suite Upgrade & Module::Compile Integration
Name of proposer.
William N. Braswell, Jr.
Where we can contact you!
How much is your project worth?
A short description.
Whether we want to admit it to ourselves or not, Perl is quite slow at many kinds of tasks, as shown by the popular Alioth Shootout Benchmarks: http://benchmarksgame.alioth.debian.org/u32/performance.php?test=nbody
RPerl is a compiler which converts low-magic Perl 5 source code into the equivalent Inline::C and Inline::CPP code, which is then compiled and can be linked back into high-magic Perl 5 code in place of the original slow pre-compiled pure-Perl. In other words, RPerl can help the low-magic parts of your program run up to 200x faster, WITHOUT breaking backward compatibility with existing high-magic Perl 5 and XS.
The next step of my involvement in RPerl development is to upgrade the RPerl test suite and determine if we should integrate Ingy's Module::Compile code. The RPerl test suite currently supports data type testing, and needs to be upgraded to support compilation of full Perl modules. Ingy's Module::Compile code may prove useful for RPerl, this needs to be investigated further and then implemented if found to be appropriate.
Benefits to the Perl Community
Why should the Perl Community grant this project?
The Perl Community has already put their money where their mouth is to support RPerl:
Not to put too fine a point on it, but the fact is that slowness and high-magic are a significant part of the reason why Perl has been in decline for the past decade:
Only an extremist would argue that significant performance improvements will be anything but a benefit to the Perl Community.
People like Matt Trout and Reini Urban and Daniel Dragan and BrowserUk and Ingy dotNet have been very helpful to me in the design and details of RPerl. Overall, I've had net positive support from the Perl community as a whole.
Under the guidance of TPF and Mark Keating, RPerl has now been successfully accepted into the Google Summer of Code 2014:
Quantifiable results e.g. "Improve X modules in ways Y and Z", "Write 3 articles for X website".
1. One or more new .t test suite files, with appendent .pm and .pl files to be tested
2. Module::Compile integration, or equivalent
A more detailed description.
[ RPerl Test Suite ]
The RPerl test suite currently consists of 7 enabled .t test files:
Currently, RPerl's most advanced automated test file is built to control our manually-compiled sorting algorithm test application:
We need to create one or more additional .t test files to control the soon-to-be-large number of automatically-compiled test applications. I've already started working out the test strategy in some of the files:
[ Module::Compile ]
The Module::Compile software created by Ingy dotNet may be useful for RPerl's automated compilation process.
Currently I plan to move much of the functionality from the bin/rperl front-end to the Compiler.pm module:
As part of this move, I should be able to determine if RPerl will benefit from Module::Compile. At that time I will either integrate Module::Compile into the RPerl compilation process, or I will choose some alternative method of achieving roughly equivalent functionality.
If your grant is going to take longer than a week it's useful to break down your project into small chunks. This helps everybody track of progress, and lets you see if your project schedule is practical!
Try and think in "inch-stones" rather than "mile-stones". Breaking down your grant into many small goals makes it harder to overlook difficulties, and easier to see progress as you complete your grant.
[ RPerl Test Suite ]
09_compile_print.t 10_compile_math.t 11_compile_conditionals.t 12_compile_loops.t 13_compile_sort.t TAP::Harness
[ Module::Compile ]
Move Functionality From compiler_test.pl To Compiler.pm Create RPerl::pmc_compile() Determine If Module::Compile Will Work Integrate Module::Compile Into Compiler.pm, Or Equivalent
How long will the project take? When can you begin work?
I estimate the project will take between 1 to 2 months.
RPerl development is on-going, I am available to start immediately.
Describe how your grant can be evaluated. For instance, code will be merged in Perl tree, or a module will be released to CPAN with the specified features, etc.
Upon completion, RPerl v1.0 will be released on Github (CPAN will come a little later):
Who are you? What makes you the best person to work on this project?
I'm the President of Austin.pm:
I'm a repeat Perl entrepreneur:
I'm the CEO of Auto-Parallel Technologies, a Perl development startup:
http://www.autoparallel.com (new website coming soon!)
I've got an honors degree in Computer Science & Mathematics from Texas Tech University.
I'm also an avid Boy Scout leader and cane juggler with Circus Texas. (Not related to Perl!)
I instigated the creation of the Perl 11 movement, along with my co-conspirators Ingy dot Net and Reini Urban.