This Week on perl5-porters (26 August / 1st September 2002)
This week, we're back to our regularly scheduled p5p report, straight
from my keyboard's mouth. Many thanks to Elizabeth Mattjisen who
provided the two previous reports, while I was away from p5p and from
whatever might evocate more or less a computer.
More on the socket memory leak
A workaround has been found for the PerlIO / socket memory leak reported
last week (and that was reported again this week) : just define the
PERLIO environment variable to be "perlio". (This environment variable,
documented in 5.8.0's perlrun manpage, controls the default layers for
I/O operations.) (While I'm writing this, I think that the same result
may be achieved by using the "open" pragma, but I haven't tested.)
share() returns a list
Michael G Schwern complained about the "share" function of
"threads::shared" : idioms like
$scalar = share(23);
$hash = share({ foo => 23 });
$array = share([1,2,3]);
don't work, because "share" expects a scalar variable. In fact, this
should be written
$scalar = &share(23);
$hash = &share({ foo => 23 });
$array = &share([1,2,3]);
to bypass the prototype, and the "threads" module should be loaded
before "threads::shared".
http://groups.google.com/groups?threadm=20020826114648.GK758%40ool-18b93024.dyn.optonline.net
Michael then provided a patch to fix "threads::shared"'s behavior when
threads are not enabled.
On a similar subject, Michael wondered why the return value of "lock()"
is not documented anywhere. The definitive answer (which would be a
patch) was not given.
http://groups.google.com/groups?threadm=20020828130525.GH773%40ool-18b93024.dyn.optonline.net
An attempt at the perl6ish pragma
Rafael (your summarizer) submitted a patch to implement a new pragma,
"perl6ish". This pragma (once alluded to by Hugo) is intended to
optionally enable Perl 6-like constructs to come. In this first version,
it can be used to enable the "//" and "//=" operators (that would be
disabled by default).
Hugo didn't decide yet whether the defined-or operators should be
explicitly enabled. H.Merijn Brand advocated that it should be included
by default, being *99.9999 % backward compatible*, except in cases weird
enough to be suspect anyway.
http://groups.google.com/groups?threadm=20020827230527.04077a55.rgarciasuarez%40free.fr
Perl 5 Magic Cookies
Arthur Bergman made a very interesting proposal for Perl 5.9 : use PMCs
(like in Parrot) instead of the current system of typing and magic. If
it's done, it'll surely need a large amount of work, so volunteers are
welcome.
http://groups.google.com/groups?threadm=80B5B7B6-BB96-11D6-BE3E-003065D64CBE%40contiller.se
On core modules that live on CPAN
Several core modules that have a dual life on CPAN were upgraded : Test,
Test::Simple, ExtUtils::Constant, Encode (ExtUtils::MakeMaker and
Time::Hires are waiting for their turns.)
Nicholas Clark asked for a simple way to find out whether a file
distributed with the core exists also in a CPAN module, and suggested a
to make up a manifest for those files. Jos Boumans provided a first
rough script to query the CPAN database, but I doubt it's sufficient for
now.
http://groups.google.com/groups?threadm=20020831182845.GI302%40Bagpuss.unfortu.net
Version strings
John Peacock proudly continued his work on v-strings. He provided some
amount of patches to change the way that v-strings works in perl,
basically turning them into objects.
I must admit I haven't got all the details, and moreover the definitive
syntax and semantics of the version strings doesn't appear to have been
fully decided right now, so here are the links to the relevant threads :
http://groups.google.com/groups?threadm=3D6CF3EA.2060303%40rowman.com
John's patch, with the details of the changes :
http://groups.google.com/groups?threadm=3D6D835C.50809%40rowman.com
John is now working on allowing operator overloading from within XS
code.
http://groups.google.com/groups?threadm=3D7206B1.7040707%40rowman.com
Memoize bug
Tony Bowden found a nasty bug with Memoize, about which Mark-Jason
Dominus says : *This appears to be a bug with Perl's handling of @_ in
conjunction with magic goto.* Scary.
The discussion then turned towards the fact that push and pop were more
efficient than shift and unshift, and how to improve this.
http://groups.google.com/groups?threadm=20020829160934.GA12125%40soto.kasei.com
In brief
Robert Spier writes : *We've isolated and squashed the problem causing
some messages from the perl.org mailing lists to not show up on
groups.google.com.* So I can continue to use those ultra-long google
URLs in my summaries!
Luke Palmer asked whether regular expressions on streams are planned for
5.9.x. As Hugo is willing to work quite extensively on the regex engine,
this is something that may or may not happen, depending on whether it's
feasible without impacting the performance of regular regular
expressions.
Elizabeth Mattijsen made some memory benchmarks on the benefit of using
"Autoloader" in threaded programs. Apparently it's possible to save
memory in threads by postponing the loading of subroutines until the
moment the threads are started.
B::Deparse now handles CHECK blocks.
Yitzchak Scott-Thoennes provided a patch so blessed "qr//" objects now
stringify like their non-blessed counterparts.
Hugo fixed really quickly a regexp bug on the non-greedy quantifier
"??", reported by Randal Schwartz. (Bug #16733.)
Ed Santiago reported and corrected a bug on POSIX::isprint (and similar
functions -- bug #16799.)
Marc Lehmann reported that multibyte characters can't be used as
separators for the various quotelike operators. Bug #16823.
After a long outgoing discussion about Config.pm being slow and bloated,
Michael G Schwern tried to make it faster and more lightweight,
apparently without great success yet.
Elizabeth Mattijsen wondered again about the proper way to overload
"lock()". This is not as easy as it looks.
About this summary
This summary brought to you by Rafael Garcia-Suarez, back in front of
his keyboard. It's also available via a mailing list, which subscription
address is [EMAIL PROTECTED]