This Week on perl5-porters (26 June-2 July 2006)

[email protected] (David Landgren) Fri, 07 Jul 2006 17:50:53 +0200
Newsgroups perl.perl5.porters,perl.perl5.summary
Organization The Lusty Decadent Delights of Imperial Pompeii
Message-ID <[email protected]>
This Week on perl5-porters - 26 June-2 July 2006

   "But having it match what perl6 will do is even more important than
   having it make perfect sense, IMO.", Yitzchak Scott-Thoennes,
   thinking about forwards compatibility.

Topics of Interest

"exit" and "die" in threads

   Following on from the threads 1.33 conversation last week that was
   given short shrift in last week's summary (sorry Jerry), Jerry D.
   Hedden put forward a proposal to nail down the semantics of what
   happens when a thread calls "exit" (and more to the point, what to do
   about everything that might want to clean up after itself). Throw in a
   "__WARN__" and/or "__DIE__" handler or two, and you're starting to
   talk about some serious fun.

   Jan Dubois and Rafael Garcia-Suarez commented on a number of points
   that Jerry raised, and while Rafael didn't agree with a few things, he
   was quick to point out that he didn't have any definite opinions one
   way or another, only that he wanted the best possible solution to come
   out the discussion.

   Dave Mitchell wondered whether it wouldn't be possible to add an
   "exit" method to the threads class, which would apply only to the
   thread, leaving the core "exit" to behave as usual.

     In through the out door
     http://xrl.us/ot6z

   Jerry the checked with the porters to see whether everyone agreed to
   what he thought threads should do. Jan and Liz Mattijsen gave their
   assent.

     http://xrl.us/ot63

   Just to be really certain, Jerry then posted a consensuality matrix,
   to get people who had made suggestions to sign off, or explain what
   they disagreed about. The moral of the story is that calling "exit()"
   as a thread method ends the thread, but calling "exit()" ends
   everything, modulo some differences in opinion over how much to warn
   about and when.

     fluid neon origami trick
     http://xrl.us/ot65

   Jerry went about modifying the threads module to do all this and ran
   into problems with too many "ENTER"s and not enough "LEAVE"s and the
   like. Jan said that he had no time to look closely, but eyeballed
   Jerry's code, sketched out a brief idea of what needed to be done.
   Jerry picked it up and ran with it, and straightened out all the
   problems.

     Balancing act
     http://xrl.us/ot68

   By the end of the week, Jerry had the new implementation up and
   running to his satisfaction, except for a nagging problem of "die"
   messages not being captured by the test harness, thus polluting the
   output.

     Weaving in and out
     http://xrl.us/ot7b

   Dave Mitchell listed the available possibilities:

     New month, new thread
     http://xrl.us/ot7e

