This Week on perl5-porters - 14-20 June 2008
David Nicol: Does pushing all exceptions to @@ whenever $@ gets
assigned to break anything?
Abigail: In theory, it could, as @@ is a "normal" array that can be
used as such. But I doubt anything serious will break. I'd say anyone
that uses a punctuation variable that currently has no special meaning
does so at his/her own risk, and doesn't have the right to complain if
it does get special meaning.
-- Abigail, suggesting that a little backwards compatibility breakage
from time to time can be good for the soul.
Topics of Interest
Module::Build changes for VMS
Craig Berry sorted out the changes for "Module::Build" that had made
it to blead but not to the "M::B" repository, and tidied them up so
that Ken Williams could apply them with a minimum of fuss.
http://xrl.us/gpjvm
Attempt to Configure under Bash on VMS results.
John E. Malmberg, at a loss as to how to entertain himself, tried to
configure Perl using the GNV/bash subsystem on VMS. After examining
dozens of problems, he concluded that "it looks like a bit of work
before VMS can run the UNIX configure script".
One fundamental problem is that the test programs are there to test
for C routines, but if Configure fails to spot the required header
file in the first place, it will skip the test altogether, even though
VMS compilers have ways of finding header files in all sorts of
VMS-specific ways.
Peter Prymmer suggested that a hints/vms.sh might allow a sane GNV
environment to be set up, which could improve Configure's chances of
success.
Paul Green, paramount wrangler of Perl on Stratus VOS suggested that
it was unlikely that pushing changes back to the "autoconf" authors
was a viable approach. He did that five years ago, and he's still
waiting for the changes to propagate out to various projects that use
it. He advised John to tweak the VMS to work with the existing
framework.
http://xrl.us/gpjvu
Perl 5.8 and perl 5.10 differences on UTF/Pack things
Alberto Simões ran into trouble with the changes that Ton added in
5.10 to make "pack"/"unpack" self consistent. He wasn't sure what
technique should be used to ensure the same behaviour on both versions
of Perl; Nicholas Clark suggested side-stepping the problem
altogether.
the clark gambit
http://xrl.us/gpjv2
Empty regex
Alfie accidentally trod in a thread from last month concerning the use
of "qr/$var/" when $var is empty, thus reusing the previous pattern
used for matching.
This attracted a considerable amount of discussion, with Yitzchak
Scott-Thoennes contributing the following gem:
my $x = qr//;
ok("foo" =~ /foo/ && "bar" =~ /$x$x/);
ok("foo" =~ /foo/ && "bar" =~ /$x/);
in which the first test succeeds, and the second test fails. Nicholas
Clark wanted to know if there was a TODO for this (Yitzchak thought
probably not), and which behaviour was the most desirable.
http://xrl.us/gpjv8
How to dig through symbol tables
Sean O'Rourke was trying to inspect symbol tables, and noticed that
*FOO{SCALAR} was always defined, and wondered if that was because he
was prodding too hard. Ben Morrow confirmed that he was seeing the
expected behaviour, although Yitzchak Scott-Thoennes pointed out that
"PERL_DONT_CREATE_GVSV" changes the picture somewhat.
http://xrl.us/gpjwe
A Project to get Perl supported on Google App Engine
Steven Adkins mentioned the project (at this stage not much more than
a wish) to get Perl supported as a language for Google's App Engine.
Not much came out of the discussion, apart from Ævar Arnfjörð
Bjarmason who asked if there was a precise description of the sandbox
environment the hosted applications would run in (such as no XS
modules or system calls).
http://xrl.us/gpjwk
Incorrect variable reported in uninitialized value warning
Yuval Kogman managed to fool the new "variable name reported in
uninitialized value" warnings with a simple code snippet. Dave
Mitchell fixed the problem a few hours later.
This inspired Nicholas Clark to go looking, and find a more devious
case that remained broken. Dave went looking and found a few more, and
theoretically nailed them all with an additional patch.
desperately seeking PUSHs(&PL_sv_undef)
http://xrl.us/gpjwr
TODO of the week
A task that will get your name mentioned in the description of the
"Highlights of 5.12".
make ithreads more robust
Fix Perl_sv_dup, et al so that threads can return objects.
(hint: you have more than one week to achieve this).
Patches of Interest
.gitignore file
Florian Ragwitz began to update .gitignore files all over the codebase
until Rafaël Garcia-Suarez gently explained that the files didn't
exist in the repository yet, given that the porters had not yet
switched over to git.
Sam Vilain, owner and manager of the git mirror of the Perforce
repository, outlined a mechanism he intended to put into place to
allow people to start using git now, while not interfering with
Perforce. Rafaël gave the approach the thumbs up.
http://xrl.us/gpjwx
At the same time, Sam added a little script to parse perforce change
numbers, and return the git revision ID when captured, or 'git-log'
output otherwise. Unapplied.
http://xrl.us/gpjw5
TODO B::Deparse cpan #33708
Reini dusted off the old TODO test from the CPAN report and tidied it
up to suit blead. Applied by Rafaël.
http://xrl.us/gpjxb
pp_sys.c: "gethostbyaddr"
H.Merijn Brand asked for help to figure out what was the best way for
dealing with an HP-UX bug, since "gethostbyaddr" will use a DNS
resolver whenever it finds one, regardless of what /etc/resolv.conf
says.
routing around brain damage
http://xrl.us/gpjxd
In the process of tracking down that problem, H.Merijn discovered that
HP-UX's C compiler has a warnings dial that goes up to 11. So he
cranked it up and posted the results to the list, to see if anyone was
inspired to adjust the code to reduce the quantity.
nope
http://xrl.us/gpjxh
"Configure" - "d_sprintf_returns_strlen"
Jerry D. Hedden noticed that if the test program used to detect the
setting for "d_sprintf_returns_strlen" failed to compile, no-one would
have been any the wiser. Unapplied.
now you would know
http://xrl.us/gpjxj
New and old bugs from RT
Unix Domain sockaddr returned by recv is not acceptable to
"Socket::unpack_sockaddr_un" (#2052)
Renée Bäcker noticed that one of the oldest still-open bugs in the
database was no more.
seems to be fixed
http://xrl.us/gpjxo
As does "Lexical objects not destroyed at end of scope" (#3308)
http://xrl.us/gpjxs
foreach spuriously autovivifies (#2166)
Mike Guy originally pointed out that "foreach (@h{a, b}) { }"
autovivifies $h{a} and $h{b}, when it would have been nice not to.
Renée didn't see why it should, but since it's been known about and
relied upon for so long, it may no longer be fixed.
Bo Lindbergh showed how a "do" block could be used as a work-around.
EWONTFIX
http://xrl.us/gpjxy
Issue with the exists function (#45147)
Renée also added another datapoint to this problem, narrowing the
effect to one implicating "@-".
http://xrl.us/gpjx6
Buffer overflow in "win32_select()" (PATCH included) (#46309)
Risto Kankkunen had identified this, and proposed a patch, back in
October 2007. Rafaël applied it to blead this week.
http://xrl.us/gpjyc
"Out of memory ... sbrk()" on FreeBSD-6.x for v.5.8.x but not v.5.6.x
(#46381)
Rafael also applied Slaven Rezic's patch that fixes this problem.
http://xrl.us/gpjyg
as well as a a patch to stat.t from John P. Linderman, thus resolving
bug #47746.
http://xrl.us/gpjyk
Regexp optimisation affected by threads (#55600)
John Gardiner Myers had identified a problem with pattern matches
being performed slowly in threads, since a character class
optimisation was skipped. Dave Mitchell grovelled through the source
and discovered why the optimisation was suppressed, and why it wasn't
be re-enabled. Unfortunately Dave isn't familiar with this part of the
code and didn't want to hazard a fix.
http://xrl.us/gpjyp
perlbug refactoring and prose cleanup (#55844)
Jesse Vincent consolidated the various patches to "perlbug" from last
week. Paul Johnson stopped by to comment that he hated the linguistic
drift that has made "issue" become synonymous with "bug", "problem" or
"question". (note to self: guilty as charged).
On a completely different note, Paul also thought that "autodie" (the
name, not the concept) is awful.
a pity the alternatives are worse
http://xrl.us/gpjyt
"h2xs" does not handle properly enum constants (#55896)
[EMAIL PROTECTED] reported an issue, no, *problem*, with XS bindings to
interface C code that uses "enum"s, and a pointer to a blog that
provides additional commentary.
Steve Peters thought that all the problems that were known at the time
the blog entry was written had been addressed, so he wasn't sure if it
was still relevant. But he did want to find out more about the
specific problem being encountered, in case there was more "enum" work
that needed doing.
http://xrl.us/gpjyz
Iteration order of hash keys doesn't appear random (#55952)
Jonathon Sailor wondered why hash keys were always iterated in the
same order, regardless of how "PERL_HASH_SEED" is set. Turns out the
documentation was wrong.
http://xrl.us/gpjy7
miniperl SIGBUS on test during build Sunos8 64-bit (#55968)
Someone at Sony filed a report about failing to build on Solaris. Andy
Dougherty made a few educated guesses about what the problem was, and
suggested a recipe that might work, and/or a copy of config.sh to
figure what the problem was.
http://xrl.us/gpjzb
problem with miniperl (#55980)
Shanthi M Srinivasan had a problem with libraries on a 64-bit Linux
box not being picked up. Andy explained that the problem was resolved
in 5.10 (which was released six months (!) ago). For people stuck with
5.8, the fix is simple, just requiring /lib64 and /usr/lib64 to be
specified during configuration.
http://xrl.us/gpjzh
"return return" (#56150)
Nicholas Clark wondered why this wasn't a syntax error. Rafaël
Garcia-Suarez showed him why it was a feature.
The thread then expanded into a very long discussion about the
(f)utility of using an explicit "return" statement.
obviously you've never tried to return a reference to a hash
http://xrl.us/gpjzq
"(((??{1 + $^N})))" behaves differently in 5.10.0 than in blead (#56194)
While researching whether bug #27603 had been fixed, Bram discovered
that "123 =~ /^(\d)(((??{1+$^N})))+$/ ? 1 : 0" return 0 or 1,
depending on whether one uses 5.10.0 or 5.11.0 (or any suitable blead)
to run the code. No replies, but it's obviously some sort of
regression that wasn't nailed down by a test.
of course, it didn't work at all in 5.8
http://xrl.us/gpjzu
Attempt to free unreferenced scalar: SV... (#56202)
Mike Capella reported a problem with an enormous list of "qr/.../o"
patterns producing some interesting emergent behaviour. Bram suggested
he get rid of the "/o" modifiers. Mike wanted to know the reason but
no-one clued him in. In the meantime, Mike came up with a work-around,
but since the appearance of the error seemed to be dependent on the
number of patterns used, he thought it indicated some sort of overflow
situation, should someone with the necessary internals skills feel
like looking into it.
not today
http://xrl.us/gpjz2
Perl5 Bug Summary
Hmm, four more this week than last week.
271 new + 1275 open = 1546 (+12 -8)
http://xrl.us/gpjz6
http://rt.perl.org/rt3/NoAuth/perl5/Overview.html
New Core Modules
"threads::shared"
Version 1.23 is alive and kicking, thanks to Jerry D. Hedden. The
change is an attempt to stamp out timing errors that cause
spurious failures in the test suite.
http://xrl.us/gpj2a
In Brief
Paul Fenwick asked about accessing caller's %^H at runtime in 5.8.x,
as part of his ongoing "autodie" adventure. Sartak suggested he look
at chocolateboy's "Devel::Hints::Lexical" for inspiration. Paul
admitted having spoken to chocolateboy at length about that very
module, and explained that it didn't really go as far as he needed.
http://xrl.us/gpj2e
Paul then shared a monologue with us regarding accessing caller's $^H
in 5.8 and 5.10.
they all lived happily ever after
http://xrl.us/gpj2k
Crawford Curry mentioned the incomplete documentation of
"CGI::charset" (in cpan #36817).
paging mr. stein
http://xrl.us/gpj2r
In a followup to the changes in "m//m" in 5.10 thread, Eric Brine
suggested that the documentation in "perlop" needed updating.
http://xrl.us/gpj2x
Niko Tyni reported that the Debian project had discovered that the
latest "File::Path::rmtree" makes symlink targets world-writable.
something else for my copious spare time
http://xrl.us/gpj25
Last week's summary
Jan Dubois picked up on last week's summary of why "IPC::Run" is
preferable to "system", explaining that on Win32 it is rather
inefficient as it depends on additional helper processes to get the
job done. As a result, the variable $^X (the name of the current copy
of Perl) doesn't contain what one might expect.
An additional complication is that the exit status counter on Win32 is
a 32-bit quantity and thus does not even fit in $?. One solution would
be to borrow from VMS, and implement a sane "${^CHILD_ERROR_NATIVE}"
variable.
Worse, if a child process returns -1... In certain circumstances, the
parent runs the child a second time.
And then they started talking about losing $@ from an "eval" all over
again. Mark Mielke nailed the problem when he said that the problem is
that $@ is a global, but "eval" is inherently recursive.
This Week on perl5-porters - 1-6 June 2008
http://xrl.us/et7yb
About this summary
This summary was written by David Landgren.
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 or attending a YAPC to help support the development of
Perl.
--
stubborn tiny lights vs. clustering darkness forever ok?