Grant Proposal: RPerl Operators

3 Comments

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 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.

3 Comments

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!

Leave a comment

About TPF

The Perl Foundation - supporting the Perl community since 2000. Find out more at www.perlfoundation.org.

About this Entry

This page contains a single entry by Makoto Nozaki published on September 19, 2015 11:00 PM.

Grant Proposal: RPerl Alioth Benchmarks, Part 2 was the previous entry in this blog.

Grant Proposal: RPerl Medium-Magic Grammar is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.

Pages

OpenID accepted here Learn more about OpenID
Powered by Movable Type 6.2.2