The last remaining eval leaks

   After having looked over the stellar achievements of Dave Mitchell in
   removing "eval" leaks (caused when the "eval"'ed code fails), Nicholas
   Clark listed the remaining known leaks and asked for help in trying to
   identify the code paths taken (which would help in figuring out how to
   plug them).

   Dr. Ruud suggested taking a look at a tool called "MemProf". Dominic
   Dunlop answered the question with a question, and offered another leak
   to add to the list.

     Lost property
     http://xrl.us/ot7g

Did You Know This Worked?

   chromatic posted a short, sharp snippet of C, showing how easy it is
   to insert your own XS code into an existing op code, which opens up
   all sorts of interesting possibilities.

     http://xrl.us/ot7j

Is $A::::B::C a bug or feature?

   Continuing in the I-didn't-know-Perl-could-do-that vein, Chip
   Salzenberg discovered that this meant that "C" is inside package
   "::B::" which in turn is inside "A", and thought it was all rather
   evil.

   Sadahiro Tomoyuki traced the change down to somewhere between 5.004_04
   and 5.004_05, when "scan_words" in toke.c was modified to permit this,
   some time back in 2003. No-one appeared to remember the reason.

     http://xrl.us/ot7m

Questions regarding smart match and scalar upgrades in Perl 5

   Steve Peters was going over the new smart match ("~~") operator from
   Perl 6, that Robin Houston added to "blead" last year, and making sure
   it was well tested. He wrote a couple of tests, was puzzled by the
   results, and wondered whether the problem lay with the implementation,
   or with the documentation.

   Yitzchak Scott-Thoennes analysed Steve's reasoning, but no firm
   conclusions were made.

     http://xrl.us/ot7o

"Win32API::File" now in core

   Steve Hay announced that he had set things up to make "Win32API::File"
   a first-class dual-lifed module, in "blead" and on CPAN. He called on
   Jan Dubois to see whether Jan needed or wanted to do anything about
   "libwin32". There was discussion of moving files from
   "win32/ext/Win32" to "ext/Win32", which would ease the building of
   perl on Cygwin.

     It just got bigger
     http://xrl.us/ot7q

   Some discussion followed as to whether or not it would make it in time
   for 5.8.9.

     http://xrl.us/ot7r

Patches of Interest

vms.c - null termination of string missing.

   John E. Malmberg offered a short patch to correct a function that
   failed to append a null character to strings, which gave the
   underlying C library indigestion since it was expecting one. Rafael
   applied.

     Overshooting yourself in the foot
     http://xrl.us/ot7s

   Similarly, Jarkko Hietaniemi taught "cflags.SH" to scan the gcc
   warning flags only once:

     http://xrl.us/ot7t

Adding "splint" support

   Andy Lester set about adding "splint" (a "lint"-like tool) support for
   the porters. First off he created some embed.pl enhancements:

     http://xrl.us/ot7u

   And then followed with some Makefile "splint" support. It doesn't
   quite do everything that it should, and Andy called upon other people
   (hi Jarkko!) for help.

     http://xrl.us/ot7w

Dispatches from the "const"ing front

   Elsewhere in the code base, Andy tweaked DProf.xs to only compile a
   small static function if in fact it was actually required in the
   current configuration.

     http://xrl.us/ot7z

   He then turned his attention to ye cruftey olde mathoms.c. Just
   because they're obsolete doesn't mean they can't be squeaky clean.

     http://xrl.us/ot73

   And for dessert, Andy tidied up mg.c, by localising a variable here
   and there, and encapsulating "Perl_*" calls in macros.

     http://xrl.us/ot76

Removing an inconsistent close $fh

   Vadim Konovalov wanted to clean up win32/buildext.pl by removing an
   explicit "close", since just nearby is a similar "open" that also
   omits the "close".

   Yves Orton that a better idea was to rewrite the code, because it's a
   complete mess. (Amd it isn't particularly big, either).

     Innovations in brace placement
     http://xrl.us/ot78

Watching the smoke signals

Smoke [5.9.4] 28420 FAIL(FMm) OSF1 V5.1 (EV6/4 cpu)]

   Jarkko noted some failures had been cropping up in recent smokes, but
   didn't feel they were specific to the platform (Tru64) he was running.

   Nicholas Clark explained what the issues were. One was a simple test
   design issue that anybody with a reasonable grasp of designing tests
   should be able to figure out. Alas, no-one had volunteered to have a
   look. Jarkko asked for more background.

     Background check
     http://xrl.us/nf28

   The other issue was one of "eval" leaks, and Jarkko courageously
   deferred to Dave Mitchell as the likely fixer of that.

     Snot funny
     http://xrl.us/ot8b

Smoke [5.9.4] 28452 FAIL(F) MSWin32 WinXP/.Net SP2 (x86/2 cpu)

   Anno Siegel looked at one of Steve Hay's smokes, and wondered how one
   was supposed to interpret the results. H. Merijn Brand explained the
   general case, and Steve explained what was going wrong in this
   particular case.

     Inconsistent test results (between TEST and harness)
     http://xrl.us/ot8d

Smoke [5.9.4] 28456 FAIL(c) Solaris 2.10 (i386/1 cpu)

   H.Merijn looked at one of Abe Timmerman's failing Solaris smokes and
   traced it down to a change he'd made to "Configure" following on from
   a suggestion from Andy Dougherty. Andy thanked H.Merijn for the catch
   and noted that the entire hack was no longer needed anyway, since the
   original problem (one of 64-bit tests) has since been fixed.

     http://xrl.us/ot8g

New and old bugs from RT

problem on installing DBI module (#39527)

   Jan Dubois wrote to say that it is possible to install "DBD::Oracle"
   for ActiveState, at the price of also downloading many megabytes of
   Oracle libraries.

     But alas, only for 5.6
     http://xrl.us/ot8j

Pattern Match fails for specific length string (#39583)

   The code was corrected to handle this problem, and Yves folded the
   original bug report into the test suite. Yves then went on to rewrite
   the regexp display code, since, up until now, control characters have
   always been invisible, which makes it much harder to understand bug
   reports when control characters are present.

     She's lost control
     http://xrl.us/ot8m

nl_langinfo ==> Installation problems (#39625)

   Jaymax was having problems upgrading 5.8.2 to 5.8.8. "miniperl" was
   dying with a "Undefined symbol "nl_langinfo"" error. No takers as yet.

     http://xrl.us/ot8p

Using nonsensical key in %SIG should generate a warning (#39630)

   Nik thought that he would have saved a lot of time if perl complained
   about trying to use keys in %SIG that don't refer to valid signal
   handlers. Rafael thought that the problem might be because that the
   code in question was not, in fact, running with warnings enabled.

     Ask no questions, tell no lies
     http://xrl.us/ot8s

@ISA is not mentioned in "perlvar" (#39633)

   Sebastian Schmidt kicked off a long thread about whether or not @ISA
   should be referenced in "perlvar" or not. The main dissent was due to
   the fact that @ISA isn't particularly special as far as perl is
   concerned, it merely has lots of cultural conventions associated with
   it.

   Nevertheless, it was agreed that "perlvar" should in fact list all
   extraordinary variables, with "L<>" references to the appropriate
   pages if a better definition already existed elsewhere.

     http://xrl.us/ot8u

gcc 3.3 has problems with "__attribute__((unused))" (#39634)

   John Gardiner Myers was having some trouble compiling "Encode::Detect"
   with the GNU C++ compiler. Andy Dougherty realised that "blead" had
   already solved this problem and proposed a couple of patches to get
   things going. John, however, had another patch that he thought was
   better. After looking at it, Andy did too. He tidied it up slightly,
   and suggested that it was fit for inclusion to both "blead" and
   "maint".

     http://xrl.us/ot8y

Configure (on Solaris 64-bit) fails (#39636)

   Marc Esser was having trouble configuring perl on Solaris 10. After a
   getting Marc to try a few things, Andy Dougherty believed that he had
   isolated the problem in some incorrect hints for Solaris.

     http://xrl.us/ot82

filetest problem with "STDIN"/"STDOUT" on Windows (#39637)

   Paul Marquess reported that he had had some problems with not being
   able to apply "-r" to "\*STDIN" and get a sensible result back on
   Windows.

     Par for the course
     http://xrl.us/ot84

"perldoc -f waitpid" has wrong code example (#39639)

   Alexander Gernler mentioned that he thought the snippet explaining
   "waitpid" was wrong, and that it should use a "do/while" loop and not
   a "do/until" loop. Rafael agreed, and Salvador Fandiño and Dr. Ruud
   made a few suggestion about making the snippet truly cross platform
   (well, and least Unix and Windows).

     Zombie-free zone
     http://xrl.us/ot87

XSUB.h in perl v5.8.8 with gcc 3.4.6 (#39644)

   Jon V. had a weird compilation error. Rafael suspected that some
   errant header was defining a symbol standing in for a function or
   something, as a number.

     http://xrl.us/ot9a

"DynaLoader" corrupts %ENV (#39647)

   Daniel Pfeiffer as having trouble with a Solaris 2.10 box coming to
   grief with environment variables eating all available memory. Rafael
   had trouble reproducing it. So did Daniel for that matter.
   Unfortunately, there's not much to go on.

     http://xrl.us/ot9c

"require" and "List::MoreUtils" seg fault (#39650)

   Darin McBride had some code worked if "List::MoreUtils" was "use"d,
   but dumped core if it was "require"d. Rafael saw that the problem lay
   in the module building an iterator as a closure to traverse an array,
   but couldn't see off-hand why it should fail.

     http://xrl.us/ot9f

perl crashes with simple regex (#39652)

   Another back-tracking stack-blowing pattern.

     FITNR
     http://xrl.us/ot9h

Regex performance with UTF-8 strings (#39654)

   Peter J.Holzer discovered that taking a simple byte string and
   upgrading it to UTF-8 makes the match go three times slower when the
   target remains byte-encoded. Or, to put it another way, if the
   polarity of the target and regexp are reversed, performance is awful.

   Even Yves admitted to being scared at the amount of effort required to
   make the engine do the right thing. It's doable, and he's thought
   about it on occasion. Sadahiro Tomoyuki gave Peter a tip that helped
   in improve the performance in his particular case.

     Fruit at the top of the tree
     http://xrl.us/ot9k

   Yves went onto to explain far more than you ever wanted to know about
   UTF-8, and just how much effort it takes to move to the next character
   in a string. Juerd suggested a number of optimisations that, if
   implemented, may improve performance. Yves went down the list and
   pointed out that nearly all of Juerd's ideas *are* already implemented
   in the engine in some way or another.

   In other sub-thread, Sadahiro caught a naughty macro that lacked a
   parenthesised argument, which Rafael fixed in blead.

     It ain't easy
     http://xrl.us/ot9n

Perl5 Bug Summary

     + 13 - 7 = 1499
     http://xrl.us/ot9q

     Ooh, nice RT upgrade
     http://rt.perl.org/rt3/NoAuth/perl5/Overview.html

New Core Modules

   *   ExtUtils::Install version 1.41 released by Yves Orton. No change
       in functionality, merely a tweak to the versions to get "blead"
       and "CPAN" in sync.

         Do the bump
         http://xrl.us/ot9r

In Brief

   Rafael announced that he was removing references to "5005threads" in
   the "perlguts" documentation.

     The end of the line
     http://xrl.us/ot9t

   Steve Hay showed the best settings to get the most out of "malloc" on
   the Win32 platform.

     http://xrl.us/ot9v

   Andy Lester noted that the Coverity defect scan of the codebase had
   risen from 35 to 40 in two weeks.

     Misfeature creep
     http://xrl.us/ot9y

   Alan Burlison pointed to Data Race Detection Tool (or DRDT) from Sun,
   which is a tool designed to help track down data race issues with
   threads.

     Might be handy
     http://xrl.us/ot93

   Sébastien Aperghis-Tramoni posted a small precision about "\Q \E"
   inside "m//x", after having spent too much time trying to figure out
   why his code wasn't doing what he expected.

     DWIM or RTFM
     http://xrl.us/ot95

   Brendan O'Dea put forward a modest proposal remove "x2p/*", that is,
   the awk-to-perl and sed-to-perl scripts, arguing that no-one uses them
   anymore. Neither Rafael nor H.Merijn were in favour of such a move.

     http://xrl.us/ot98

   Craig A. Berry tidied up some POD typos.

     http://xrl.us/ouaa

About this summary

   This summary was written by David Landgren.

   Last week's unfinished opus attracted a comment from Nicholas Clark
   asking how other open-source languages deal with the day to day
   housekeeping, and he even received an answer!

     http://xrl.us/ouad

   If you want a bookmarklet approach to viewing bugs and change reports,
   there are a couple of bookmarklets that you might find useful on my
   page of Perl stuff:

     http://www.landgren.net/perl/

   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