Version 17 (modified by whiteknight, 4 years ago)

+ANTLR backend

Google Summer of Code 2011: Welcome to Parrot!

Parrot has applied to be a mentoring organization for the Google Summer of Code program for the summer of 2011. In previous years Parrot has participated in a joint effort with The Perl Foundation (TPF). This year, we have applied individually.

This page will serve as a landing page for interested students and mentors to help plan and prepare for the summer program. Details about what prospective students can do right now, as well as lists of potential projects will appear on this page.

Mentors: Review the information on this page, including project proposals. Sign up as a prospective mentor for any projects you would be willing to help with. We would like to have a primary and a backup mentor for every project in this list. Anywhere you see the words "NONE" or "UNKNOWN" in the project idea listings below is your invitation to start filling in information. Project ideas with many empty fields will be deleted.

Students: Review the information here and start getting into contact with community members. Get involved! Don't wait for GSoC to begin, you can start getting involved with Parrot right now!

First steps

Getting your bearings

Get Involved!

Project Ideas

Put ideas for GSoC 2011 Projects here. Difficulty values are estimates, sometimes uninformed, on the scale of 1-5 where 1 is considered the easiest and 5 is considered the hardest to complete. These are only base-line estimates. A project proposal may opt to alter the scope of the project to make it more or less difficult to complete successfully. A successful project is one which can be completed and merged (if necessary) before or shortly following the end of the GSoC program.

Note that these project ideas are only suggestions. Students may propose ideas which are not listed here, or which are only loosely based on ideas mentioned here, and those proposals will be given full consideration.

When adding a new idea or modifying one, try to follow the existing format. Here's a template that you can copy+paste to insert a new idea:

<New Project Idea (Copy this template)>

  • Difficulty: <UNKNOWN>
  • Links of Interest: <NONE, please add some>
  • Possible Mentors: <UNKNOWN, please volunteer!>
  • Details: <NONE, add details inline, or link to a page that has them>
  • Expected Deliverables: <UNKNOWN, Please list what the deliverables will be>

Embed Parrot into Inkscape

  • Difficulty: <UNKNOWN (x/5)>
  • Links of Interest:  http://inkscape.org/
  • Possible Mentors: <UNKNOWN>
  • Details: <NONE>
  • Expected Deliverables: <UNKNOWN>

Bytecode Emitters for POST

  • Difficulty: 4/5
  • Links of Interest: <NONE, please add some>
  • Possible Mentors: <UNKNOWN, please volunteer!>
  • Details: Several languages compile down to an abstract syntax tree type called POST. POST is the last stage of analysis and transformation before output code generation. Update existing POST, or create a new POST library capable of outputting bytecode directly. You should not output PIR and rely on the PIR compiler to generate the bytecode. Emphasis for this project is placed on the ability to output working bytecode, not necessarily on the quality of the generated bytecode nor the throughput performance of the converters.
  • Expected Deliverables: A POST extension or POST replacement which is able to generate bytecode. Includes necessary unit tests and all necessary documentation.

TapTinder

  • Difficulty: <UNKNOWN>
  • Links of Interest:  milestone M5
  • Possible Mentors: <UNKNOWN, please volunteer!>
  • Details: <NONE, add details inline, or link to a page that has them>
  • Expected Deliverables: <UNKNOWN, Please list what the deliverables will be>

LALR Parser Generator

  • Difficulty: 5/5
  • Links of Interest: <NONE, please add some>
  • Possible Mentors: <UNKNOWN, please volunteer!>
  • Details: Create an LALR parser generator tool. The tool should be written in one of the lower-level languages which run on Parrot (PIR, NQP, Winxed, other) for maximum portability. The parser generator should take a language specification and compile it into an LALR parser in a manner similar to YACC/Bison. The generator parser likewise can be in any suitable language. For this project, a working LALR parser generator engine is more important than the ability to understand a huge number of input patterns and pattern modifiers.
  • Expected Deliverables: A working LALR parser generator capable of converting a language specification into an LALR parser. Necessary unit tests, examples, and documentation must be included.

Language Interop

  • Difficulty: <UNKNOWN>
  • Links of Interest: <NONE, please add some>
  • Possible Mentors: <UNKNOWN, please volunteer!>
  • Details: Examples to use different HLLs and to execute it as one program on top of Parrot. Calling a lua subroutine from Rakudo. How could the assembler- or byte-code from different HLLs be put together.
  • Expected Deliverables: <UNKNOWN, Please list what the deliverables will be>

POD parser

  • Difficulty: <UNKNOWN>
  • Links of Interest: <NONE, please add some>
  • Possible Mentors: <UNKNOWN, please volunteer!>
  • Details: Implement the transformation from the Perl6 POD specification (Synopsis 26 - Documentation) to LaTeX, man pages or text as a language with PCT. (should be to difficult and take more then 2-3 month, may be it could divided)
  • Expected Deliverables: <UNKNOWN, Please list what the deliverables will be>

New Parrot Debugger

  • Difficulty: 4/5
  • Links of Interest: <NONE, please add some>
  • Possible Mentors: <UNKNOWN, please volunteer!>
  • Details: Parrot needs a new debugger. There exists a toolset called "parrot-instrument" which can be used to insert introspection, analysis, and manipulation functions into Parrot internals. You may optionally (preferrably) use Parrot-Instrument as the basis for your new debugger or create a new one from scratch. A successful debugger will have the ability to set break-points on subroutines at the PIR and HLL level, set watchpoints on registers or individual PMCs, and introspect state information from a running program. The debugger should read information from annotations so that it can be used to work with various HLLs. Performance of code executing under the debugger is not a primary concern for the initial deliverable.
  • Expected Deliverables: A working debugger with the capabilities listed above. In addition, the successfull student should provide adequate unit tests, code examples, and documentation.

Subroutine-Level Profiler

  • Difficulty: 3/5
  • Links of Interest: <NONE, please add some>
  • Possible Mentors: <UNKNOWN, please volunteer!>
  • Details: Expand on parrot-instrument, build awesome tools on top of it, get it fully working again.
  • Expected Deliverables: <UNKNOWN, Please list what the deliverables will be>

Green Threads and Tasks

  • Difficulty: <UNKNOWN>
  • Links of Interest: <NONE, please add some>
  • Possible Mentors: <UNKNOWN, please volunteer!>
  • Details: <UNKNOWN>
  • Expected Deliverables: <UNKNOWN, Please list what the deliverables will be>

Thread-Safe Data Sharing Mechanism

  • Difficulty: <UNKNOWN>
  • Links of Interest: <NONE, please add some>
  • Possible Mentors: <UNKNOWN, please volunteer!>
  • Details: <UNKNOWN>
  • Expected Deliverables: <UNKNOWN, Please list what the deliverables will be>

Parrot Backend for ANTLR

  • Difficulty: 3/5
  • Links of Interest: <NONE, please add some>
  • Possible Mentors: <UNKNOWN, please volunteer!>
  • Details: Create a new code generation backend for ANTLR to produce parsers which run on Parrot. Target languages can be any language which runs on Parrot, although lower-level languages are preferred for performance and portability (PIR, NQP, Winxed, etc). The backend should be able to create working code for the full range of ANTLR features.
  • Expected Deliverables: An ANTLR code generating backend or plugin for ANTLR which "works". Includes all necessary unit tests, code examples, and documentation.