This Week on perl5-porters (21-27 October 2002)
This week was moderately busy for the Perl 5 porters. The highlights
feature various crashes and considerations about Unicode string
handling; not forgetting, as usual, about newly fixed bugs, and bugs yet
to be fixed.
Crash perl by trashing symbol tables
Tassilo v. Parseval reported a way to make Perl dump core (bug #18045):
emptying the %main:: symbol table, and issuing a warning. This bug has
been already corrected in bleadperl (it's due to the standard error file
handle being freed when it's removed from %main::.) But Tassilo and
Andreas J. Koenig came up with two other ways to issue a core dump:
using require() after emptying %main::, and emptying %main:: in a BEGIN
block.
Rafael Garcia-Suarez explained that this kind of bugs have a common
cause: *emptying %:: removes the subroutine or the currently executing
code, which then tries to walk on a vanishing floor, and crashes.*
(However he didn't provide a patch, because he didn't found a way to
protect perl efficiently against all those cases once and for all.)
http://archive.develooper.com/perl5-porters@;perl.org/msg88248.html
Parser crash
A bug reported last month (bug #17589) had been reduced to a small use
case by Dave Mitchell : sometimes, when the incorrect construct "sub;"
(an empty forward declaration) is encountered, the Perl parser
segfaults. This is due to the annoying fact that the parser constructs
here an internal state that is never restored properly, and this leads
to a core dump before it has a chance to report the syntax error. To fix
this, one could prevent the parser to get the offending tokens by
hard-coding the verification directly into the lexer. Apparently, Rafael
Garcia-Suarez is working on a patch.
http://archive.develooper.com/perl5-porters@;perl.org/msg87122.html
Unicode questions
That's been a long time since the last long Unicode thread. H.Merijn
Brand began to ask what was the exact behavior of perl, when printing an
Unicode character to STDOUT. Andreas Koenig pointed out that the output
filter should be set to ":utf8" (via binmode()), since Merijn is not
using an UTF8 locale. Another way to achieve this result is to set the
PERLIO environment variable to "utf8", or to use the "open" pragma, but
this sets an input and/or output filter on all handles, which is too
strong in many cases.
What Merijn is actually asking for, is a *command line option to turn on
":utf8" for "STD(IN|OUT|ERR)"* (maybe a pragma? Hugo proposed something
like "-Mstdlayer=utf8").
The discussion also implied some consideration over charnames aliases.
As Merijn says *that charnames is an exception as such, and /could/
warrant promotion of strings with \N{...} to utf8, since \N{...} /needs/
charnames anyway.* Andreas disagreed.
Later in the thread, Merijn wrote that he's *not volunteering to take
over the summaries*.
http://archive.develooper.com/perl5-porters@;perl.org/msg88360.html
Nested FETCHes
Dave Mitchell reported that nested FETCHes on tied arrays and hashes
don't work, because the fetched values are temporarily stored in global
variables. After a little discussion with Hugo, Dave announced that he's
going to see what he can do about it.
http://archive.develooper.com/perl5-porters@;perl.org/msg88288.html
In brief
chromatic added a test for the (previously untested) IO module. However
it doesn't test yet for the new deprecation warning on a parameterless
"use IO;", introduced last week.
Dan Kogai provided a patch, on the behalf of Inaba Hiroto, to make
"tr///" work with Unicode ranges, when the "encoding" pragma is used.
Dan Kogai was apparently the first to notice that one of the tests to
the new Net::Ping 2.23 module fails on some platforms, due to
portability problems. This test is now skipped for now in bleadperl.
Barrie Slaymaker reported that read()ing on an unopened filehandle
doesn't set $!. Slaven Rezic provided a patch, that corrects also a
similar problem for binmode(), getc() and write(). (Bug #18048).
Rafael provided a patch to ExtUtils::MakeMaker to make life easier for
those of us who keep Perl modules (or bleadperl itself) in a Subversion
repository. Not applied yet. (This Rafael guy also advertised his latest
hack, "perlpatch2svn", a script that imports bleadperl patches into a
Subversion repository.)
David Kernen reported that the -I command-line option split paths on
colons (on Unix), as if they were provided via the PERL5LIB environment
variable (bug #18066). Slaven Rezic pointed a way to fix this (but,
although being a prolific patcher, he didn't provide a patch.)
H.Merijn Brand found that the installation of DBD-ODBC-0.45_18 reports
an error "DBI version 1.201 required--this is only version 1.30" with
bleadperl. This is due to the recent changes in the version handling ;
John Peacock commented that the DBI versioning scheme doesn't follow the
current mainstream model (which implicitly splits floating-point
versions at three decimal place intervals.)
Matthew O. Persico pointed out that ExtUtils::Installed only looks for
installed modules only in the standard archlib and sitearch directories,
and suggested that it could optionally search other directories (e.g.
those in @INC).
Yves Orton began to test Perl on Windows 2000, compiled with MS Visual
Studio 6. Apparently non-threaded builds don't feel well. Moreover, the
threaded builds on Windows started to show errors on the usual
portability suspects: forks and socketpairs.
Dan Kogai released Encode 1.80. Paul Marquess released DB_File 1.806
(and also Compress::Zlib 1.17, but that's not a core module).
About this summary
This summary brought to you, schizoidly, by Rafael Garcia-Suarez. It's
also available via a mailing list, which subscription address is
[EMAIL PROTECTED] Comments and corrections are, as
always, welcome.