Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Summer of Code Task Ideas

Benabik edited this page · 29 revisions

Put ideas for GSoC 2012 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>

PACT Bytecode Layer

  • Difficulty: 2/5
  • Links of Interest:
  • Possible Mentors: <UNKNOWN, please volunteer!>
  • Details: In short, develop a set of classes that can be assembled to and disassembled from a Parrot ByteCode (PBC) file. In detail, see the links above. Note that some of the other ideas listen below refer to this task.
  • Expected Deliverables: A set of classes to represent a bytecode file and the infrastructure to convert to/from PBC files.

New Assembly Language

  • Difficulty: 3/5
  • Links of Interest: <NONE, please add some>
  • Possible Mentors: <UNKNOWN, please volunteer!>
  • Details: Write a replacement for PASM, implemented in Winxed. The format should be extremely simple to parse and generate, and mirror the PBC format extremely closely. This may be done in combination with the PACT Bytecode classes above.
  • Expected Deliverables: A complete compiler able to generate at least simple PBC files from the new assembly format.

PACT Control Flow Graph

  • Difficulty: 4/5
  • Links of Interest: https://github.com/parrot/PACT
  • Possible Mentors: <UNKNOWN, please volunteer!>
  • Details: Write a framework to allow a compiler to generate code without worrying about details such as register allocation or bytecode positions by instead generating a control flow graph that refers to variables by name and positions in code as references to blocks. A solid understanding of compilers is required. The desired target to compile the CFGs to is the PACT Bytecode Layer above.
  • Expected Deliverables: A set of classes that can represent a program as a control flow graph and compile it to the PACT Bytecode Layer mentioned above.

Integrate 6model into Core

  • Difficulty: 3-5/5
  • Links of Interest: https://github.com/perl6/nqp
  • Possible Mentors: <UNKNOWN, please volunteer!>
  • Details: This is listed as a varying difficulty task due to the broad scope. The easier end of this idea is simply to have enough framework in Parrot that 6model objects can be built using only core Parrot. The high end is to have the core use the 6model framework more natively.
  • Expected Deliverables: A branch, ready to merge to master, that adds the new "6model" object model to core Parrot. Must include tests.

Replace libffi with dyncall

  • Difficulty: 4/5
  • Links of Interest:
  • Possible Mentors: <UNKNOWN, please volunteer!>
  • Details: dyncall is a library to make calling dynamic libraries simple across many platforms. It is better supported on platforms like Win32 than libffi, and has been tested with NQP and Rakudo for some time. A transparent replacement of the current FFI utilities with dyncall may be impossible, so a path for transition should be considered.
  • Expected Deliverables: <UNKNOWN, Please list what the deliverables will be>
Something went wrong with that request. Please try again.