This Week on perl5-porters (24-30 May 2004)

This Week on perl5-porters (24-30 May 2004)

This week, you'll read in this summary more about the uninitialized warning plans for 5.8.($n+1), some XS tricks, intriguing bugs, and the different types of UIDs.

Uninitialized warnings in maint

Nicholas Clark thinks about a way to backport in maintperl the enhanced bleadperl warning, Use of uninitialized value $foo at.... However, they're not 'stable' enough to be enable the extra information by default. He lists a couple of solutions (add a class of warnings, or a new pragma, or a global flag.) Rafael favors a global flag, for example a (version-specific) PERL_5_10_ISH environment variable, while Nicholas envisions some idiom use more 'future'.

Undefined scalars in XS code

Stas Bekman asks about a wrong XS idiom, namely testing the definedness of an SV by comparing its address with &PL_sv_undef; this works when the undef() literal value is passed to the XS code, but not when a random undefined scalar is used. Gisle Aas points out that SvOK() should be used instead; Stas produces a documentation patch.

FileCache problems

Alan Burlison finds that FileCache (a little-known core module, meant to cache a large number of open filehandles) resets some signal handlers when reopening some files which have been closed in the mean time (to avoid exceeding the limit on the allowed amount of filehandles on the system.) Jerrad Pierce answers that this is by design, for the case the filehandle to be reopened is a pipe to a command. Alan disagrees with this approach (and finds that using FileCache with a pipe is a weird idea anyway) and suggests to remove the %SIG assignments.

More UTF-8 vs taint

Stas Bekman filed bug #29841, about utf8::decode() not working under -T. Dave Mitchell diagnoses the symptoms, but doesn't know what is the right fix.

UIDs and GIDs

Paul Fenwick announces that he's working on a module (Proc::UID) to manipulate Unix user ids: the famous real and effective UIDs, which have their own Perl variable counterparts, as well as the saved UID and the filesystem UID. But since perl caches the results of getuid()/getgid() in internal interpreter variables, the contents of the perl variables $<, $>, $( and $) cannot be always believed (they might have been set via an XS module). Thus Paul asks whether this cache is really a wise implementation.

Paul also wonders why saved UIDs aren't accessible natively from perl like real and effective UIDs. Rafael gives some ideas about adding an API for them.

In Brief

Nicholas released a maintenance snapshot of perl 5.8.x, and adds: The plan is for 5.8.5 code freeze at midnight (GMT) on 30th June, with RC1 soon after.

Sam Vilain finds a macro in the glibc (makedev()) that isn't correctly processed by h2xs (bug #29969). This was fixed by Wolfgang Laun.

Lionel Cons finds an incompatibility between the innards of Carp and the Safe module (bug #29851). Rafael proposed a patch.

Andy Lauder reported that in some cases, perl seems to perform a seek() before a close() (bug #29883). This is in fact a behaviour of Solaris that is reproducible with a C program, so perl isn't at fault; Alan Burlison gives a rule of thumb: you shouldn't use exit() in a child process that doesn't exec(), you should use _exit().

Using threads::shared prevents the profiler Devel::DProf from working (bug #29939).

The autouse bug (#29708) reported last week was fixed by Dave Mitchell.

Encode 2.01 was released.

About this summary

This summary was written by Rafael Garcia-Suarez. Weekly summaries are published on and posted on a mailing list, which subscription address is Comments and corrections welcome.