Front page | perl.perl5.porters |
Postings from January 2008
This Week on perl5-porters - 13-19 January 2008
From:
David Landgren
Date:
January 24, 2008 15:20
Subject:
This Week on perl5-porters - 13-19 January 2008
Message ID:
47991C89.8040303@landgren.net
This Week on perl5-porters - 13-19 January 2008
"Shifting something that's not a number shouldn't produce a number."
-- Abigail
Topics of Interest
"grep" and smart match should warn in void context
Larry Wall remarked last week that Zefram's suggestion regarding the
propagation of context from "grep"s and "map"s was how he deal with
the matter. Nicholas spelled out his understanding of the matter.
Zefram ventured further into the internals than he had ever been
before and succeeded in returning with a patch to implement warnings
in void context.
Abigail thought that the exercise was a bit of a witch hunt but Larry
was thought that it was unlikely that people had used the syntax
intentionally, so the weight of backwards compatibility was not so
great, in this particular case.
http://xrl.us/betef
"+Inf", "-Inf" and "NaN" (and maybe -0.0 for good measure)
In the thread about the latest "Math::Complex" release, Jarkko
Hietaniemi had noted that some platforms will dump core if you try to
perform floating point arithmetic on a value set to infinity. Nicholas
Clark wondered whether it was worth probing for the behaviour of these
special quantities at configuration time, in order to Do The Right
Thing on as many platforms as possible.
Zefram suggested peeking at "Data::Float", which can already isolate
exotic floating point values in pure Perl. Craig Berry pointed out
that it wasn't so much a problem of arithmetic *per se*, since just
about everything in use today implements IEEE 754 floats. It's not
even a problem of exception handling, since that is governed by the
IEEE standard as well.
The tricky part is determining what exception handling is enabled by
default on a given platform, and what can be turned on if you ask for
it politely. His gave some pointers to additional resources on the web
regarding the matter.
there's a point to all this
http://xrl.us/beteh
Inconsistent bigint behaviour (with ranges)
Moritz Lenz ran into difficulties using the range ("$x .. $y")
operator appearing to use floating point numbers instead of integers
(and hence, bigints). Tels was quick to point out that this was due to
a long-standing bug in perl: one cannot overload the ".." operator.
The "bigint" package could do so if it were possible, but alas, the
implementation is not there yet.
want your 15 minutes of fame?
http://xrl.us/betej
Jerry D. Hedden wrote a patch to make the range operator behave in a
slightly more sane manner, and this was applied by Rafael.
http://xrl.us/betem
Implementation of "rand()" in Perl 5.8.8
Dennis Williams wanted to implement "rand" in Java and wondered how it
was defined (having become lost after wading through some 18000 lines
of the Configure shell script.
Robin Barker told him how Configure chooses the best available
implementation. Bennett told him how to find out what was chosen.
http://xrl.us/beteo
"Inf" >> 1
Abigail was rather surprised to discover that left- or right-shifting
infinity returns merely a really huge number, rather than infinity.
And shifting "NaN" produces zero.
Zefram explained that infinity only really works when dealing with
floating point numbers, and bit-shifting a floating point number would
probably do no good to anyone. And the shift operators force integer
context anyway. Tels was happy to report that "bigint" gets it right.
Yitzchak Scott-Thoennes argued that it made sense to allow infinity to
be shifted down among the integers. David Nicol did not agree with
this and suggested that the way things were currently made some sort
of sense.
Zefram came back and said that it was probably too late to try and be
more strict on the matter: no doubt there's someone out there who's
relying on the property that 3 >> 1 == 1. Roland Giersig wondered what
Inf >> Inf and Inf << Inf should return, to which Zefram made a
reasonable proposition.
and I thought they said Perl was for text processing
http://xrl.us/beteq
Continuing in a numerical recipes vein, Nicholas reported that he had
committed a change that will generate a warning if code tries to
increment or decrement an integer beyond the last possible integer
representation.
at the end of the line
http://xrl.us/betes
Unfortunately, Andreas König was able to foil this plan with the
careful application of the "-O2" optimisation switch. This caused
"t/op/inc.t" to begin to fail. Nicholas Clark couldn't see a way to
sneak a couple of instructions past the compiler to make it do the
right thing. Jerry D. Hedden also found that it warned about things
that we really don't care about.
back to the drawing board
http://xrl.us/beteu
MIME types for module data
Mark Overmeer wondered if there was some overall MIME type available
for Perl that would allow module slinging around private data sets in
a more orderly manner. Zefram gave an example of what an officially
sanctioned IANA MIME type would look like. Mark wondered if you would
have to pay a visit to IANA for each module.
is this free as in beer?
http://xrl.us/betew
Onto perl 5.8.9 (Perl @ 32984)
Nicholas Clark took a snapshot of the maintenance track to see how it
would fare as a putative 5.8.9. He was hoping such a thing could be
released before the German Perl Workshop, 5.10.1 or Christmas.
Windows is behaving pretty well at the moment, thanks to Steve Hay's
tireless smoking. Other platforms were doing less well: VMS was grumpy
although Craig Berry and John E. Malmberg were on hand to smooth over
the rough bits.
David Cantrell noted severe breakage on a Cray, a Silicon Graphics
IRIX box and NetBSD/Alpha as well.
in need of TLC
http://xrl.us/bete2
In fact, IRIX cannot compile 5.10.0, for that matter.
http://xrl.us/bete4
Jerry D. Hedden also wondered about how the maint patch level should
be defined in patchlevel.h.
http://xrl.us/bete8
C for Perl programmers?
Michael G. Schwern asked how a Perl programmer who knows no C might go
about picking it up. A number of techniques were suggested, and books
proposed.
http://xrl.us/betfa
What we all want
[Note from the summariser: I have seriously overrun my time budget for
this week. The following discussions are about major changes that
people want to see in 5.12. The first items are continuations of
threads from last week. The new threads have been summarised].
am I a method call?
http://xrl.us/betfc
anonymous packages
http://xrl.us/betfe
named parameters
http://xrl.us/betfg
method declaration
http://xrl.us/betfi
saner behaviour for `length`
http://xrl.us/betfk
Direct BigInt (and BigRat) support
http://xrl.us/betfn
allowing trailing naked blocks in prototyped sub calls
Aristotle Pagaltzis wanted "foo 1, 2, 3, 4 { say @_ }" to do something
nifty, given an appropriate "foo" routine. Rafael nodded and said it
would be nice to have.
http://xrl.us/betfp
named parameters + prototypes + methods + aliases
The thread on naming subroutine parameters continued on this week with
all sorts of syntax ideas and semantic considerations bandied about.
Rafael brought it down to earth with the restating of the aliasing
syntax that has been proposed in the TODO list for a long time. The
best aspect of his proposal was that it was simple enough to stand a
reasonable chance of being implemented.
http://xrl.us/betfr
Empty attributes
As part of the named parameters thread, Peter Scott wondered why "my
$x := 24" compiled and ran normally. It turns out that it's being
parsed as an empty attribute list. So it's allowed, but it does
absolutely nothing. Peter wondered why it was so. No-one was able to
give an explanation. Rafael thought it was a parser bug until Peter
pointed to the tests that pin down the behaviour.
time for an archeological expedition
http://xrl.us/betft
Recurse into current "qr//"
Moritz Lenz has started to play with the new "(?R)" recursive sub
pattern and was saddened to discover that it couldn't recurse across a
"qr" boundary.
Yves Orton didn't dismiss the idea out of hand, but said that it
didn't weigh much against his current list of priorities. The best
chance of it happening would depend on what Dave Mitchell and he
planned to do to the regexp engine in the future.
maybe we'll get it for free
http://xrl.us/betfv
Tail calls for methods
Yuval Kogman noted that it was difficult to do tail recursion cleanly
in Perl, and suggested that with a dash of "tailcall" syntactic sugar,
it would allow the compilation phase to do the right thing. Part of
the problem concerns what to do with "caller", which was covered in a
thread a few weeks ago.
Jim Cromie restated his op mashup idea, of combining adjacent
"leavesub"/"entersub" ops. Nicholas Clark thought that it could be
prototyped using an external XS module.
http://xrl.us/betfx
A working SUPER
Johann Vromans lamented that "SUPER" referred to the superclass(es) of
the package, and not that or those of the object. Stevan Little
thought that the new MRO infrastructure in 5.10 may be of some help.
Some people mentioned "NEXT" as coming close, but a common theme was
that it was too slow. At the end of the week, no real concensus had
been reached.
that's really super, super-girl
http://xrl.us/betfz
Clean up dereferencing syntax for slices
Curtis "Ovid" Poe proposed a simplification for slicing arrays and
hashes. Everyone agrees the current syntax, especially when references
come into the picture, is pretty horrendous.
Ricardo Signes found the fatal flaw, and so Ovid suggested a more
alien syntax with a sigil after the arrow, which made Ricardo wonder
if it couldn't be done with an autoboxed method, at the expense of a
bit of verbiage.
Zefram found the fatal flaw in that idea: if the thing being sliced is
a blessed reference then the method resolution may call something
else.
back to the drawing board
http://xrl.us/betf3
Patches of Interest
Double free error in 5.10.0
Gerard Goossen proposed a patch to fix the "s///ge" / "FREETMPS"
problem. Unapplied.
http://xrl.us/betf5
Nicholas wondered if there was another way to achieve the goal.
http://xrl.us/betf7
2..Inf and beyond
The thread continued this week, with the more pragmatic porters
pointing out that one should really use a while(1) loop and increment
a counter variable each time through the loop. Michael G. Schwern said
that was okay if you were used to procedural languages, but if all you
had ever known were Perl ranges it would be nice if they did the right
thing.
At the end of thread, people started to coalesce upon the idea of an
new internal type that would provide a direct connection to a
bigintish datatype, be it a fast C library like GMP or a slower
pure-Perl implementation.
http://xrl.us/betf9
perlintern.pod: "PAD_CLONE_VARS"'s parameter list mangled
Steven Schubiger supplied a small apidoc patch, which was applied.
http://xrl.us/betgb
New and old bugs from RT
Outdated "Test::Harness::Straps" (#49504)
Imacat offered to take over the maintenance of "Test::Harness::Straps"
(insofar as this involves watching over a dying patient and waiting
until it is safe to pull the plug on the life support systems, and
made an impassioned plea defending her approach to smoke testing CPAN
modules.
Apart from that, the thread devolved into your standard argument
regarding "Module::Build" *versus* "ExtUtils::MakeMaker". Everyone
remained very polite, more credit to the porters, but the reader must
forgive the summariser for not going into more detail than saying that
the versions of the CPAN shell bundled with older releases of Perl are
the root of many problems @@@FIXME@@@
One new item to come out the discussion, however, was Michael G.
Schwern's observation that "Module::Build"'s auto-generated README was
pretty hopeless, yet it would be a Simple Matter Of Programming to
make it do a better job.
hey! Module::Build is bundled with 5.10
http://xrl.us/betgd
do your part for useful READMEs
http://rt.cpan.org//Ticket/Display.html?id=32391
"open ':locale'" now works (#49646)
Rafael Garcia-Suarez and Mashrab Kuvatov sorted out what the problem
was and fixed it up, and the thread painted the bikeshed green.
http://xrl.us/betgf
glibc error using "Tie::File" on 5.10 (#49724)
Testcase needs to be slimmed down before anything can be done to
diagnose the problem.
come and look on my screen
http://xrl.us/betgh
Regular expression delimiter sensitivity (#49800)
Someone reported a regular expression changing behaviour when run
outside or inside the debugger.
is ? a wise choice for a regexp delimiter?
http://xrl.us/betgj
Encode "from_to()" does not return on invalid conversion (#49830)
Someone spotted some new behaviour in the version of "Encode" bundled
with 5.10. Paging Dan Kogai.
http://xrl.us/betgm
XS OVERLOAD keyword causes incorrect C code generation (#49844)
Salva Fandiño reported a problem using the "OVERLOAD" clause in an XS
file. Torsten Schönfeld reported that an equivalent bug report was
filed against the "ExtUtils::ParseXS" queue, but had received no
replies.
http://xrl.us/betgo
Bad rounding on "int(log())" (#49872)
Roland Giersig ran into problems with integer truncation of
calculations involving logarithms, and was surprised by some of the
results. People explained that it was due to floating point
imprecision (as usual).
fuzzing around
http://xrl.us/betgq
"gmtime()"/"localtime()" do not use "time()" (#49914)
Well they sort of do, but Abe Timmerman discovered that if you
override "time", the "gmtime" and "localtime" routines will happily
ignore the override, and continue to use the underlying code that
returns the epoch.
time time time, see what's become of me
http://xrl.us/betgs
Ambigous Configure run/make error (#49946)
Stefan Schlotterbeck-Macht was seriously Warnocked after getting stuck
trying to cross-compile Perl onto avr32-linux platform.
hints wanted
http://xrl.us/betgu
Perl 5.10 @ISA bug (#49952)
Andrei Galea uncovered some @ISA behaviour modification in 5.10 when
using "Tk".
hairy inheritance
http://xrl.us/betgw
perl fails to compile in "B::C" (#49974)
A cautionary tail: if you "rsync" the latest source, you must ensure
that you do so with the "--delete" switch. Sometimes dead wood makes a
log jam.
we gave it the axe
http://xrl.us/betgy
Perl5 Bug Summary
14 new + 1474 open = 1788 (created 8, closed 0)
http://xrl.us/betg2
http://rt.perl.org/rt3/NoAuth/perl5/Overview.html
This is the BBC
Getopt::Euclid 0.1.0
The current state of blead made one "Getopt" module fail, this one
by Damain Conway.
that's ok, there are plenty of others
http://xrl.us/betg4
In Brief
Robin Barker had some consting goodness applied to regexp.h
http://xrl.us/betg6
H.Merijn Brand tried building perl on Cygwin and ran into trouble.
Reini Urban stepped up to help him out, offering a few suggestions
every Cygwin blead smoker needs to know.
http://xrl.us/betg8
Jerry D. Hedden had a pile of taint test fixes for Cygwin, and this
made all the tests pass. This made Nicholas Clark happy.
http://xrl.us/betha
David Landgren wondered whether "is" behaved correctly for tied
objects when one needs to write "ok($x == 1)" instead of "cmp_ok($x,
'==', 1)" but received no reply.
fringe benefits
http://xrl.us/bethc
Jan Dubois noted that "File::GlobMapper", part of the "IO::Compress"
infrastructure, should not be marked as an alpha release (since it's
now in 5.10). Paul Marquess agreed, and promised to push out a new
version, *sans* the message of doom.
good thing it's dual-lifed
http://xrl.us/bethe
Sébastien Aperghis-Tramoni found a small bug in microperl regarding
uconfig.h; Steve Peters regenerated it into a healthy state.
http://xrl.us/bethg
Steven Schubiger thought that the documentation for "sv_cmp_locale"
should not say "see also "sv_cmp_locale"". Not applied.
recursion: see recursion
http://xrl.us/bethi
Salvador Fandiño wondered if the new hints infrastructure could help
solve the bug regarding overloading constants not propagating into
string "eval"s.
gotta perlbug id?
http://xrl.us/bethk
Jan Dubois reported that "Compress::Zlib" 1.42 was failing tests on
both blead and maint, and pointed to an older thread on the matter.
Nicholas Clark backed the change out of maint.
http://xrl.us/bethn
"Text::Balance" received a better version number in maint.
http://xrl.us/bethp
Nicholas also suggested that distinguishing between "use warnings" and
"use warnings 'all'" would allow the porters to ease the restrictions
in adding new warnings to maintenance releases.
it never used to do that!
http://xrl.us/bethr
Johan Vromans complained about smoke runs complaining about
inconsistent test results between TEST and harness. Some tests are
known to be very sensitive to timing issues and system load. So the
tests should either go, or be marked as informational (and thus
insufficient grounds for aborting a launch).
all systems go
http://xrl.us/betht
While hacking on kurila, Gerard Goossen spotted what he thought may be
a latent bug in the routine "do_openn" in doio.c, and thought someone
more intimate with the code should see if it was a problem.
http://xrl.us/bethv
He also proposed a patch, not applied, that would cause "-DT" to
report forced tokens (during tokenisation).
what you always wanted to know
http://xrl.us/bethx
Andrea König produced a patch for "YAML::Syck" to make it aware of the
5.11 native REGEXP type. Audrey Tang took the patch and pushed version
1.01 out the door. Michael G. Schwern thought the patch was a bit
clunky, but Nicholas pointed out that the way it was written prevents
dead code from forming in 5.10 and below.
http://xrl.us/bethz
Jerry D. Hedden uncovered a problem with a target needed for
"suidperl". Even though the resulting binary is vaguely deprecated,
Nicholas Clark managed to get thing running smoothly again.
until the next time it breaks
http://xrl.us/beth3
Jerry noted that the change didn't make it past the door.
http://xrl.us/beth5
David Cantrell wanted to be able to "lchown" in perl 5.12, so Yitzchak
wrote a patch to do it for him.
http://xrl.us/beth7
Nicholas Clark had a bit of trouble fiddling with version numbers in
"Test::Harness", as there are now three active branches in the
repository.
head, explodes
http://xrl.us/beth9
Johnathon Rockway related a question from the "perl-qa" mailing list,
as it relates to "is_deeply" and "qr//" on 5.11
http://xrl.us/betib
Nicholas saw how "itersave" in used "struct block_loop", but wondered
why, and whether it was ever, or still, necessary.
http://xrl.us/betid
About this summary
This summary was written by David Landgren.
last week's, reduced to clear
http://xrl.us/betif
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 to help support the development of Perl.
-
This Week on perl5-porters - 13-19 January 2008
by David Landgren