GSoC/GCI Archive
Google Summer of Code 2010

The Perl Foundation

Web Page:

Mailing List:

The Perl Foundation is dedicated to the advancement of the Perl programming language through open discussion, collaboration, design, and code. The Perl Foundation is a non-profit, 501(c)(3) organization based in Holland, Michigan.


  • A PAST Optimization Framework for Parrot Currently, very few, if any, optimizations are automatically applied by Parrot to code running on it. Any optimizations must be implemented in the specific compilers or at a low level, resulting in some compilers, such as Not Quite Perl, lacking even very useful optimizations such as tail call elimination. With a simple common framework for easily implementing optimizations, it will be much easier for HLLs on Parrot to be optimized more powerfully and perform more quickly.
  • Adding support for binary data in Rakudo Currently in Rakudo (the most actively developed Perl 6 implementation), when you try to open a file which happens to contain non-UTF-8 data, it dies with "Malformed UTF-8 string". The project aims to fix this, as well as add support for the Buf type to Rakudo. The Buf type in Perl 6 is slated to be able to hold arbitrary binary data.
  • Ctypes for Perl Using shared libraries from Perl should be as easy as stating the library and function you want, and letting 'something' take care of the rest. That something is a simple but powerful foreign function interface module, akin to Python's ctypes. Like the Inline:: family, a ctypes-style module would save perl authors from having to write and compile, but going further, would enable the wrapping of external libraries using Pure Perl instead of C.
  • Hybrid Threads for Parrot Modern programming systems need to provide support for both parallel execution on multiprocessor systems and concurrent programming style to model naturally concurrent problems. This project will implement a threading system for Parrot that will allow a large number of logically concurrent tasks to execute efficiently on multiple physical processors by multiplexing many concurrent tasks to a smaller set of OS threads.
  • Implementing an Instrumentation Tool for Parrot VM for GSoC 2010 Implement an instrumentation tool by embedding Parrot and providing hooks through the use of a custom runcore. In doing so, we can dynamically peek into the execution of Parrot op-codes. This is in the vein of current instrumentation tools such as DynamoRIO and DTrace, with a twist. By utilising another Parrot interpreter, instruments can be written using PIR.
  • Improvements to the NCI system and LLVM Stack Frame Builder Improve the NCI framework by linking to a commonly used cross platform library that supports foreign function calls, libffi. Also, develop a LLVM based stack frame builder for the Parrot Virtual Machine. The LLVM libraries can let you effectively build dynamically generated code and has a number of built in optimizations it can run on the code to improve its efficiency.
  • NFG and single-representation strings for the Parrot Virtual Machine. This proposal aims to implement NFG for Parrot strings, as specified on PDD 28 "Strings". This was explicitly designed as a way to get strings that can represent the full Unicode character repertoire without resorting to variable-byte encodings and prevent expensive look ahead en every operation.
  • Releasing Mildew and SMOP on CPAN Release Mildew (a Perl 6 compiler) and SMOP (a Perl 6 runtime) on CPAN. Simplify the installation of Mildew and SMOP by making it use the standard toolchain and droping the dependency on scons and ghc.