This Week on perl5-porters (2-8 October 2006)

David Landgren <[email protected]> Thu, 12 Oct 2006 14:16:04 +0200
Newsgroups gmane.comp.lang.perl.perl5-summary
Organization The Lusty Decadent Delights of Imperial Pompeii
Message-ID <452E3204.8010906__22370.893325615$1160655734$gmane$org@landgren.net>
This Week on perl5-porters - 2-8 October 2006

Topics of Interest

   "I do not know what crazy things people have done in code I cannot
   see. But people are creative in strange ways, and I cause them enough
   trouble already by incorporating changes with unintended behaviour
   changes." -- Nicholas Clark, on why it pays to be cautious.

Outdated modules in blead

   Andreas König noted that there were eight modules in blead that had
   more recent counterparts on CPAN, mentioning that one of them,
   "Text::Soundex", was intentionally neglected.

   The reason for the neglect is that nobody cares about it any more, but
   since it is in core, it cannot be removed. Those people who do need it
   know enough to go to their local CPAN mirror and pick up the speedier
   XS-based version. H.Merijn Brand thought that some effort should
   nonetheless be made to keep "blead" and CPAN synchronised.

   Steve Peters brought the most of listed modules up to date.

     http://xrl.us/r7u3

Upgrade (or not) to threads-shared 1.03

   Dave Mitchell went ballistic over the application of this patch, due
   to its gratuitous whitespace changes, as this makes it harder to see
   what the the true changes are. Similarly, people chasing down bugs in
   the future will stumble each time they have to traverse it.

     Stop fiddling with the bloody whitespace
     http://xrl.us/r7u4

Overloading thread stringification

   Jerry D. Hedden asked what the porters thought of overloading "" in
   the "threads" module to return the thread identifier, since it would
   make some constructs prettier.

   John Peacock and Nicholas Clark didn't like the idea, as it seem to
   admit the possibility of breaking programs that relied on the existing
   behaviour (getting back a string like "threads=SCALAR(0x209e270c)").

   Jerry, still not quite getting it, asked if that meant that the
   possibility of incompatibility ruled out any chance of improvement. So
   he floated the idea of an addition on the CPAN module that would never
   be backported to "maint", but that would be akin to a code fork.

   Gisle Aas disliked it as well. He had been down this track many years
   ago, and has since come to the conclusion that this sort of "feature"
   eventually winds up causing more problems that the ones it was
   supposed to solve.

   Johnathon Stowe summed up the problem neatly, and it is this: no one
   can guarantee that there is no code anywhere that does something like

     if ("$thread" =~ /^threads/)

   regardless of whether this is a desirable way to test for an object
   being a thread. With that in mind (and this is really what the
   backwards compatibility game is all about), there was little chance
   that the patch would be applied. Since behaviour is being changed,
   regardless of what merit or value it has, new behaviour can only be
   activated by asking for it.

     http://xrl.us/r7u5

   Despite the arguments against the proposal, Jerry went ahead and made
   the change. Rafaël declined to integrate it into "blead". Jerry
   finally admitted defeat, and said he'd add an "import()" verb to
   activate the change.

     http://xrl.us/r7u6

   Which in fact, he did. Applied as change #28958.

     And they all lived happily ever after, kthnx
     http://xrl.us/r7u7

"regmatch()" restructuring complete

   Dave "Leakbane" Mitchell announced that his restructuring work on
   "regmatch()" was now complete. Now no more recursion fakery is needed,
   all backtracking is now done via a single backtracking state stack.
   Dave was quite pleased to see that the amount of state required had
   been shrunk from 72 bytes down to 44 bytes (on 32-bit systems).

   Dave posted the large comment that explains the matching strategy for
   we other mere mortals to ponder. Yves Orton was pleased as Punch,
   since he realised this would simplify the things he wants to
   implement.

     Affairs of state
     http://xrl.us/r7u8

patch 28900 breaks libwww

   Andreas König noticed that change #28900 causes "HTTP::Daemon" to
   fail, specifically, a slice of "stat _" gets garbled.

   The odd thing was that change #28900 was one of Yves's patches for the
   regular expression engine. Neither Yves nor Rafaël Garcia-Suarez could
   figure out why that would be, but Andreas was certain, postulating
   some weird side-effect.

   It turns out to be a poor assumption in the "HTTP::Daemon" code, which
   assumed that "_" (the underscore filehandle) is lexically scoped
   (which in fact, it never was). So if you call a subroutine and then
   access it afterwards, it's possible that the subroutine will have used
   it for its own purpose. And that's exactly what happened here.

   Yves was relieved, but thought about what he could do to minimise the
   impact in the future.

     Action at a distance
     http://xrl.us/r7u9

