develooper Front page | perl.perl5.porters | Postings from October 2013

NWCLARK TPF grant report #105

Thread Next
From:
Nicholas Clark
Date:
October 3, 2013 13:50
Subject:
NWCLARK TPF grant report #105
Message ID:
20131003135038.GM4940@plum.flirble.org
[Hours]		[Activity]
2013/09/02	Monday
 0.50		RT #116118
 1.00		RT #119123
 0.50		atoi (match-vars-in-mg_len)
 1.00		reading/responding to list mail
=====
 3.00

2013/09/03	Tuesday
 0.25		Pod, perltoc
 1.00		reading/responding to list mail
=====
 1.25

2013/09/04	Wednesday
 1.25		Peek.t
 0.25		RT #115928
 0.50		RT #117265
 0.25		RT #119413
 2.25		bisect.pl
 0.25		process, scalability, mentoring
 2.25		reading/responding to list mail
 0.25		runperl
=====
 7.25

2013/09/05	Thursday
 0.25		RT #115928
 0.25		RT #119599
 0.25		RT #17474
 0.50		RT #43819
 0.25		RT #84486
 0.50		bisect.pl
 2.75		defines for the glue factory
 0.50		dl_dld.xs
 1.50		reading/responding to list mail
=====
 6.75

2013/09/06	Friday
 0.25		HAS_QUAD
 1.50		RT #115928
 1.25		RT #119635
 0.50		RT #119635 (qsort)
 1.00		reading/responding to list mail
=====
 4.50

Which I calculate is 22.75 hours

This week was consumed with a lot of small tasks.

Brian Fraser spent quite a bit of time (and sanity, I fear) figuring out which
uses #define and #ifdef in the code looked like they belonged to the computer
equivalent of the zombie apocalypse, writing up his findings in a message
titled "ifdefs and defines for the glue factory"

http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2013-09/msg00061.html

Andy, Merijn, Craig and others made useful comments on macros recognised, but
given the subject matter it's not surprising that most of the research
received no reaction. Hence I spent several hours chasing down all the other
unloved things, figuring out how we should proceed with each, to avoid
Brian's efforts being for nothing.


A rather more pleasing piece of history was revealed by another thread.  I
proposed that we deprecate and remove the quicksort implementation, keeping
just the mergesort. Mergesort has been the default sort algorithm since
v5.8.0, and grep.cpan.me suggests no working code on CPAN uses the sort
pragma to select qsort (let alone rely on its behaviour). The consensus was
that qsort can go (although we haven't done this yet). But more interesting
was that the author of our mergesort, John P. Linderman, participated in the
thread. He gave a very interesting description of how the mergesort he wrote
13 years ago is implemented, how it attempts to efficiently spot already
sorted data, and why it's probably actually slightly better than Python's
timsort. See the discussion in RT #119635 for all the details.


The final small thing of note this week is that the bisect tool now takes
test scripts as targets, and runs them with t/TEST

Previously you had to run it roughly like this

    .../bisect.pl -- sh -c 'cd t && ./perl TEST path/to/test.t'

to make a bisect work, because many of the test scripts exit 0 even if their
TAP reports test failures, whereas git bisect run requires a zero/non-zero
exit to determine "good" or "bad".

Now you run it as

    .../bisect.pl --target path/to/test.t

which is clearly a lot simpler. I implemented it as a target because the
alternative (implementing more special case logic in the handler for general
purpose test cases) looked to be both harder to implement and harder to
document.

Nicholas Clark

Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About