develooper Front page | perl.perl5.porters | Postings from March 2008

This Week on perl5-porters - 16-22 March 2008

Thread Next
David Landgren
March 29, 2008 14:56
This Week on perl5-porters - 16-22 March 2008
Message ID:
This Week on perl5-porters - 16-22 March 2008

   "I suspect that by now the Parrot code base has moved on sufficiently
   that it's faster and cleaner to start from scratch than to try to
   merge over that code. I might be wrong, but I'd suggest keeping "redo
   from start" as an option." -- Nicholas Clark, not wishing to flog a
   dead horse.

Topics of Interest

Lexical "" and ""

   We now return you to last week's discussion about "Fatal" (issuing a
   warning become a fatal error that halts execution) and how Paul
   Fenwick has begun work to make the effect lexical (that is, scoped to
   the current code block).

   First off, it appears that "use lethal" has lost out to "use autodie",
   which doesn't seem like an improvement, but it has the pumpking's

   As the code was more or less ready to be pulled into the code base,
   the question was what to do about dual-lifing the module, since
   lexical pragmas aren't available in 5.8 and below. Nonetheless, it
   would be nice to get rid of the AUTOLOAD craziness on 5.8 and 5.6.
   Further backwards compatibility would not be required as it is
   doubtful that anyone stuck on such ancient versions would be using
   "Fatal" in the first place.

   Aristotle Pagaltzis thought it would be useful to have shorthand
   import lists to make warnings from all core functions dealing with,
   for instance, I/O, to invoke the Fatal machinery. He was also a little
   doubtful about wedging the pragma into the Fatal namespace. It would
   be better to have Fatal and the autodie pragma be APIs into the same
   underlying code.

   There was a certain amount of discussion about what happens when
   "Fatal" is used at the package level, and then a "no autodie" pragma
   is invoked in a scope. Paul hinted that he'd be happy to implement
   whatever the concensus turned out to be, but while there wasn't
   exactly disagreement over anything, some of the corner cases had some
   pretty horrible choices.

   The messages that "Fatal" produces when it does its stuff also came
   under fire. Paul said he'd look cleaning that up. Aristotle even
   volunteered to chip in with the task if needed.

     one thread

     and another

Wanted: interesting self contained task

   Nicholas Clark was a bit sad that the idea of learning about how to
   hack on perl's internals attracted so little interest. He concluded
   that it would not be worth the effort to write up a conference talk on
   the matter if it was likely that no new people became interested in
   hacking on perl.

   Rick Delaney disagreed and said he that thought the self-contained
   task idea was worth pursuing. All that is needed is to find another
   task, and set up a mentor.

     rewrite the peep-hole optimiser

Perl @ 33536

   Nicholas Clark released another snapshot that is asymptotically
   approaching 5.8.9. At this point the "ExtUtils::Install" issues
   haven't quite settled down on Windows (but subsequent patches to the
   list indicate that this is close to being fixed).

   Improvements in this snapshot include the quashing of intermittent
   threads failures and that it builds out of the box on Stratus VOS.

   Steve Hay mentioned that there a couple of his patches that ought to
   go in as they quieten a number of compiler warnings on Windows.

