Gabor Szabo - Integrating Padre with Parrot and Rakudo

Title: Integrating Padre with Parrot and Rakudo

Name: Gabor Szabo

Grant Manager: Renée Bäecker

Duration: 3 months

Started: January, 2008

Amount Requested: $1500

Synopsis
Embedding Parrot to be used by Padre for syntax highlighting Perl 6 or any other language defined over Parrot or Perl 6.

Benefits to the Perl Community
Provide a text editor with syntax highlighting of Perl 6 that can be tweaked in Perl 6.

Having a text editor that can be extended in any of the languages that run on Parrot, including Perl 6 will allow call-tips, auto-completion and introspection to be supplied by the respective languages.

Sam Vilain wrote in his blog: ( http://vilain.net/index.php?q=node/69 by ) Allow support syntax highlighting, by attaching highlighting hints to a TGE grammar, effectively allowing you to write a parsing grammar at the same time as a highlighting mode

Effectively Padre will become a text editor and IDE that "runs on Parrot".

It can become one of the first customer facing applications running partially on Rakudo Perl 6.

Deliverables
Embedding Parrot in Padre using Parrot::Embed that lives in the ext/ directory of Parrot.

Simple Padre plug-in running on PIR and on Perl 6.

Syntax highlighting for PIR and Perl 6 using Parrot.

Call-tips showing optional parameters of a subroutines.

Integrated help for Perl 6 displaying help relevant to the code currently under the cursor.

Project Details
There is a Perl 6 syntax highlighter in the Pugs directory in pugs/src/perl6/STD_syntax_highlight written in Perl 5. First I'll attempt to create an add-on for Padre using this as syntax highlighter. As this code depends on perl 5.10 and I don't want to make 5.10 a dependency of Padre yet I'll write this as a plug-in of Padre so people can install if they already have 5.10.

As I was writing this proposal I have just managed to embed Parrot in Padre and write a simple plug-in in PIR, that runs on the embedded Parrot engine. This gives a good base to start off with the rest of the project.

A large part of the work will require help from the Parrot and Perl 6 design and development teams. For example Parrot::Embed will have to be further extended to support multiple namespaces and better interaction between the host Perl 5 and Parrot.

The call-tips for Perl 5 were added as a yaml file so they can easily decoupled from Padre and used by other projects. For Perl 6 this needs to be either a yaml file or integrated into Perl 6 making sure that we can have call-tips in several languages.

Project Schedule
I plan to begin the project immediately and finish it within 3 months.

Bio
Gabor Szabo has been programming Perl since 1995 and teaching it since 2000. He has several modules on CPAN and has contributed to many other modules. Gabor is the primary author of Padre.

See also http://szabgab.com/