This Week on perl5-porters - 3-9 July 2006
"CPAN is an unorganised anarchy. The checksum only guarantees that
your downloaded file is identical to the one on CPAN, but there's no
guarantee whatsoever that the file on CPAN is sane." -- Johan
Vromans, reflecting upon the joys of open source software.
Topics of Interest
Is Perl an itch-free zone?
Following on from the thread following on from the unfinished summary
of a couple of weeks ago, Nicholas Clark wanted to know if the Perl
engineering process was too good for itself. With a dedicated crew of
smokers, a fanatical attention to backwards compatibility, there is
very little that an average author of CPAN modules has to worry about.
If you have a module that works on 5.6 and 5.8, it is just about
certain that it will work just fine on 5.10 as well.
This is not the case for other languages, like Java, PHP or Python,
where things may change radically from release to release, and the
hapless programmer just has to deal with it.
Scott Walters offered a certain amount of conjecture as to why things
are the way the are (hint: it's got something to do with money). He
then put forward a few items that he thinks about from time to time:
fast bytecode loading, better coroutine support in the core and a bit
of syntactic sugar for object-oriented programming.
Nicholas Clark thought that the lower bound of success for byte
loading was to work with any Perl code you care to throw at it, and
figuring out the upper bound of how long *that* would take seemed
rather too high to be reasonable. Coroutine support in the core was
reasonable: it requires adding more hooks in the interpreter that
authors could grab hold of, and this can only be a good thing in terms
of the innovation it might allow to spring forth.
Scott came back later on with some interesting information on how
Python works. In a nutshell, it's still pretty much Guido's baby.
Jan Dubois chipped in to say that Tcl has a superb API to its
internals, and you cannot sneak past it from extensions. This has
permitted all Tcl extensions to be backwards and forwards compatible
across the entire 8.x release series. This makes Jan very envious.
[background info: on #p5p a few weeks ago there was a discussion about
the fact that most of the core developers know the guts of perl so
well that they unconsciously play to its strengths and skirt around
its weaknesses to the extent that there do not appear to be a whole
lot of itches left, in their eyes.]
The state of play
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00116.html
In a similar thread, Nicholas pointed to the absence of feedback from
Perl users to the core developers. If CPAN authors out there have
wishlists of things that would make their lives easier, it's not being
channelled back to "perl5-porters".
Similarly, the release candidates leading up to a new minor release
get next to no testing, about from the usual band of smokers. This
means that anything truly *interesting* that changes in the
interpreter remains unnoticed up until after a release, which is what
we want to avoid in the first place.
So, if *you* have an XS module, or an "Acme" module that does weird
things, take a maintenance snapshot for a spin on your code and see
how it fares. If you don't have any, try some of Damian's modules. Or
those of the Phalanx.
Nicholas Clark wants *you*
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00041.html
CPAN-ifying "Math::Complex" and "Math::Trig"
Jarkko Hietaniemi pondered dual-lifing "Math::Complex" and
"Math::Trig" as CPAN packages, the idea being to be able to backport
bug fixes and new functionality to previous Perl releases.
Dan Kogai was very enthusiastic about the idea, and hinted that it
would be wonderful if "Math::Complex" were a little more "bignum"
aware.
Playing the numbers
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00077.html
CPAN and security
There was a rather long thread about CPAN. It's apparently broken, so
people are discussing how CPAN-for-Perl6 will make it better. The
evil-author-uploads-rootkit was mentioned. (Summariser's note: I do
not mean to disparage this thread, it's just I feel that p5p is not
the best place to discuss it).
Read the source
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00087.html
Itanium warnings for "Compress::Zlib"
H.Merijn Brand sent in a list of warnings when "Compress::Zlib" is
compiled on the Itanium platform. Paul Marquess initially hoped to
steal ideas from the new 2.0 codebase, but H.Merijn quashed that idea.
So Paul had a closer look. One problem arose from the "MEM_WRAP_CHECK"
macro, and Paul had next to no idea about what to do about that.
Another warning was from the "zlib" source itself. The remaining
warnings were from his own code, so Paul set about seeing what he do
to silence them.
At the same time, he mentioned that this would be close to last ever
release of the 1.x series, and that 2.x could start to move out of
beta.
Paul then had a closer look at the "MEM_WRAP_CHECK" macro and isolated
what he thought was the offending construct. It turns out that Yves
Orton had already run into the problem last month:
Compilers of very little brane
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-06/msg00919.html
and it had prompted Nicholas Clark to opine that what really needs to
be done is for compiler writers to add a -STFU switch to their wares.
Andy Lester mentioned that he had given it his best shot some time ago
at silencing the warnings. Paul debated the idea of generating an
ideal macro at configure-time, but the more he thought about, he
couldn't see how to avoid a picky compiler moaning about "comparison
always false".
The ideal copy
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00171.html
Itanium warnings for "Unicode::Normalize" 1.01
And if the above wasn't enough, H.Merijn continued his quest to win
friends and influence enemies by putting "Unicode::Normalize" through
the Itanium wringer.
It's all good
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00164.html
Escapes in heredocs
Curtis "Ovid" Poe wondered if he had misunderstood how backslashes
behave in single-quoted heredocs, and wondered if he had misread the
documentation, or whether the documentation was wrong, or unclear.
Sadahiro Tomoyoki cited "perlop" chapter and verse, where it says that
in single-quoted heredocs, no interpolation is performed, so the
snippet Ovid posted was working as advertised. Yves had a shot at
improving the documentation, but Tomoyuki poked a hole in it.
Heredoc, there a doc
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00241.html
Patches of Interest
Autogenerate all ppport.h files
Marcus Holland-Moritz produced a patch to generate all ppport.h files
automatically during the build process. He asked for some feedback
from Win32 and VMS porters. Steve Hay reported that it seemed fine on
Win32. Craig Berry filed a small tweak for VMS, and explained what the
problem was regarding "Config_heavy.pl", which does not show up on
other platforms. This prompted Marc to change the way "mkppport"
behaves, since if it poses a problem for VMS, it may pose similar
problems on other, more esoteric, platforms.
It's a job for Perl!
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00080.html
After having received the above feedback, Marcus announced that all
"ppport.h" files were now being generated automatically by "mkppport"
on Linux, VMS, Win32 and cygwin, and that any remaining bugs should
get smoked out on other platforms soon. The end result is 160Kb saved
in the "bzip2" tarball, and/or 150Kb for the "gzip" tarball.
Nicholas Clark pondered what else would look nice shaved. After toying
with the idea of autogenerating some tests, it was decided that there
are no more easy savings to be had.
use less 'disk';
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00246.html
"Sys::Syslog" also acquired its own ppport.h.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00247.html
Dual life for "Shell.pm"
Adriano Ferreira discovered in horror that "Shell.pm" uses string
"eval"s to achieve its nefarious ends, and worse, is indented with
tabs. So he proposed a new version that uses closures, and changed the
tabs to spaces.
Rafael complained that the spaces/tabs change added a lot of noise to
the "diff", so Adriano redid the work as two separate patches.
The modern world
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00145.html
"const"ing, End of Part I
Andy Lester added some consting and localizing to universal.c
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00081.html
and toke.c.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00082.html
Andy announced that he was going to scale back operations on Perl 5
and move to Parrot. Mainly, because most of the low-hanging fruit on
the Perl 5 source tree has been harvested, and also because Parrot
could do with some help.
Moving on
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00197.html
"state" variables
Rafael Garcia-Suarez filed a status report on the current situation of
"state" variables. He mentioned one problem remaining was what happens
with declarations of "state" variables in list assignments.
Rick Delaney thought that about it and suggested what he thought the
right thing to do was, but it turns out that Rafael spoke to Larry
Wall, who suggested another alternative. David Nicol thought that
Larry was wrong.
A new state of affairs
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00148.html
perl5db.pl: read full lines from remote socket
Brendan O'Dea sent in a patch to help out the EPIC (Eclipse/Perl
Integration) crowd, who were trying to run the debugger over a remote
socket, and "sysread" was giving them grief.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00232.html
The new POSIX tests
Jarkko Hietaniemi discovered that the POSIX tests were spewing a lot
of black smoke on the Tru64 platform, perhaps because Tru64 POSIXes
you harder. He patched the test suite to make allowances for this, and
this was applied by H.Merijn Brand.
POSIX is the new black
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00218.html
Yves Orton tweaked the POSIX tests to skip certain tests if the
function in question is not implemented on the host platform.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00230.html
Latest cut-and-paste findings for blead
Jarkko also reported on the current state of play of his collaboration
with the author of "cpd" (Cut-and-Paste-Detector) to get it to work
with hairy C code, the sort which abounds in the perl codebase, due to
the combination of heavily-nested macros and machine-generated source.
Sadahiro Tomoyuki put forth a couple of suggestions based on the
results which Rafael applied.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00242.html
Yves Orton found it too painful to try and deal with this stuff by
hand, so he wrote a program in a popular text-manipulation language to
do the job in his place. The result was some truly mammoth macros.
Dr. Ruud suggested parenthesising macro arguments to diminish the
chance of precedence errors creeping in.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00264.html
"\N{...}" in regular expression
Sadahiro Tomoyuki discovered that when "use charnames ':full'" is
operative, "/a\N{PLUS SIGN}b/" will actually match "aaaaaab", but not
"a+b", which is possibly the wrong way around, and proposed a patch to
fix it. It turns out that that "\cX" has similar problems, and
Sadahiro-san located the culprit.
Nice obfu potential
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00267.html
New and old bugs from RT
Literal Whitespace in RegExps not properly parsed (#5051)
Noted as fixed in 5.8.6 and "blead" by Yves Orton.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00206.html
".pmc" logic: keep, delete, deprecate? (#8860)
Steve Peters explained that the logic in question shall be neither
deleted nor deprecated.
Here to stay
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00068.html
Segfault with complicated regex inside "map" (#24898)
Steve also tried out a patch that Abigail offered to deal with a
problem of the regexp state stack being reallocated during "pp_match".
Unfortunately, "blead" doesn't like it at all.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00070.html
panic: "magic_killbackrefs" during global destruction. (#27630)
Steve thought that this was more likely due to the local patches that
Red Hat added to their perl build at the time, since he was unable to
produce it on more recent "blead"s.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00067.html
Closing file seems to cause a seek operation (#29883)
Steve offered a work-around, by way of "POSIX::_exit" to solve this
one.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00132.html
tests fail in 5.8.8 if $TMP is not writable (#38947)
Steve added a check to bail out if the test being run was not able to
write to the directory in question. Adriano Ferreira objected to the
fact that no indication is given to the luckless programmer who may be
watching the test results scroll past as to the reason why the test
was skipped. Adriano thought a bit more explanation would be in order.
Absence of evidence
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00154.html
Do not recommend "Switch.pm" in "perlfaq" (#39170)
Steve agreed that we shouldn't mention that the next release of Perl
will have a switch statement, until we release the next release.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00151.html
cygperl hangs on FIFO use (#39211)
Alexandr Ciornii indicated that this has been fixed in the latest
version of the Cygwin library (version 1.5.20).
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00238.html
"stat()" doesn't work on dirhandles (#39261)
It does now, thanks to the efforts of Steve Peters. There is now a
need to hoist out common code from "Perl_pp_stat" and "Perl_my_stat",
and some more tests would not go astray.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00076.html
"*** glibc detected *** free(): invalid pointer" from "Perl_mg_free"
(#39528)
Christoph Maser solved this problem by installing a more recent
version of "DBD::Mysql".
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00037.html
make test fails with "getppid" in a Solaris 10 zone (#39536)
Steve Peters took the change from "blead" to fix this issue and
backported it to "maint".
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00064.html
nl_langinfo ==> Installation problems (#39625)
Dave Mitchell explained that this problem (an undefined symbol) was
more likely that the C run-time library or something else on the
system dealing with shared libraries was messed up, and that it was
unlikely that anything could be done from perlspace to fix it.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00036.html
Segmentation faults with "*@" (#39709)
David Serrano found a new way to do evil, by assigning to the "*@"
typeglob. Apparently, since nobody had thought of doing this before,
it doesn't work as best it might.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00097.html
$AUTOLOAD is never tainted (#39733)
Rick Delaney discovered this, and showed how a program could misbehave
without giving an error. He then followed up with a patch to make it
so. Hugo van der Sanden recommended that this be flagged as a
significant change to keep in mind when upgrading.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00156.html
"Exporter::Heavy" ignores custom $SIG{__WARN__} handlers (#39739)
"evanspa" reported that "Exporter::Heavy" pays no attention to warn
handlers. This is unfortunate, as FastCGI needs this functionality,
and so it was patched. Dave Mitchell commented that in "blead",
"__WARN__" is no longer overridden (so the problem no longer arises).
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00172.html
crash in "unpack" (#39747)
Lukas Mai noticed a nasty problem with the "Z" specifier and null
characters, but Yves Orton noted that it was already fixed in "blead".
Packed up
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00176.html
perl -d bug with 5.8.8 (#39758)
Shlomi Fish reported a problem with disappearing text in the debugger.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00185.html
Perl5 Bug Summary
Gah! Back over the 1500 threshold.
1501, to be precise
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00066.html
All here
http://rt.perl.org/rt3/NoAuth/perl5/Overview.html
New Core Modules
* "Test::Builder/More/Simple" version 0.63 was released by Michael
Schwern.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00268.html
In Brief
Craig A. Berry wanted to know how to interpret some "threads" 1.33
results on VMS.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00120.html
Jerry D. Hedden asked Craig to take some code for a spin. This did the
trick, and so Craig applied it to "blead".
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00123.html
Dave Mitchell pointed out a certain category of the last remaining
"eval"s leaks, when Fatal upgrades warnings to death, may prove to be
intractable in terms of leak proofability.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00117.html
Shlomi Fish began a wikipedia entry about Tom Christiansen and asked
for contributions.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00193.html
Jarkko Hietaniemi provided a very useful addition to "perlhack",
listing some tricks and traps for C programmers to remember.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00249.html
Gabor Szabo added some examples in the core documentation to explain
some of the finer points of "substr". Rafael applied the patch. It
remains to be seen whether other functions lack similar, concise
examples. Gabor mentioned he may send some more in.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00261.html
Paul Johnson mentioned, in the Did you know this worked? thread that a
variant of this trick is how he gets "Devel::Cover" to weave its
magic.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00347.html
About this summary
This summary was written by David Landgren.
Last week's thread:
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-07/msg00203.html
received a comment from Jan Dubois clarifying the status of
"DBD::Oracle" on ActiveState. Executive summary: it's good for 5.8
too. (And thus my evil plan for writing these summaries is unmasked:
it's all an elaborate plot to get my own bugs and problems fixed --
and as bonus icing on the cake, Philippe M. Chiasson reported that a
new version had been uploaded, which slices off about 50b of stuff
that isn't required).
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.
--
"It's overkill of course, but you can never have too much overkill."