develooper Front page | perl.perl5.porters | Postings from June 2008

This Week on perl5-porters - 7-13 June 2008

David Landgren
June 22, 2008 13:19
This Week on perl5-porters - 7-13 June 2008
Message ID:
This Week on perl5-porters - 7-13 June 2008

   This morning, clkao pinged me and mentioned that he couldn't get
   perlbug to set the From: header when sending a bug report. I promised
   him I'd take a look.

   I opened up perlbug determined to add one line and send a patch.
   Somehow, I never got around to adding the line CL asked for...
   -- Jesse Vincent, getting a finger caught in the machine.

Topics of Interest

RT bugtrackers, note the changes in 5.10

   H.Merijn Brand wished to draw attention to the main changes in the
   more complex structures derived from an SV, so that people who were
   going through tickets on RT would remember to keep an eye open for the
   types of problems this might cause on badly-written XS code.

   Nicholas Clark and Reini Urban pointed out a few more gotchas.

     do the right thing

"autodie" 1.10 BETA released

   Paul Fenwick released a development version of "autodie", complete
   with Fatal, the unauthorised edition.

     testers welcome, needed

"overload" segfaulting

   Ovid reported that a certain use of "overload" led to a segmentation
   fault. Various people reported that various platforms did more or less
   the same thing.

   Rick Delaney solved the matter with with some minor changes to the
   code, the test suite and the documentation. Rafael checked it in.

     he made it look easy, too

Enable "getgrgid" on VMS

   John E. Malmberg implemented the "getgrgid" call on VMS. Craig Berry
   suggested some minor housekeeping tweaks and committed it to blead.

"Cwd::abs_path" behaviour with non-existent paths

   John E. Malmberg wanted to get "realpath" working on VMS, and wondered
   what the cross-platform concensus was for dealing with path
   specifications that don't exist. Once he had that information, he
   would be able to decide what would be best for VMS.

   Early feedback showed that different platforms handled John's examples
   quite differently. Thus he felt free to go ahead and do what made the
   most sense on VMS.

     i did it my way

TODO of the week

   A task that need a little sysadmin-type knowledge

Profile Perl - am I hot or not?

   The Perl source code is stable enough that it makes sense to profile
   it, identify and optimise the hotspots. It would be good to measure
   the performance of the Perl interpreter using free tools such as
   cachegrind, gprof, and dtrace, and work to reduce the bottlenecks they

   As part of this, the idea of pp_hot.c is that it contains the *hot*
   ops, the ops that are most commonly used. The idea is that by grouping
   them, their object code will be adjacent in the executable, so they
   have a greater chance of already being in the CPU cache (or swapped
   in) due to being near another op already in use.

   Except that it's not clear if these really are the most commonly used
   ops. So as part of exercising your skills with coverage and profiling
   tools you might want to determine what ops *really* are the most
   commonly used. And in turn suggest evictions and promotions to achieve
   a better pp_hot.c.

   One piece of Perl code that might make a good testbed is installman.

Patches of Interest

"perlbug" prose patch (and some evals, too)

   It all started out when clkao wondered why it wasn't possible to set
   the From: header on a perlbug report. Jesse Vincent thought "ho ho ho,
   a five-minute, one-line patch sent to perl5-porters coming up".

   One Saturday afternoon later, Jesse sent in a 740 line patch that did
   just about everything except just that, discovering that "perlbug" was
   in desperate need for some tender loving care.

   Ronald J. Kimball greeted the patch enthusiastically and went through
   it with a fine-toothed comb adjusting various changes to Jesse's

   Jesse was still a bit doubtful as to how to write a patch for a PL
   file in the utils/ directory (since said files are used to generate
   the final program that gets installed). Craig A. Berry hinted darkly
   at how things were done in concrete bunkers at secret locations.

     now i have to kill you

   Jesse then set to work cleaning up the twisty maze of user prompt
   routines, all alike. Rafael tried to apply the patch but failed, since
   the target of Jesse's intentions was the post-generated file. Jesse
   pointed Rafaël to the previous patch that was to applied against

     perlbug prompting

   Jesse finished for the week by overhauling the code that does the
   mailing of the bug report. Reini Urban suggested using "readline", to
   get rid of those pesky ^H characters that sometimes appear in actual
   bug reports.

   Jesse was hesitant to entertain the concept of optional dependencies
   within "perlbug", but admitted that at least things were getting to
   the stage where such a change would not be the major surgery that it
   would have been before he started cleaning things in the first place.

     maybe next week

"perlsyn": equivalent code for HASH ~~ ARRAY

   brian d foy asked for clarifications on smart matching behaviour just
   after 5.10.0 was released. He returned this week with a tweak to the

