Grant Proposal: RPerl Operators
Sat, 19-Sep-2015 by
Makoto Nozaki
edit post
_We have received the following grant application "**RPerl Operators**". Please leave feedback in the comments field by September 27th, 2015. If your comment does not appear in 24 hours, contact me at tpf-grants-secretary at perl-foundation.org. As we have four proposals on RPerl this time, please use [RPerl User Documentation proposal](http://news.perlfoundation.org/2015/09/grant-proposal-rperl-user-docu.html) if your comment is about RPerl in general and not specific to this proposal._
* * *
# RPerl Operators
- Name:
Will Braswell
- Amount Requested:
USD 1,200
## Synopsis
RPerl v1.1 has been released with a working N-body benchmark, as promised.
Thanks to RPerl, we are now able to run N-body at the speed of C++,
which was claimed by many in the Perl community to be impossible.
This grant proposal is to create 20 additional operators in RPerl.
## Benefits to the Perl Community
RPerl v1.1 is lacking the full power of accessibility to all Perl 5 operators.
The Perl community will benefit by increasing the usefulness and general-
purpose applicability of the new RPerl optimizing compiler.
## Deliverables
Deliverables for this grant proposal are:
1. Implementations of 16 Perl operators in high-speed mode, already chosen
2. Implementations of 4 Perl operators in high-speed mode, as chosen by TPF
3. Documentation and usage examples of all 20 operators
## Project Details
In RPerl, high-speed mode is currently defined as CPPOPS\_CPPTYPES mode, as
differentiated from the slower PERLOPS\_PERLTYPES and CPPOPS\_PERLTYPES modes.
This grant proposal only covers creation of operators in CPPOPS\_CPPTYPES mode.
I've already implemented some of the basic operators in CPPOPS\_CPPTYPES:
https://github.com/wbraswell/rperl/blob/master/lib/RPerl/Operation/Expression/Operator/Compare/LessThanGreaterThan.pm
https://github.com/wbraswell/rperl/blob/master/lib/RPerl/Operation/Expression/Operator/Logical/Negation.pm
https://github.com/wbraswell/rperl/blob/master/lib/RPerl/Operation/Expression/Operator/Math/AddSubtract.pm
https://github.com/wbraswell/rperl/blob/master/lib/RPerl/Operation/Expression/Operator/Math/IncrementDecrement.pm
https://github.com/wbraswell/rperl/blob/master/lib/RPerl/Operation/Expression/Operator/Math/MultiplyDivideModulo.pm
https://github.com/wbraswell/rperl/blob/master/lib/RPerl/Operation/Expression/Operator/Math/Negative.pm
https://github.com/wbraswell/rperl/blob/master/lib/RPerl/Operation/Expression/Operator/Math/Power.pm
https://github.com/wbraswell/rperl/blob/master/lib/RPerl/Operation/Expression/Operator/NamedUnary/Scalar.pm
https://github.com/wbraswell/rperl/blob/master/lib/RPerl/Operation/Expression/Operator/String/Concatenate.pm
I've already got PERLOPS\_PERLTYPES versions with CPPOPS\_CPPTYPES stubs for:
https://github.com/wbraswell/rperl/blob/master/lib/RPerl/Operation/Expression/Operator/Bitwise/And.pm
https://github.com/wbraswell/rperl/blob/master/lib/RPerl/Operation/Expression/Operator/Bitwise/OrXor.pm
https://github.com/wbraswell/rperl/blob/master/lib/RPerl/Operation/Expression/Operator/Bitwise/Shift.pm
https://github.com/wbraswell/rperl/blob/master/lib/RPerl/Operation/Expression/Operator/Compare/EqualNotEqual.pm
https://github.com/wbraswell/rperl/blob/master/lib/RPerl/Operation/Expression/Operator/List/Range.pm
https://github.com/wbraswell/rperl/blob/master/lib/RPerl/Operation/Expression/Operator/Logical/OrXor.pm
https://github.com/wbraswell/rperl/blob/master/lib/RPerl/Operation/Expression/Operator/Logical/And.pm
https://github.com/wbraswell/rperl/blob/master/lib/RPerl/Operation/Expression/Operator/Named/Cosine.pm
https://github.com/wbraswell/rperl/blob/master/lib/RPerl/Operation/Expression/Operator/Named/Keys.pm
https://github.com/wbraswell/rperl/blob/master/lib/RPerl/Operation/Expression/Operator/Named/Length.pm
https://github.com/wbraswell/rperl/blob/master/lib/RPerl/Operation/Expression/Operator/Named/Pop.pm
https://github.com/wbraswell/rperl/blob/master/lib/RPerl/Operation/Expression/Operator/Named/Push.pm
https://github.com/wbraswell/rperl/blob/master/lib/RPerl/Operation/Expression/Operator/Named/Sine.pm
https://github.com/wbraswell/rperl/blob/master/lib/RPerl/Operation/Expression/Operator/Named/Sort.pm
https://github.com/wbraswell/rperl/blob/master/lib/RPerl/Operation/Expression/Operator/Named/Values.pm
https://github.com/wbraswell/rperl/blob/master/lib/RPerl/Operation/Expression/Operator/String/Repeat.pm
In addition to the 16 operators listed above, I will implement an additional
4 operators to be chosen by TPF or delegated to the Perl community for a vote
of some kind. The only exception are operators which are not currently
supported by RPerl, which will be replaced with another supported operator.
## Inch-stones
1a. Copy PERLOPS\_PERLTYPES generator code into CPPOPS\_CPPTYPES stub subroutine
1b. Study existing C++ operators
1c. Create new RPerl code to generate C++ output code from Perl input code
1d. Create tests of operator output, if not already done
2a. Copy RPerl template code into empty Perl module file
2b. Implement PERLOPS\_PERLTYPES code generation subroutine
2c. Study existing C++ operators
2d. Create new RPerl code to generate C++ output code from Perl input code
2e. Create tests of operator output
3a. Create POD within each of the 20 operators' Perl module file
3b. Integrate POD with RPerl documentation, if TPF approves user doc grant
## Project Schedule
I will begin work immediately upon granting.
I expect work to take approximately 30 to 60 days.
## Completeness Criteria
I will release a new version of RPerl to CPAN with support for the operators.
## Bio
I am the creator and lead developer of RPerl.
I've spent the last 32 months working on RPerl without the support of TPF.
I would like that to change now.
Comments (3)
As someone whoes programmed in Perl this is a great idea and needs to be done!
I've been reading up on RPerl for some days now, and mailing with Will Braswell, mostly about the documentation and examples. Last YAPC::NA in Salt lake City, I got a demo of what he was doing.
If, thanks to this grant, RPerl can handle more operators, and still has the tremendous speed increase that Will claims, both Perl 5 and Perl 6 might very well benefit.
I think this proposal is promising and I hope TPF will fulfill this grant.
Thank you ladies, for your love and continued support for RPerl!
And yes, Ms. van Dijk is correct, adding these new operators will still allow us to keep our same ultra-fast speed we have now.
Thank you TPF, for approving and awarding this grant proposal!