Reini Urban - Perl Compiler

Title: Perl Compiler

Name: Reini Urban

Grant Manager: unmanaged

Duration: Until March 2011

Amount Requested: $1000


Fix most of the remaining perl compiler, i.e. B::C, B::CC, B::Bytecode bugs.

Improve documentation a bit.

Maintain the planned site.

Benefits to the Perl Community

A working compiler.

Faster startup time.

Optionally faster run-time if the B::CC optimizations work out as

parrot? I've worked with them. I gave up. Better a half-ass perl5
compiler now, than the ongoing ... with parrot/perl6.


Extend the testsuite reasonably - but less is more. The full author
tests for all tested perls on all platforms needs 2 days.

Fix the existing SKIPs and TODOs

Testsuite passing on my main platforms cygwin, MSWin32, debian5,
centos5, freebsd7, solaris10.

More fun, less headaches


I don't think I need this.

See below at Project Schedule. From now until end of March 2011,
the next surf-season.

Project Details

I successfully ported the abandoned compiler to 5.10 and blead and
fixed most of the old bugs, so that the tests pass now on most

But there's more todo. Finding bugs cannot be detailled here. In the
core suite are some, in the top100 modules are some, the community
will come up with more. Some are known, some not yet. So far all
found bugs could be fixed within 1-2 days, sometimes they are just
hard to catch.

  1. Adjust the perl core suite and find limitations (runperl issues) vs bugs
  2. Check modules
  3. Check user reports
  4. Check weird platforms, compilers, programming tricks.

CC bugs

Well, some bugs are run-time limitations which will require run-time
solutions. The sortcv bug CPAN #53536 is easily understood but hard
to fix. Will need at least 2 days concentration on it.

Planned CC Optimizations

Static initialization of readonly data: SVs, AVs, HVs.

-fcog for strings (copy on grow by using a custom destructor)

Fill in missing Opcodes flags for most optimisable ops. Maybe even automatically.

Check possible type declarations with Devel::TypeCheck, MooseX::Types,
attributes and such.

I've finished 50% of Malcom's Todo during the winter surf-holidays,
and fixed 90% of Malcom bugs in the last year so I'm confident.

I've already got a sponsor for my conference travel expenses. A tip:
They could be persuaded to sponsor this grant also :) I<(cPanel)>

Project Schedule

During summer-time I prefer surfing over coding to keep emotional
stability in the coorporate environment. Winter 2009-2010 was very
productive, because I got a kick by cPanel who needed it.

For the next coding season I might need further kicks, a mini-grant
like this might be enough.

2010: Find and fix all remaining bugs. I suspect there are still 5-6
major ones.

2010: Faster testsuite. Now: 8 min user - 40min author - 2 days all perls + plats.

Until March 2011: CC type and sub optimisations

Later (not part of this proposal)

Until 2012: CC unrolling => jit within perl (perl -j)


Reini Urban, living in Graz, Austria. Born 1963, pretty old, yes.

Born Lisper, but I've been writing perl programs since 1992 and
released my first module to CPAN in 1995, the perl5.hlp file for
Windows, created by some cygwin maintainer (perl, parrot,
postgresql, clisp, ...) for a couple of years, and several B::*

I work for a large HW+SW company (>2000 developers), 8-16 o'clock.

Since nobody is able to help me with the compiler it looks like I'm
alone. Hopefully this will change! I even had to write my own
Debugger. Yes, I'm aware of trucks. Surfing is not risky at
all. Bycycling is more dangerous.