The Perl Foundation is pleased to announce the second Hague Grant. It is being awarded to Jerry Gay, core Parrot hacker and 'Rakudo' Perl 6 implementation hacker. The details of Jerry's grant proposal are below. The work will be to define the S19 synopsis pertaining to command-line interaction with Perl 6, and to provide a Rakudo implementation of the synopsis.
Jesse Vincent, the project manager of the Perl 6 effort, has agreed to volunteer as the grant manager for Jerry's grant. Jesse will provide updates to TPF on Jerry's status and will judge acceptances of the various milestones and deliverables. Larry Wall has also agreed to act as the acceptor for the synopsis-definition deliverable of the grant.
We look forward to Jerry's success on this grant project and we are proud to be able to support him in this work.
The details of the grant follow.
Name: Jerry Gay
Project Title: Synopsis 19 - Command Line Syntax, Design and Implementation
Perl 6 won't feel like Perl until it's callable from the command-line
with a well-defined, practical syntax. This proposal aims to deliver a
design and implementation of the Perl 6 command-line syntax. This project
implements a core component of Perl 6--one which will define how users
interact with Perl 6 every day.
Benefits to Perl 6 Development:
The Perl 6 specification requires the development and testing of
Synopsis 19 - Command Line Syntax (S19). The release of any Perl 6
implementation, including Rakudo Perl, will require an implementation
of this Synopsis. This project will provide the required Synopsis, and
an implementation for Rakudo.
D1. Documentation of Perl 6 command line syntax working draft in
Synopsis form (Synopsis 19). This preliminary document will be
reviewed by the design team and by the community via at least one
round of feedback. The Synopsis may be revised multiple times before
final approval; these revisions are outside the scope of this item.
D2. Implementation of a set of tests covering main design points of
Synopsis 19. These tests are meant to aid in the development of
the design laid out in the Synopsis--specifically to uncover edge
cases and ambiguities. The tests are not meant to provide full
coverage of the Synopsis. The tests will reside in the Pugs
repository, with the official Perl 6 tests in the t/spec/ directory.
D3. Implementation of a command line parsing library for Parrot.
This library will be based on Synopsis 19, and much as the Parrot
Grammar Engine (PGE) is based on Synopsis 5, this library will be
factored in such a way as to make it useful for Parrot, Rakudo,
and other high-level languages targeting Parrot. To meet this need,
the library will become part of the Parrot Compiler Toolkit (PCT).
D4. Implementation of a subset of the Perl 6 command line syntax in
Rakudo, following the design of Synopsis 19, and based on the Parrot
command line parsing library (D3). This library will be customized to
support Perl 6 syntax, and I suspect it will be written in Perl 6 or
NQP. Implementation of command line options will be limited to those
which may be created using features available in Rakudo at the time of
implementation. Tests addressing these features (D2) will be added to
the suite of regression tests run by Rakudo.
D5. Implementation of the Perl 6 MAIN subroutine semantics, as given
in Synopses 6 and 19, and other relevant passages.
D6. Timely reports on implementation progress (probably weekly).
I will pull ideas from various sources during the course of this project,
* Perl 5 command line syntax and documentation
* Perl 5 module Getopt::Long, Getopt::Euclid
* Perl 6 Synopsis 6, section entitled "Declaring a MAIN subroutine"
* Pugs command line syntax
* Glasgow Haskell Compiler command line syntax
* Dynamic languages including: Java, Python, Ruby
A key focus area is determining a way for command line options to be passed
through the Perl 6 compiler to an underlying implementation system, such as
The project will start as soon as possible and continue into 2009. Three
major milestones, described below, define the remainder of the project.
Status reports (D6) will be ongoing.
M1. Completion of the working draft of Synopsis 19 (D1),
and the set of related tests (D2).
Submit interim report.
M2. Completion of a Parrot library for parsing command-line syntax (D3).
Submit interim report.
M3. Perl 6 command-line parsing library for Rakudo (D4),
a MAIN subroutine for Rakudo (D5), and updated tests and docs.
Submit final report.
At the completion of each milestone, I will provide a report with
a description of accomplishments. Additionally, weekly status reports
will be made, consistent with D6.
At the completion of this grant, I will propose a presentation on
this topic to various conferences in 2009, in order to introduce
the command-line syntax to Perl 6 users. To familiarize Parrot high-
level language developers with the Parrot command-line syntax library,
I will add to the existing PCT documentation.
Public Repository and License:
Artifacts including source code and documentation will reside
in repositories managed by The Perl Foundation or Parrot Foundation.
Artifacts including Perl 6 test suite files will reside in the Pugs
repository. Copyrights will be held by The Perl Foundation or
Parrot Foundation as appropriate. All work will be licensed under
the Artistic License 2.0.
I am a core committer and project team member for the Parrot
virtual machine and President of Parrot Foundation. I am also a
developer for Rakudo Perl (Perl 6 on Parrot) and a participant in
the Perl 6 design process. I have a broad and deep understanding of
Parrot and Rakudo internals and I've fixed more bugs than I've caused.
This amount is derived from a nominal and estimated 60% time allocation
over 4 months at a rate of USD $5000 per month. Note that actual
payments are made based on completion of milestones and deliverables,
with no more funding for work and time spent beyond 2.4 real man-months nor
less funding for work and time spent under 2.4 real man-months.
Country of Origin:
Okay to publish proposal? :