"Devel::Size" and bleadperl

   Tels noticed (in bug #33530) that "Devel::Size" was no longer
   buildable under bleadperl, mainly due to the promotion of regexps to
   first-class REGEXP datatypes. Reini Urban fixed it up as best he could
   and added an error message that pleased Paul Johnson's sense of

perl and CPAN distributors

   It all started out with the simple wish of Gabor Szabo to hoist the
   information about Perl ports from out onto the Perl5 wiki in
   order to allow many hands keep it up to date.

   The thread then developed into a long discussion about how
   distributors of operating systems (such as Debian) go about including
   Perl in their distribution. There was much talk about the relative
   merits of strategies for dealing with architecture-dependant (read:
   XS) components, dual-life modules, and fitting in the distribution
   packaging schemes.

   Rafael Garcia-Suarez hinted that he wanted to take a fresh approach to
   these issues in 5.12.

   One of the main problems, articulated by Michael G. Schwern, is the
   persistent (literally) difficulty in modifying @INC locally, without
   resorting to sub-optimal hacks like

   In the final analysis, we need to allow Perl to allow itself to be
   driven by the host packaging system whilst retaining the ability for a
   local site to include a fresh new Perl module of which the packaging
   system has not yet caught up with.

Is "posix_fallocate()" a possible candidate for

   Joshau Hoblitt wondered if there was any interest in exposing the
   "posix_fallocate" function to Perl, which allows one to ask the host
   for enough contiguous space in which to write out really huge files,
   the idea being to minimise fragmentation as far as possible.

   Craig A. Berry replied that any serious patch would be seriously

Eliminate cut-n-paste code in dump.c

   Jim Cromie spotted a quick way to chop around 150 lines from dump.c.
   Reini Urban noted that part of the code in question was duplicated in
   various B and Op modules, so it would be nice to expose the underlying
   code via an API, which would simplify the task of keeping these
   ancillary modules in sync.

Faster safe signals?

   Nicholas Clark wondered if we could have faster safe signals by
   pushing the safe signal check down out of the core runloop into a
   small number of suitably hot opcodes.

   Tim Bunce wondered if adding branch prediction hints in suitable
   places might not produce an even greater performance boost.

   All of the experiments tended to produce results whose differences
   were lost in the noise.

perl 5.10.1 plan

   Dave Mitchell asked what was needed in order to release 5.10.1, such
   as outright breakages from 5.8.x and fixes for new things in 5.10.0,
   such as some of the quirky edges in "given"/"when", where it is
   important to nail them down quickly before too many people get used to
   them the way they are now.

   Michael G. Schwern mentioned the @_ slowdown (which is no more),
   problems with "ExtUtils::Install", making sure things build out of the
   box on Vista and a list of issues that have arisen with smart

"local $@" has an unwanted side effect

   Yuval Kogman described a scenario in which "local $@" doesn't do the
   right thing. It boils down to the latter day "DESTROY" method
   interfering with the orderly behaviour of unwinding exceptions and
   transferring information via $@.

   After a long discussion as to whether it would be possible to fix the
   current behaviour, short of introducing a putative "@@" variable,
   David Nicol suggested a documentation improvement to describe exactly
   how things are now, and that's what made it in.

Bug tracking system

   RT sucks. Bugzilla rulez.


TODO of the week

   (based on a suggestion by Nicholas Clark in private correspondence).

   Here's *your* chance to get your name in lights, or at least in the
   following section of "This Week on perl5-porters". Take a TODO item,
   and... do it! Each week, a random TODO will be featured. To start the
   ball rolling, we have:

Merge common code in installperl and installman

   There are some common subroutines and a common "BEGIN" block in
   installperl and installman. These should probably be merged. It would
   also be good to check for duplication in all the utility scripts
   supplied in the source tarball. It might be good to move them all to a
   subdirectory, but this would require careful checking to find all
   places that call them, and change those correctly.

Patches of Interest

"ExtUtils::Install" under Cygwin

   Steve Hay thought he had the patch to end all patches to get
   "POSIX::access" working sensibly on Cygwin using all the compilers he
   could get his hands on. No-one commented on it, apart from Yves Orton
   via IRC, so Nicholas Clark committed it.

New and old bugs from RT

"PERL_NO_SHORT_NAMES" incompatible with perl.h (#51762)

   Michael Fowler (of the Debian Project) identified a problem with
   "PERL_NO_SHORT_NAMES" which results in undefined symbols occurring at
   link time. No answers as yet.

"open(OUT, ">-")" is not "open(OUT, ">", "-")" (#51842)

   Himanshu G. tripped over the 3-arg open and ">-" (STDOUT). Ronald J.
   Kimball asked how the documentation could be improved to clarify the

Deparse interpolation in regex literal (#51848)

   Zsban Ambrus uncovered a deparsing problem in 5.10 (but not 5.8)
   whereby "qr/${x}y/" produces "/$xy/", which is definitely wrong.

UTF-8 non-characters (#51918)

   Chris Hall opened a ticket to say that the Encode distribution's
   "decode" and "encode" routines only recognise "U+FFFF" as a
   non-character, but 65 others, such as "U+FFFE" and "U+10FFFF" and
   waved through as being valid characters.

Inconsistent handling of characters with value > 0x7FFF_FFFF and other 
issues (#51936)

   Even more scary stuff about Unicode non-characters and 13-byte
   extended sequences that fairly had my head spinning.

Typo on regular expression at "perlopentut" manual page. (#51964)

   Pancho found a very silly typo in a code fragment in the
   documentation, so Rafael fixed it.

     a patch to remove one character

Document $var, $arg, $type and $ntype XS variables (#51992)

   Michael G. Schwern was annoyed at the way perlxs waffles on about
   these variables without ever really getting around to explaining what
   they are. Michael promised that is someone could explain them to him
   then he would make improvements to the documentation.

Warn/abort on attempted perl exit (#52000)

   John Gardiner Myers offered a patch (but no tests) to convert an
   attempt to call "exit" into a warning. This is a highly desirable
   feature to have in a multi-threaded environment where a single "exit"
   can really ruin your day (especially when the "exit" comes hidden in
   something downloaded from CPAN)...

   The patch makes a Perl stack trace available to a "__WARN__" handler
   so that the offending code can be tracked down.

Perl5 Bug Summary

     1795 (+9 -6)

In Brief

   Sérgio Durigan Júnior had a few questions about compiling a 64-bit
   Perl in a 32-bit system following on from his problems with failed
   tests on PPC64. H.Merijn Brand set him straight.

     64 bits for all

   Sérgio also asked about make distclean and config.arch but received no

   But feedback from H.Merijn on how to solve his problem in a better way
   led to the resurrection of the rarely used config.over technique for
   overwriting Configure behaviour.

   As well as some problems when setting the libraries' installation

   Having pulled the rug up over things long since swept away and
   forgotten about, Sérgio added some smarts to "make distclean" remove
   config.arch. H.Merijn applied the concept, if not the patch itself, to

   Paul Green reported that a smoke of perl@33536 on Stratus VOS issued a
   number of errors that were all due to Stratus VOS's own take on
   reality, and not (or nearly never) Perl's fault. He thus lifted
   Stratus's option to stall the release of 5.8.9.

     98.68% ok

   Jim Cromie wrote a patch to improve IS_NUM_COMPARE by coalescing all
   the opcode numbers involved to be contiguous. He was a bit peeved that
   it didn't reduce the resulting assembly code, but figured that at
   least it renders the code less sensitive to the ability of the C
   compiler to perform sophisticated optimisations.

   Thanks in large part to Eric Wilhelm's tireless efforts, Perl is again
   a participant in Google's Summer of Code (at least as far as the
   northern hemisphere is concerned).

     it's official

   And regarding the GSoC, there is a list of Things To Do.

   Reini Urban uploaded his Mperl compiler and optree debugger. No-one

   Robin Barker added some optional verbosity to and friends.

   Gerard Goossen stripped out some unnecessarily complex code when
   dealing with MAD. Unapplied.

   As tweaked the keys for sub and var attributes to avoid clashes with
   arrow operators.

   Michael G. Schwern reported that the patent for "Software Package
   Verification" was nothing to worry about. There had been some concern
   in the past that Perl's test infrastructure could have been covered by
   its scope.

   H.Merijn Brand reported that perl's Configure script had been ported
   to "meta-3.5-20".

   Vincent Pit went looking for double warnings for single errors, and
   found two. "perl -we '\&$x'" used to spit out the same error twice
   (along with four others).

   and "perl -we 'my $a; substr $a, 0, 10, "foo"'" did much the same, so
   he arranged things to have $a silently upgraded to an empty string
   beforehand. Both patches applied.

Last week's summary

     This Week on perl5-porters - 9-15 March 2008

About this summary

   This summary was written by David Landgren. It is hopelessly late; I
   crave the indulgence of my readers. It was my birthday this week, or
   at least the attendant celebrations, and on top of that, a supermarket
   chain obsessed more with profit motives than the well-being of its
   clients sold my family beef well past its due date, and, well, I'll
   spare you the details...

   Weekly summaries are published on and posted on a
   mailing list, (subscription: The
   archive is at 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.

Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About