Locale-dependent testing

   John Peacock reported having worked on "version" objects in the
   presence of locales, where commas may be used for decimal points
   instead of the anglo-saxon period. The code was easy, (since Rafaël
   had done most of the heavy lifting), but John was wondering how to
   test it. He asked for a show of hands (off-list) to see who had the
   'de_DE' locale present on their machine.

   H.Merijn Brand noted that he tended to delete all non-crucial locales
   from his machines, since localised software tended to enjoy installing
   their documentation in all the locales on the machine for which it had
   a corresponding version. This can lead to rampant disk space
   consumption, and even require reboots, should the software in question
   be kernel-related.

   Jarkko Hietaniemi suggested setting up a list of all the locales in
   the world that used non-period decimal points, and iterating over them
   until one pops up on the machine running the tests. John already had
   similar code that does this, so he promised to whip up a development
   version of "version", and get people to smoke it for a while and see
   what comes out.

     http://xrl.us/r7va

"Data::Dumper" might be faster now

   Nicholas Clark tweaked "Data::Dumper" slightly to reduce the amount of
   "realloc()"s being performed. The results were quite surprising. Andy
   Lester acquired the necessary commit bits to update the CPAN version.

     Dumpin' goodness
     http://xrl.us/r7vb

Patches of Interest

cflags.SH: rethink of the gcc "-std=c89" and "-pedantic"

   Jarkko and H.Merijn continued to work on this, getting to the stage
   where it was good enough to be applied.

     http://xrl.us/r7vc

