This Week on perl5-porters - 13-19 March 2006
On the move -- "Module::Build" moving into core -- Perl core moving
around the file system -- Threads moving onto CPAN -- plus the usual
assortment of bug reports, patches and new ideas.
Topics of Interest
Support for relocating @INC
Nicholas Clark delivered the functionality to make @INC relocatable.
This means you can now build Perl, install some modules from CPAN,
take the whole directory tree and move it elsewhere and things
continue to work. Andy Dougherty wondered how Nicholas had dealt with
the shared libperl.so file.
The answer is that there isn't much that can be done in the general
case, although some platforms, like Solaris, make the issues easier to
deal with. In other words, Nicholas has done about as much as can be
done. Now for testing and feedback.
A movable feast
http://xrl.us/ki3w
Overridable filetest operators (continued)
Salvador Fandio continued to look at the problem of overriding "stat",
which was now a question of how to deal with the ";$" prototype
correctly. Rafael didn't want anything to be changed at this late
stage of the game, and instead suggested two new prototypes, "^$" and
"^*".
In this scenario, "stat" would have the latter prototype. (The "^" is
loosely based on a concept from the Perl TODO list, which is to allow
prototypes to indicate that the routine defaults to using $_ if no
argument is passed).
Prototyping the prototype
http://xrl.us/ki3x
"Module::Compile" and the ".pmc" file extension
Audrey Tang wrote to explain her position on what ".pmc" means.
Surprisingly, this elicited no discussion.
Nothing to do with Parrot (yet)
http://xrl.us/ki3y
Advice for "pack" failure needed
H.Merijn Brand was trying to understand why "gcc" 4.0.3 works, but
4.1.x doesn't when producing a 64-bit perl for HP-UX 11.00 and 11.11.
He had stripped a failing test file (pack.t) down to a bare minimum.
He had gone as far as literally unrolling the code from pp_pack.c into
straight C using "int"s and "double"s instead of "I32"s, "NV"s and
"SV"s, but was well and truly stuck (since this resulting code worked
identically on both compilers).
What we have here is a failure to pack
http://xrl.us/ki3z
Move "DynaLoader" into libperl.so
Gisle Aas has problems with applications that wish to instantiate an
embedded perl interpreter. This is due to the fact that "Dynaloader"
is compiled statically into the perl stub executable. He wanted to
move things around a bit so that part of "DynaLoader" is, well, loaded
dynamically.
So far, no complaints.
Pulling yourself up by the bootstraps
http://xrl.us/ki32
"Useless localization of substr" warning messages
Hugo van der Sanden was puzzled by new "useless localization of
substr" that "blead" was now issuing, and wondered what to do about
it. Again, no takers.
What's the use?
http://xrl.us/ki33
Patches of Interest
"Term::ReadKey"/"Term::ReadLine" on Windows
Johnathon Stowe produced a patch to fix up the
"Term::ReadKey"/"Term::ReadLine" bug on the "Win32" platform.
http://xrl.us/ki34
VMS-specific "arg_defines" for "ExtUtils::CBuilder"
Craig A. Berry sent in a patch for "ExtUtils::CBuilder" to deal with
the requirements of compiling extensions in C on VMS. Ken Williams,
the maintainer, took the patch under his wing and asked if there was a
test case that could expose this problem, should it ever arise in the
future.
John E. Malmberg tweaked Craig's patch to work around a couple of
other issues he encountered. In fact John sent in a steady stream of
patches for VMS this week. See the In Brief section to catch them all.
http://xrl.us/ki35
A bit more "Module::Build" help for VMS
Craig then added a patch to help get more of "Module::Build"'s test
suite to pass. John received some strange errors that left him
puzzled.
http://xrl.us/ki36
SPAGAIN in the poor-man's-multicall API
Robin Houston fixed up multicall.h (in "List::Util") to deal with the
problem that Tassilo von Parseval had encountered in bug #38644 (a
missing "SPAGAIN" macro call). Rafael applied the patch to "blead" as
change #27486, noting that Graham Barr will have to apply the change
to his own repository of "List::Util" as well.
http://xrl.us/ki37
Sundry fixes from Jan Dubois for "Win32"
Jan Dubois realised that some of the work he did to make "alarm" work
on Windows 2003 could cause perl go into an infinite loop. He sent in
a patch to restore the correct behaviour, and in the process of
investigating found another small problem that also needed fixing.
win32_async_check() fixed
http://xrl.us/ki38
win32_plclose() fixed
http://xrl.us/ki39
Allocating op-codes from arenas
Jim Cromie landed a first version of patch that would allow op-codes
to be allocated from arenas (following on from the discussion last
week with Nicholas Clark). There were, nonetheless, a number of issues
that will have to be worked through. For instance, it has a nasty
tendency to segfault. People were still digesting the patch at summary
time.
http://xrl.us/ki4a
The continuing story of Andy Lester's quest to "const"
* Made "S_looks_like_bool"'s argument "const"...
http://xrl.us/ki4b
* Taught some of the new MAD code preprocessor tricks to keep "gcc"
quiet.
http://xrl.us/ki4c
* Redundant boolean checks removed, some "goto"'s for speed and
sundry "const"s in regexec.c. Dave Mitchell surfaced briefly to
mention that he's in the middle of reworking "S_regmatch" (*and
the crowd goes wild*) and asked for this patch to be kept on ice.
Hugo noticed that Andy's work highlighted the underlying
similarities in three sections of the code, and that all should be
hoisted out into a subordinate function or macro.
http://xrl.us/ki4d
* Changed the semantics of "S_isa_lookup". Andy noticed that this
function (in "universal.c") returned pointers to "PL_sv_yes" and
"PL_sv_no" simply to indicate truth. So he changed it to return
"TRUE" or "FALSE".
http://xrl.us/ki4e
* Cleanups in op.c
http://xrl.us/ki4f
* Random consting in "Data::Dumper".
Not random, merely chaotic
http://xrl.us/ki4g
* And changed some @ISA definitions to work correctly under "use
strict", such as "@ISA = (Exporter)" becoming "@ISA =
qw(Exporter)".
http://xrl.us/ki4h
New and old bugs from RT
overload and rebless (#34925)
Nicholas Clark returned to a bug from last year (which I cannot find
again on Xray) dealing with re"bless"ing an object in an overloaded
class, and proposed three ways of fixing it, One of them was probably
only suitable for "blead", and thus 5.10, but two other avenues showed
more promise. This is apparently a big issue for "Class::DBI".
Nicholas then wrote a patch to implement one of the safer approaches,
and if the time it takes to run the test suite is any guide, the
performance difference is pretty much lost in the noise.
http://xrl.us/ki4i
The original Perlbug (authentication required)
http://rt.perl.org/rt3/Ticket/Display.html?id=34925
Debugger Loses Names for Anonymous Subroutines (#38673 update)
chromatic returned to his own bug report, and discovered that by
deleting a swath of code in op.c he was able to make it work to his
satisfaction, even though he felt slightly uneasy about doing do.
Rafael Garcia-Suarez didn't think much of the idea either and
explained a better way of fixing it. He thought it should be feasible
to patch the debugger only, the only trouble is that patching the
debugger is even more scary.
Another important issue for Rafael is the poor state of $^P (a.k.a
$PERLDB) in the "perlvar" documentation. Someone needs to explain
*why* you would want to diddle the bits, and what happens when you do.
Nicholas Clark admitted to having seen weird thing occurring deep down
in the depths of "CV"s, "GV"s and stashes, but had never been able to
adequately explain why.
Shades of Moria
http://xrl.us/ki4j
"SvPOK" breaks magic in 5.8.5 and beyond (#38707)
Zowie noted that "SvPOK" breaks code in "PDL", specifically, when
looking at things like "$#$arrayref".
http://xrl.us/ki4k
perl 5.8.8 make fails at dynaloader (#38687)
Dominic Dunlop reproduced the symptoms demonstrated by Andy Ford in
the initial bug report by touch(1)ing the Makefile so that an empty
file was created. He suggested that Andy delete the directory, make
sure there was sufficient free disk space, and start the build again.
If problems persist, consult your doctor in the morning
http://xrl.us/ki4m
"local"ised stash slices are fixed (#38710)
To recap:
local $::{"func"} = sub { "func" };
worked, but
local @::{qw/ func1 func2 /} = (sub { "func1" }, sub { "func2" });
... did not. Now it does, thanks to a patch for pp.c from Rick
Delaney.
http://xrl.us/ki4n
"Perl_utf8n_to_uvuni" decodes illegal characters (#38722)
John Gardiner Myers uncovered a discrepancy between what
"Perl_utf8n_to_uvuni" decodes (that is to say, Unicode characters) and
what "Perl_uvuni_to_utf8_flags" considers illegal, and provides a
short snippet of code to demonstrate the problem. No takers as yet.
http://xrl.us/ki4o
Backticks don't work in Win32 multi-threaded perl (#38723)
Krzysztof Koczyjan filed a bug that showed how "fork" and backticks
don't work on the Win32 platform. He traced the problem to the routine
"win32_popen", which is apparently not thread-safe. He then recompiled
perl with "-DUSE_RTL_POPEN" and saw that that fixes the problem.
http://xrl.us/ki4p
"syslog-ng" inappropriately expects "\n" (and "\0"?) in "syslog"
messages (#28019)
Julian Mehnle was chasing down a bug in Debian-land concerning their
"libmail-spf-query-perl" package, and stumbled over the changes made
to "Sys::Syslog" after the "Webmin" flap. The issue was that the
module no longer appended a "\n" to the logged message, and
"syslog-ng" was running lines together.
Sébastien Aperghis-Tramoni, the maintainer of "Sys::Syslog". explained
that the current state of affairs was more due to work-arounds for
broken commercial Unix "syslog" implementations, and that the RFCs
surrounding these are sadly only informational, and do not mandate a
specific way of doing things.
http://xrl.us/ki4q
Poor example for $^V in "perlvar" (#38743)
Nicholas Clark thought that the documentation example in "perlvar"
concerning $^V (perl version) was rather stupid, and hoped someone
could come up with a better idea. Dave Mitchell came up with a very
clever example that dealt with the hash key randomisation work that
went into perl 5.8.1.
Clues you can use
http://xrl.us/ki4r
Undetectable, incompatible API changes in "POPpx", etc. (#38744)
John Gardiner Myers sent in a scathing bug report concerning changes
to the "POPpx" macro, which broke his code when running on 5.8.8.
Nicholas Clark replied that no-one who watched the commit go past
realised the subtle change in behaviour, nor did anyone pick it up in
any of the maintenance snapshots in the three months that followed the
change. Similarly, the bug was not caught by anyone who built the
release candidate running up to the official 5.8.8 release.
The importance of testing
http://xrl.us/ki4s
Segmentation fault in generating Config.pm (#38745)
Derek Chen was having trouble building perl on an embedded Linux
system running on an ARM processor. Dominic Dunlop wondered whether
this could be related to bug #38913, and wanted to know whether
previous versions of perl had been built successfully on the platform,
or if this was the first time. The next thing to try is to build an
unoptimised "miniperl".
http://xrl.us/ki4t
Follow-ups in a detached thread
http://xrl.us/ki4u
threads.xs broken under "PERL_IMPLICIT_SYS"; 5.8.8 regression
Jan Dubois sent a patch (for the third time) to free the perl
interpreter structure after the threads structure. The latest changes
to threads.xs broke this again.
Tels asked for better documentation in the code, and new tests in test
suite to ensure that the problem doesn't come back a fourth time.
Jerry Hedden picked up the patch and reworked it slightly. His plan is
to get some feedback from CPAN testers before getting it folded back
into "blead".
http://xrl.us/ki4v
"qx" loses "/dev/tty" (#38748)
"ende" had a "Tcl" script hooked up to a perl program running as a
daemon which wasn't working. But the equivalent daemon written in
shell worked correctly. Dominic Dunlop thought that there might be
problems with the program if it really *was* a daemon, because in that
case it would have no controlling terminal and thus no "/dev/tty".
http://xrl.us/ki4w
Perl5 Bug Summary
1556 tickets
http://xrl.us/ki4x
Summarised here
http://rt.perl.org/rt3/NoAuth/perl5/Overview.html
New Core Modules
* "ExtUtils::CBuilder" version 0.17 uploaded Ken Williams (based on
the thread concerning VMS. See above).
http://xrl.us/ki4y
* "Module::Build" version 0.27_09, also from Ken.
http://xrl.us/ki4z
* "threads" version 1.09 uploaded by Jerry D. Hedden.
http://xrl.us/ki42
He also sent in a patch to sync "blead" with the current versions
of "threads" and "threads::shared".
threads 1.12
http://xrl.us/ki43
threads::shared 0.99
http://xrl.us/ki44
In Brief
John E. Malmberg reported at the beginning of the week that 13 test
scripts (of 1140 total) were still generating failures on VMS.
threads and VMS (redux)
http://xrl.us/ki45
He tweaked thread.h to give threads on VMS a bit more stack space.
http://xrl.us/ki46
And some buffer size fixes for vms.c
http://xrl.us/ki47
And "utime" (I think I need a what "What John did" section).
http://xrl.us/ki48
Peter Prymmer filed a small patch to fix "Pod::Simple" on "blead" so
that it works on VMS ODS-2. (Which I understand to be an older
file-system for VMS, the current being ODS-5).
http://xrl.us/ki49
Paul Marquess sent in a patch to synch "blead" with the CPAN versions
of "Compress::Raw::Zlib", "Compress::Zlib" and "IO::Compress::Zlib".
http://xrl.us/ki5a
Someone noted (in bug #34981) that binding "STDIN" to "scalar" hides
fd 0 forever. I'm not quite sure what they mean by that.
http://xrl.us/ki5b
Randy W. Sims nailed an uninitialised value in "Archive::Tar".
http://xrl.us/ki5c
About this summary
There was some feedback from Marcus Holland-Moritz on last week's
summary concerning the issue of "DEBUG_LEAKING_SCALARS".
http://xrl.us/ki5d
This summary was written by David Landgren.
Information concerning bugs referenced in this summary (as #nnnnn) may
be viewed at http://rt.perl.org/rt3/Ticket/Display.html?id=nnnnn
Information concerning patches to "maint" or "blead" referenced in
this summary (as #nnnnn) may be viewed at
http://public.activestate.com/cgi-bin/perlbrowse?patch=nnnnn
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 or enjoyable, 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."