develooper Front page | perl.perl5.porters | Postings from September 2010

proposal: Fixing Perl 5 core bugs

Thread Next
September 8, 2010 03:27
proposal: Fixing Perl 5 core bugs
Message ID:
=head1 Fixing Perl 5 core bugs

=over 1

=item Name:

Andrew Main (Zefram)

=item Email:


=item Amount Requested:



=head2 Synopsis

Following in the footsteps of Dave Mitchell's productive bugfixing grant,
I propose that the TPF fund me to spend a month full-time fixing hard
Perl 5 core bugs.

=head2 Benefits to the Perl Community

As has been discussed on perl5-porters, Perl 5 has a large backlog
of non-trivial bugs, which tend not to get worked on.  The volunteer
core hackers (me included) tend to fix only the relatively easy bugs,
reserving most of our efforts for exciting new features.  This seems to
be psychologically inevitable for spare-time work, and is exacerbated
by the daunting size of the backlog.

With funding, I would be able to concentrate specifically on core bugs
for a substantial block of time.  This would make it possible to fix the
unappealing bugs that are outside the range of a weekend of volunteer

=head2 Deliverables

Due to the focus on difficult bugs, the primary deliverable for
this project is time spent productively, not specific functionality
implemented.  The particular bugs to be worked on are to be selected
by me during the project.  (More discussion in L</Project Details>.)
The tangible results of the time spent will be core patches, RT ticket
closures, and messages logged against RT tickets.  The overall extent
of them should be commensurate with the time spent.

At the time of writing, I do not have a commit bit for the core.
This is attributable to me being a relative newcomer to core hacking.
If I am supplied with a commit bit, the core patches resulting from
this project will ordinarily be committed directly by me.  If not,
they will instead be posted by me to perl5-porters.  Either mechanism
is workable for the purposes of this project.  All core patches will
of course be licensed under the standard terms for the Perl 5 core.
RT ticket closures would likewise be performed directly by me if I have
the requisite permissions, but doing so is not essential to this project.

In addition to the direct deliverables, I propose to make weekly reports
relating specifically to the grant (see L</Inch-stones>).

=head2 Project Details

I will spend 160 hours analysing and fixing Perl 5 core bugs.  In order
to use this time as productively as possible, I will concentrate on bugs
which (a) require my particular skills to fix, (b) are important, and
(c) are unlikely to get adequate volunteer attention.  However, work
on bugs not meeting these criteria is not ruled out: for example, after
fixing an important bug, it may turn out that the knowledge I have gained
there makes a less important related bug very easy to tackle, in which
case working on it immediately may be the most efficient use of my time.

The deliverable is based on time spent, rather than number of bugs fixed
or specific bugfixes, to provide the incentive and opportunity to work
on relatively complex bugs that may take considerable time to resolve.

In my choice of which bugs to work on, I will be open to influence
by the perl5-porters.  On an initial scan I've compiled the following
hitlist of likely targets of my attention:


=item #3305: Code blessed where it shouldn't.

=item #3306: DESTROY not called on code reference objects

=item #4289: bleadperl@7050 late evaluation of $&

=item #4346: "print (...) interpreted as function", but only sometimes.

=item #7020: die() a NOP after require()

=item #16235: local($^W) does not work correctly

=item #19135: string eval turns off readonlyness on lexicals

=item #24250: "return" required in some anonymous closures

=item #28824: signal handler can clobber $!

=item #36078: Newz() used gratuitously

=item #38854: memory leak occurs when a eval statement exits by a signal

=item #42260: power-of two differences in minus operation

=item #47467: $#- has bizarre value

=item #63540: bizarre closure lossage

=item #67432: Bitwise math for 54+-bit numbers is broken

=item #69939: eval "use $module" in Perl_call_sv() may cause segmentation faults

=item #70151: eval localises %^H at runtime

=item #74764: -E 'given( goto f ) { f: }' => crash


=head2 Inch-stones

Following the structure of Dave Mitchell's grant, I will provide weekly
reports to perl5-porters.  These will detail which bugs were tackled
during the week, how much time was spent on each bug, and the resulting
bug status changes.  This provides a convenient opportunity for feedback
from other core hackers, particularly regarding my choice of target bugs
and my productivity.

=head2 Project Schedule

The plan is for me to spend 160 hours on the project over the course of
four consecutive weeks, averaging 40 hours per week.  During this time
it will be my primary occupation.  If I have not spent 160 hours on it by
the end of four weeks, I will stop at that point, and the maximum payment
I can claim under the grant will be reduced pro-rata ($50 per hour).

I am employed full-time, so this project would take place during a
period of unpaid leave.  (This is the reason for the hard time limit
in the preceding paragraph.)  Scheduling is therefore dependent on
the agreement of my employer.  I have approval in principle for leave
to work on TPF grants.  Once the grant has been approved, I will seek
final approval from my employer for a specific period of leave.  I will
report the status of this to TPF.  If agreement cannot be reached on a
period that is mutually satisfactory to me, my employer, and the TPF,
then the project would be abandoned.  I expect to be available from the
start of 2011, at six weeks notice.

=head2 Completeness Criteria

By the nature of this project, there are no definitive deliverables that
mark the project as complete.  At the end of the project there should
be, in addition to reports, various core patches, closed RT tickets,
and messages logged against RT tickets.  A somewhat subjective judgement
is required of whether these adequately match the time that was spent.
However, any problem about how well the time is being spent should
become apparent as a result of the weekly reports (see L</Inch-stones>).
If the weekly reports have been accepted as showing satisfactory progress,
then a continuation of this progress in the final week of the project
would constitute satisfactory completion.

=head2 Bio

I am a software engineer with a penchant for correctness.  I have
been using Perl 5 since 1997, and it has been my primary programming
language since about 1999.  Prior to that my primary programming
language was C, which I have been using since about 1988.  I am
busy as a Perl 5 module author, with 54 distributions on CPAN
(L<>), 21 of them involving XS code.
Many of my recent works have been concerned with bending the semantics
of Perl code by op manipulation.

I have been reporting bugs in the Perl 5 core since 2000, and currently
rank third on the Perl5 Bug Summary leaderboard.  I have been patching
the Perl 5 core since 2007, providing a mixture of bugfixes (including
preventing lexical hints leaking between file scopes) and new features
(including the syntax plugins mechanism in 5.12).

My experience and aptitude make me one of the few who are both fit to work
on deep C aspects of the Perl 5 core and currently interested in doing so.


Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About