Readable assertion names

   Reini Urban went on a spring clean to strip out the metasyntactic
   variable names used in assertion errors and replaced them with names
   that conveyed useful information. Minor discussion followed as to
   whether the macro names that Reini used would mask or shadow real
   variable names, but Reini thought everything was safe.

   He then carried on with the rest of the files and Rafaël applied all
   of it.

testing $/ with in memory files

   Bram had worked out a patch some time ago that addressed this problem,
   but had used $ENV{_} as a sneaky shortcut for the current process.
   After it was pointed out that this was highly non-portable he had
   switched to a more robust technique. Rafaël applied the latter
   version, but in the meantime Bram had noticed that the patch ran into
   difficulties with "-Uuseperlio".

   But that was ok, because Bram had a patch for that as well. So Rafaël
   applied it too.

More COW lvalues

   Reini Urban used "-DPERL_DEBUG_COW" and found a couple of macros that
   are used as lvalues. He was able to solve one issue easily, since an
   assigning macro existed, but he was stuck as to how to rewrite
   "SvIVX(sv_dat)++" in a safe manner.

   Nicholas Clark had a look, and noticed that the end result boiled down
   to "a = a + 1", and gcc's optimiser (at least) reduced that to the
   same assembly instructions as "a++" and concluded that it was safe to
   use an apparently long-hand macro assignment, since it would wind up
   as a simple post increment.

.gitignore file

   Paul Fenwick develops with git, and thus is endlessly annoyed by git
   moaning about files it encounters but doesn't know what to do about
   them. So he wrote a crude .gitignore file to teach git to not pay
   attention to them.

   Rafaël had admitted planning doing such a thing, but was waiting until
   5.8.9 was out the door. At the same time, he thought there existed a
   certain opportunity for factoring Paul's list through the judicious
   use of wildcards.

   Sam Vilain took Paul's list and laid some serious ignore-fu upon it.

New and old bugs from RT

attributes don't like ".=" (#3605)

   Bram made the distinction between "my $var : locked .= "test"" (a
   syntax error) and "my $var .= "test"" (legal, and does the Right
   Thing) and wondered whether the inconsistency should remain.

Subroutine doesn't create elements (#8910)

   Renée Bäcker had a look at one of Abigail's old bugs and added one
   more piece to the puzzle, but perhaps not enough to say it was