Named captures in regular expressions

   Yves Orton delivered a first cut at implementing named captures in
   Perl. This allows the following:

     'falange' =~ /(?<end>....$/ and print $+{end} # prints "ange"

   This comes in very handy when you have lots of nested capturing
   groups, since you no longer have to count parentheses, nor do you have
   to renumber your $1, $2, $3, ... when you insert a new capturing group
   somewhere in the middle.

   H.Merijn Brand thought that this was so cool that it was nearly enough
   all by itself as being sufficient reason to upgrade Perl.

   The thread became sidetracked into improvements for Johan Vroman's
   "makepatch" program. After a number of suggestions from Yves and Dr.
   Ruud, Johan promised to release a new version.

     http://xrl.us/r7vd

   Yves merged his and Dr. Ruud's patch into a single metapatch for
   "makepatch".

     http://xrl.us/r7ve

Watching the smoke signals

Smoke [5.9.4] 28908 FAIL(XF) linux 2.6.17-1.2187_FC5 [fedora] (i686/1 cpu)

   Steve Peters smoked a build with a recent gcc compiler and gouts of
   oily black smoke poured out of the vents. Jarkko interpreted this as
   meaning the gcc has become more aggressive in its ANSI conformance
   checks. That's the good news. The bad news is that the code base uses
   the non-ANSI "long long" datatype, for 64 bits of goodness. Jarkko was
   hoping that there was some way to placate gcc over this minor
   transgression.

     Maybe if we slaughtered a chicken
     http://xrl.us/r7vf

New and old bugs from RT

perl v5.7.0 +DEVEL8481 on i86pc-solaris-64int 2.9 (#5281)

   Steve Peters reasoned that this bug had been fixed, but looking
   through the patches, could not determine which one was responsible.

     http://xrl.us/r7vg

"read", "fork" and "exit" mismatch file positions (#5999)

   The Solaris man page says it all: if you do I/O in a child process
   with the file descriptors inherited from the parent, you have to be
   very careful how the child exits, otherwise strange surprises await
   you.

   Aaron Sherman wondered if there was a way of squirrelling the
   necessary information away somewhere, so that the child would do the
   right thing in this event. Steve Peters cautioned that no one had sat
   down and worked through all the delicate intricacies of fork-related
   issues, especially when one considers threads at the same time.

     http://xrl.us/r7vh

fairly large regex optimization bug with 5.7.3 (#8835)

   Steve then returned to a regexp bug filed by Jeffrey Friedl, no less,
   and noted that the poor observed performance had been corrected due to
   Yves Orton's trie work.

   Yves noted that this was indeed the case, yet Jeffrey's analysis of
   the problem was indeed correct. There are a number of ways in which an
   alternation can be dealt with by the engine, and these work more or
   less efficiently depending on the pattern and the target (a bit like
   an SQL query planner). It turns out that when non-capturing
   parentheses "(?:...)" were added to the engine, the optimiser started
   making bad decisions, such as the one noted by Jeffrey.

   At first, Yves couldn't see an easy way to make this work without
   introducing additional overhead. Hugo van der Sanden thought that it
   might be worth examining end anchors and finite maximum match widths
   as well. He thought that a number of anchor-related optimisations have
   broken since the "\A", "\Z" and "\z" anchors were introduced, and by
   the same token that other new optimisations are now possible.

   Yves then discovered an cheap, fast, reliable fix to solve the
   problem.

     Pick all three
     http://xrl.us/r7vi

"File::Find" has issues with symlinks (#40417)

   Rafaël tried out the supplied patch for this problem, but noted that
   it broke three tests in "blead"'s regression tests. He asked for an
   updated patch (with more tests) to take this into account.

     http://xrl.us/r7vj

Halting perl with control-C sometimes causes crash on windows (#40445)

   Alex Davies filed a bug on the problem of Control-C causing core dumps
   on Windows. No takers for the moment, but Yves Orton mentioned this
   behaviour recently.

     http://xrl.us/r7vk

Possible pointer corruption? (#40450)

   Benjamin Carter showed how a small script with "redo", "eval" and @_
   would crash regularly. Dave Mitchell believes the underlying problem
   was fixed by change #24384.

     next and redo didn't restore PL_curcop
     http://xrl.us/r7vm

Installation of perl 5.8.8 on Linux RH 9 (#40453)

   Tasnim was running into problems building perl. Andy Dougherty
   suspected that there might be a problem with the config.sh file, and
   suggested that Tasnim delete the source tree and start afresh.

     http://xrl.us/r7vn

   Tasnim followed up with another bug report (#40454), but the porters
   didn't hear back from him after their suggestions were given

     So maybe it works
     http://xrl.us/r7vo

Memory leak with "MULTICALL" (#40469)

   Tassilo von Parseval found a memory leak, and thought that "MULTICALL"
   was responsible. No takers.

     http://xrl.us/r7vp

"glob" misbehaviour regarding special characters and spaces (#40470)

   David Serrano found what he thought was a problem in "glob" when files
   or directories contain spaces. No takers, possibly because everyone
   hates files and directories that contain spaces.

     Curse those Redmond boys
     http://xrl.us/r7vq

Perl5 Bug Summary

     8 more this week
     http://xrl.us/r7vr

     http://rt.perl.org/rt3/NoAuth/perl5/Overview.html

In Brief

   Terry Glanfield demonstrated a nifty bug in "Storable" to show that
   "Storable::freeze([$r, $r])" doesn't work. Adam Kennedy asked him to
   open a ticket on "Storable"'s CPAN RT queue.

     http://xrl.us/r7vs

   Steve Hay noticed that "threads" tests were hanging in Win32 smokes
   again, and wondered if changes #28922 and #28923 had anything to do
   with it.

     http://xrl.us/r7vt

   Dave Mitchell explained to Dave Rolsky that the 5.8 code for closures
   has a number of subtle bugs, and will probably always remain that way.

     But wait until 5.10
     http://xrl.us/r7vu

   Paul Green updated the Stratus VOS files.

     http://xrl.us/r7vv

   Now that it has been ANSIfied, the "zlib" library can be build with
   "g++".

     http://xrl.us/r7vw

   Alan Olsen pointed to a couple of threads on Perl Monks that dealt
   with "Exporter" problems, suggesting that the problems raised there,
   and the attendant solutions, should be included on the "Exporter"
   documentation.

     http://xrl.us/r7vx

   Paul Marquess added some C++ goodness to "List::Util".

     http://xrl.us/r7vy

   And Jarkko continued his own peculiar brand of compiler gymnastics.

     http://xrl.us/r7vz

   The One Laptop Per Child project no longer requires Perl. When you
   only have 500Mb of Flash memory to play with...

     ... every byte counts
     http://xrl.us/r7v2

About this summary

   This summary was written by David Landgren.

   Weekly summaries are published on http://use.perl.org/ and posted on a
   mailing list, (subscription: [email protected]). The
   archive is at http://dev.perl.org/perl5/list-summaries/. Corrections
   and comments are welcome.

   If you found this summary useful, please consider contributing to the
   Perl Foundation to help support the development of Perl.

-- 
Much of the propaganda that passes for news in our own society is given 
to immobilising and pacifying people and diverting them from the idea 
that they can confront power. -- John Pilger