Front page | perl.perl5.porters |
Postings from June 2008
This Week on perl5-porters - 7-13 June 2008
From:
David Landgren
Date:
June 22, 2008 13:19
Subject:
This Week on perl5-porters - 7-13 June 2008
Message ID:
485EB3A5.7010700@landgren.net
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
http://xrl.us/et7qo
"autodie" 1.10 BETA released
Paul Fenwick released a development version of "autodie", complete
with Fatal, the unauthorised edition.
testers welcome, needed
http://xrl.us/et7qu
"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
http://xrl.us/et7q2
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.
http://xrl.us/et7q8
"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
http://xrl.us/et7re
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
reveal.
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
prose.
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
http://xrl.us/et7rk
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.PL.
perlbug prompting
http://xrl.us/et7rp
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
http://xrl.us/et7rv
"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
documentation.
http://xrl.us/et7r3
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.
http://xrl.us/et7r9
He then carried on with the rest of the files and Rafaël applied all
of it.
http://xrl.us/et7sf
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.
http://xrl.us/et7sm
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.
http://xrl.us/et7sq
.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.
http://xrl.us/et7sw
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.
http://xrl.us/et7s4
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
resolved.
http://xrl.us/et7ta
"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.
http://xrl.us/et7te
"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.
http://xrl.us/et7tk
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
Zefram).
http://xrl.us/et7tr
"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.
http://xrl.us/et7tx
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.
http://xrl.us/et7t5
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.
http://xrl.us/et7t9
'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.
http://xrl.us/et7uf
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
expensive.
go iterative, young man
http://xrl.us/et7um
"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.
http://xrl.us/et7us
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()
http://xrl.us/et7uy
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.
http://xrl.us/et7u6
"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.
http://xrl.us/et7va
"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.
http://xrl.us/et7vg
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
http://xrl.us/et7vn
Perl5 Bug Summary
265 new + 1276 open = 1541 (+5 -21)
http://xrl.us/et7vt
http://rt.perl.org/rt3/NoAuth/perl5/Overview.html
New Core Modules
"Pod::Perldoc" version 3.14_07
Adriano Ferreira had Rafaël synch blead with the latest goodies
from CPAN.
http://xrl.us/et7vx
"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.
http://xrl.us/et7v5
"threads::shared" 1.22
This module also received similar treatment.
http://xrl.us/et7v9
"Thread::Semaphore" 2.09
ditto
http://xrl.us/et7wb
"Thread::Queue" 2.11
ditto
http://xrl.us/et7wh
"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.
http://xrl.us/et7wm
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.
http://xrl.us/et7ws
I suspect that Panic in regex processing (unknown regstclass 0) (bug
#55466) does not concern the porters directly.
http://xrl.us/et7ww
Craig A. Berry and Aaron Crane continued to delve into the subtleties
of "File::Copy" and permission bits.
generally impossible
http://xrl.us/et7wy
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
http://xrl.us/et7w6
Steve also had some code added to fix run/switches test on Win32.
blindly applied
http://xrl.us/et7xa
David Nicol thought about what it would take to write a state machine
for parsing Perl; Ben Morrow pointed him at PPI.
unreinventable wheels
http://xrl.us/et7xg
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.
http://xrl.us/et7xn
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.
http://xrl.us/et7xt
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.
http://xrl.us/et7xz
John Peacock had a self-referential "version.pm" 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
http://xrl.us/et7x7
Last week's summary
This Week on perl5-porters - 1-6 June 2008
http://xrl.us/et7yb
About this summary
This summary is dedicated to the recent addition to Rafaël's family:
http://flickr.com/photos/rgarciasuarez74/tags/fran%C3%A7ois/
This summary was written by David Landgren.
Weekly summaries are published on http://use.perl.org/ and posted on a
mailing list, (subscription: perl5-summary-subscribe@perl.org). 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 or attending a YAPC to help support the development of
Perl.
--
stubborn tiny lights vs. clustering darkness forever ok?
-
This Week on perl5-porters - 7-13 June 2008
by David Landgren