"sub foo(@$) {}" should generate an error (#36673)

   Rafael Garcia-Suarez took Renée's patches for this bug report,
   reworked them slightly, and applied them to blead.

"bleadperl -Dm -e1" segfaults on win32 (#39806)

   Bram asked other people to check this old bug issued by Yves Orton,
   presumably because he could no longer reproduce the crash. Both Steve
   Hay an Niko Tyni reported that the test program ran without flaw.

SIGTERM not terminating child process (#49073)

   Jerry D. Hedden reworked a test in "Time::HiRes" so that it would play
   nicely on Cygwin. Patch not applied (Time::HiRes is now maintained by

"length($@)">0 for empty $@ if utf8 is in use (#51370)

   Bram brewed up a fix for this bug, that Rafaël applied, albeit with
   the uppercasing of a utility macro.

Trying to build perl5.8.3 under Maemo environment (#53328)

   Bram suggested a bette diagnostic for "Cwd" that would report where
   the program had looked for the "pwd" external binary, along with a
   short summary of what steps could be taken to fix the problem.

Perl 5.10 segmentation fault using "Net::SSH2::Channel" (#54908)

   Sebastien Rodriguez followed Ævar Arnfjörð Bjarmason's advice, which
   seemed to be essentially a diagnosis of the problem, and reported that
   things now worked. Hence his wish to contact the module author in
   order to push the change upstream.

'once' warnings from xs modules in perl 5.10.0 (#55550)

   This is the bug that Chia-liang Kao opened for the problem of XS
   modules producing "only used once" warnings in 5.10 and beyond.

Recursive multithreading causes massive amounts of context switches (#55560)

   Rafaël Garcia-Suarez explained, until a Copy On Write scheme is
   implemented in Perl, large numbers of thread creations will remain

     go iterative, young man

"IPC::Open3" does not auto-create an error handle (#55570)

   "Fiji" wondered why a simple call to "IPC::Open3" never has the
   child's STDERR being connected to the lexical variable that is
   supposed to hold it. Looking at the code, it was clear why it didn't
   work, but the question was should the documentation be clearer, or
   should the code be changed.

   Bram thought that is was doubtful as to whether the behaviour could be
   changed, since there may be people that have written code that depends
   on how things work currently.

   Ben Morrow agreed that refining the POD was the only course of action,
   although Rafaël suggested that an API shift could be handled in a
   dual-life version.

   Renée Bäcker supplied a patch to change the behaviour, and it was up
   to Eric Brine to explain that the crux of the matter was that the
   behaviour should not be changed. Instead, Eric showed how to solve the
   problem with a teeny amount of client make-work code.

     the correct use of gensym()

Regexp optimization affected by threads (#55600)

   John Gardiner Myers showed that when the regular expression engine is
   passed a pattern containing character classes (e.g. "[a-e]+"), the
   performance becomes abysmal if the call is issued from within a
   thread. John traced the problem to the code path not ever hitting the
   "find_byclass" routine which causes it to rely much more heavily on
   the backtracking mechanism.

"free from wrong pool" on Fedora 6 (#55658)

   Jason Van Dias sent in a reasonably concise test program that showed
   how to generate a panic in perl 5.10.0. Nicholas Clark pointed him to
   the latest source of the 5.10 track (which will become 5.10.1).

   Jason took that for a spin, and the only result was that the coredump
   message changed slightly. He had to tweak the Perl source slightly to
   get it to work at all. He noted that everything was fine with 5.8.4
   and 5.8.0 on other platforms.

"eval"ing a certain format string segfaults perl (#55668)

   Arthur Kantor showed how a poorly formatted format string kills perl.
   Alexandr Ciornii replied that the problem was fixed in 5.10.

Synopsis documents (deprecated, fragile) indirect object syntax (#55708)

   Michael R. Wolf filed a bug report to change constructs like "new
   Dumpvalue" to "Dumpvalue->new". Ilya Zakharevich pointed out that both
   constructs are flawed, that the more robust "Dumpvalue::->new()"
   construct isn't understood by older perls, leaving only the slightly
   horrendous ""Dumpvalue"->new()".

     cpan RT #36694

Perl5 Bug Summary

     265 new + 1276 open = 1541 (+5 -21)

New Core Modules

   "Pod::Perldoc" version 3.14_07
       Adriano Ferreira had Rafaël synch blead with the latest goodies
       from CPAN.

   "threads" 1.71
       Jerry D. Hedden needed a couple of iterations to get the latest
       POD and test tweaks sorted out, but it was applied in the end.

   "threads::shared" 1.22
       This module also received similar treatment.

   "Thread::Semaphore" 2.09

   "Thread::Queue" 2.11

   "B::Debug" 1.06
       Reini Urban asked if it would be possible to synch the CPAN
       version of "B::Debug" with blead, and Rafaël was happy to oblige.
       So now "B::Debug" is officially dual-lifed.

In Brief

   Renée Bäcker announced that bugs #3176, #3495, #3534, #5246 and #6783
   were either fixed or non-bugs.

     look them up on RT

   The problem with porting perl on Armel (bug #55038) inched one step
   forwards this week.

   I suspect that Panic in regex processing (unknown regstclass 0) (bug
   #55466) does not concern the porters directly.

   Craig A. Berry and Aaron Crane continued to delve into the subtleties
   of "File::Copy" and permission bits.

     generally impossible

   Steve Hay added some code to remove temporary files left over by test
   in "IO-Compress-Zlib", which Nicholas Clark applied.

     now to inform Paul Marquess

   Steve also had some code added to fix run/switches test on Win32.

     blindly applied

   David Nicol thought about what it would take to write a state machine
   for parsing Perl; Ben Morrow pointed him at PPI.

     unreinventable wheels

   John E. Malmberg reported that VMS passes these t/io/open.t tests now
   so there is no longer any need to skip them. Unapplied, apparently.

   Andreas König wondered if he was the only person with a failing syslog
   test in current blead; Bram reported that he was in good company.

   Mattia Barbon encountered problems using wxPerl playing around with
   "setenv" and "putenv", and traced it down to an interaction between
   "DEBUGGING" and "PL_use_safe_putenv". A quick edit to wxPerl solved
   the immediate problem, but Mattia wanted to know if there was a better
   underlying solution waiting to be found.

   John Peacock had a self-referential "" question, wondering
   what was the best way of delivering a POD-only improvement release.
   Eric Wilhelm pointed out a possible gotcha.

     debian does it differently

Last week's summary

     This Week on perl5-porters - 1-6 June 2008

About this summary

   This summary is dedicated to the recent addition to Rafaël's family:

   This summary was written by David Landgren.

   Weekly summaries are published on and posted on a
   mailing list, (subscription: The
   archive is at Corrections
   and comments are welcome.

   If you found this summary useful, please consider contributing to the
   Perl Foundation or attending a YAPC to help support the development of

stubborn tiny lights vs. clustering darkness forever ok? Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About