This Week on perl5-porters (Nov 01-09 2004)

rafael on 2004-11-19T13:38:00

In this beginning of November, the porters have discussed about regression tests, using new functions from the C library when they're found, the roadmap for perl 5.10, optimisations, signals, and other miscellaneous topics.

Tests failing when core extensions not built

It's possible to configure perl without some built-in extensions, and this causes some tests to fail, so Nicholas was wondering about determining which extensions aren't enabled and skipping the corresponding tests.

  http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2004-10/msg00637.html 

Detecting strlcat() and strlcpy() in Configure

H. Merijn Brand continued working on detecting these functions, which are safer versions of strncat and strncpy. Craig Berry made it work on VMS. Adding the detection to Configure makes it easier for module writers to know if the functions are available.

  http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2004-10/msg00613.html 

Cwd test failing

Yitzchak Scott-Thoennes reported (bug #32272) this test failure, which was later found to be ignorable. Yitzchak also mentioned that Cwd and File::Spec have been repackaged as PathTools.

  http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2004-11/msg00065.html 

getXXXent functions break after recursing to grow buffer

Bug #32154, apparently caused by RedHat's patched glibc, as it didn't show up in other distributions.

  http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2004-10/msg00573.html 

Nicholas incidentally pointed out that source code is available directly

  ftp://ftp.linux.activestate.com/pub/staff/gsar/APC/perl-5.8.x/
  ftp://ftp.linux.activestate.com/pub/staff/gsar/APC/perl-current/ 

and a repository browser is at

  http://public.activestate.com/cgi-bin/perlbrowse 

Roadmap for 5.10

Rafael listed points in the roadmap for 5.10. Michael Schwern added that Module::Build and CPANPLUS should be put into the core, and Randy Sims pointed out some work that needs done on M::B first. Also mentioned was incorporating a minimal subset of Inline.

  http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2004-11/msg00115.html 

Peephole optimization

Tassilo von Parseval is working on optionalizing the peephole optimizer. Rafael pointed out that the intent of this is to make sure that the optree produced by the compiler is correct, and Hugo added that it could also be used for avoiding certain optimizations and allowing other aggressive optimizations.

  http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2004-11/msg00150.html 

Tassilo investigated further which peephole optimizations are currently mandatory for tests to pass. Jim Cromie suggested that he mess with B::Generate and optimizer, which are in need of work.

  http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2004-11/msg00185.html 

Undefining signals

Ben Morrow submitted, among other proposals, that

  $SIG{FOO} = undef;

try to block the signal FOO, then, failing that, IGNORE it. Nick Ing-Simmons brought up the problem of unmentioned signals being undef, and the badness of blocking them (in particular, $SIG{INT}).

  http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2004-11/msg00234.html 

Sharing hash values

Tels was dismayed by the inefficiency of the common "seen hash" idiom

  $seen{foo} = 1;
  if (exists $seen{foo}) { ... }

Even using undef doesn't save much, so he wondered how he could share the undef for all the hash values. It turns out Gisle Aas has already done this with Array::RefElem. Randy Sims suggested that we really want a set instead, for which Tels found Set::Object.

If you're like I was before doing the summaries, scanning for neat ideas, this thread is one you don't want to miss.

  http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2004-11/msg00288.html 

In brief

Allen Smith successfully trolled with an "-ize" vs. "-ise" comment (actually I found the discussion interesting).

Yitzchak Scott-Thoennes fixed do "c:/foo.pl" on Cygwin.

David Nicol discussed writing a distributed (network) lock manager.

Gisle Aas fixed a stack corruption in Tk, which fixing filled H.Merijn Brand with joy.

Jim Cromie continued work on optree tests, a problem with interleaving stdout and stderr on VMS and Cygwin.

Steve Peters resuscitated at least 16 old bugs on RT, only to crush most of them beneath his shoe.

References

The thread for bug number $BUGNUM can be found at http://rt.perl.org/rt3/Ticket/Display.html?id=$BUGNUM.

About this summary

This summary was written by Scott Lanning. Summaries are published weekly at http://use.perl.org/ and posted to a mailing list whose subscription address is perl5-summary-subscribe@perl.org. The archive is at http://dev.perl.org/perl5/list-summaries/. Comments and corrections are welcome.


Sharing hash values - another solution

btilly on 2004-11-19T17:39:11

The trick that I've seen is to entirely avoid creating the values:
my %seen;
undef @seen{@special};
for (@things) {
   if (exists $seen{$_}) {
     ...
   }
}
Cheers,
Ben

Re:Sharing hash values - another solution

Aristotle on 2004-11-19T21:00:38

Wouldn't that simply store undefs implicitly?

Re:Sharing hash values - another solution

btilly on 2004-11-19T21:34:40

Yes, that is the effect, but the goal is to achieve the effect using as little time as possible, and that solution does it faster.

Re:Sharing hash values - another solution

Aristotle on 2004-11-19T22:02:29

Oh; that is correct, but it wasn't clear that that was your point. The thread in point talks about memory wasted by duplicate undef scalars.

Re:Sharing hash values - another solution

btilly on 2004-11-19T22:53:32

My understanding at one point was that that solution avoided creating duplicate undef scalars. But that doesn't seem to be the case now (at least according to Devel::Size).