This week sees consolidation on several fronts: mathoms, ops, env handling, futimes, sort... plus the usual assortment of bug fixes and enhancements.
Steve Peters remembered the history of mathoms.c in p5p dated back to 2001 and not only June/July this year, when it came to life again. Also, the Configure option which was anticipated were not ready yet at the summary time, but it is now.
Steve Peters patches the summary http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-10/msg00967.html
Concerning Cygwin, unlink
, Win32, Yitzchak Scott-Thoennes commented that he was referring to the Cygwin DLL source code and not perl when illustrating how unlink
in Cygwin mapped to the Windows API.
Yitzchak Scott-Thoennes makes things clear http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-11/msg00006.html
The recent introduction of mathoms.c produced fallout in various places this week
Gisle implements the Configure option http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-10/msg00973.html and shrinks the perl binary by 0.75% http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-11/msg00010.html Getting do_exec on Win32 back in order http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-11/msg00011.html Getting perl.h on VMS back in order http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-11/msg00136.html
ExtUtils::Constant
chromatic raised an eyebrow at Sébastien Aperghis-Tramoni's use of indirect object notation (current best practices these days dictating that one should say Object->method
rather than method Object
. Nicholas Clark discovered that the patch causes a bad failure in blead
due to dependency orderings, because somehow in blead
, FileHandle
now requires IO::File
which is not yet available during the build. Nicholas fixed it up by with some conditional require
ing in patch #25927.
The patch http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-10/msg00945.html The patch to the patch http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-10/msg00991.html
After running perl under gcov
, Nicholas noticed that about twenty ops were never hit by the test suite. It could be expected that an op like pp_dump
(which exists solely to make perl dump core) would not be covered by the test suite, but maybe some ops should (which Dave Mitchell said was the case for pp_regcmaybe
and provided a snippet to prove it).
Maybe some are obsolete and could thus be chainsawed away. Rafael Garcia-Suarez pointed out that a certain number of ops are required during compilation, but are optimised away afterwards, and thus it would be a non-trivial effort to truly get rid of them. Although he thought that pp_threadsv
and pp_setstate
could probably be let go.
Rafael then noted that he had written some XS code in the past that called some pp_*
routines directly, and mentioned that he had published a module on CPAN that lets you change the interpreter runloop on the fly.
This led Nicholas to think about the possibility of making the runloop deal with the handling of signals differently. That is, getting rid of the current PERL_ASYNC_CHECK()
(safe signals
) call in the runloop, and merely switching to a runloop that knows how to deal with a signal, when a signal is encountered.
Reported in ticket #37573 http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-10/msg00980.html Change your runloop http://search.cpan.org/dist/Runops-Switch/lib/Runops/Switch.pm Nick's second idea http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-11/msg00020.html
Andy Lester consted more stuff, spotted a couple of chances to simplify code, and dedicated the patch to Etta James:
The patch http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-10/msg00951.html Etta James http://www.etta-james.com/
... and dealt with perlio.c seperately because it's so hairy:
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-10/msg00988.html
Andy also posted the switches he's using for building perl under GCC 4.1.0 snapshots (using as many switches as possible to seek out doubtful code constructs).
Bondage and discipline http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-10/msg00989.html
and also found a lovely trailing semi-colon-on-on-if bug in pp_ftrowned
:
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-11/msg00090.html
and yet more consting
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-11/msg00124.html
and cleaning of the x2p directory
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-11/msg00123.html
Paul Marquess supplied a patch to get DB_File to run with the upcoming 4.4 release of Berkeley DB. Steve Peters applied the patch and Yitzchak wondered whether it was important enough to make sure it made its way into 5.8.8.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-11/msg00000.html
Gisle Aas continued on the thread last week about using futimes
on platforms where it is available, noting that the MacOS X manpage says that utime
is obsolete and utimes
should be used, but the Posix manpage says that utimes
is legacy, and utime
should be used for maximum portability. Sigh. Steve Peters and Gisle discussed the problem of getting Configure to probe for this.
Also, Solaris 10 has a function called futimesat
, which does everything, and more besides. (In case you were wondering, these functions deal with setting the access and modification times for files).
utime? utimes? http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-11/msg00008.html Abe Timmerman patches configure.com http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-11/msg00131.html
Robin Houston's sort/multicall patch went into blead. Rafael noticed a few puffs of smoke escape from the lab, and saw that one functionality that the patch broke was the ability to empty the array while you sort it and still retrieve the results afterwards. Since no-one was really sure why anyone would want to do a thing like that, the test was quietly dropped.
So don't try the following at home, because it's not going to work any more:
@a = (1..10); @b = sort { @a=(); ($a+1)<=>($b+1) } @a;
Nicholas was worried that the test was a guard to check for core dumps, but perl wasn't dumping core, just sorting an array of undefined elements (which seems to be the right behaviour under the circumstances).
Paul Marquess found that DB_File
revealed a couple of problems in the patch, and these problems were fixed. Jim Cromie pitched in and fixed a couple of other test errors.
Dave Mitchell had a couple of minor queries about the code but basically liked it. The conversation went on between Robin and Dave for a while. Robin summed it up best:
It's the usual perl internals story really: everything depends on everything else in mysterious and undocumented ways, and it's hard to make apparently innocent changes without subtle breakage... Starting from last week http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-10/msg00717.html The patch applied http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-11/msg00041.html Dave weighs in http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-11/msg00129.html
Joel Reed wrote in to say that he was having some difficulty in compiling 5.8.7 with Microsoft's latest compiler, especially in the area of perlio
and related some very wacky symptoms. He also tried 5.9.2, and that didn't work, either. And unfortunately for Joel, he was Warnocked.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-11/msg00046.html
Perl_magic_clear_all_env
Alan Burlison, in his quest to make the environment code a little less icky, wanted to change the signature of the Perl_magic_clear_all_env
function. This would prevent memory leaks when one lets perl manage the environment.
The main problem is whether or not this would break binary compatibility. Steve Peters used the CPAN source code search and found that no-one outside of core is using it, and thought that it is unlikely that any other code does so, but the possibility cannot be ruled out.
Alan was worried about platforms using different calling conventions and decided that the best way forward would be to put the new smarts in a new routine, and thereby not allow the possibility of breaking binary compatibility.
Alan subsequently posted a patch to make use perl use clearenv
on platforms where it makes sense, and called for feedback on other platforms such as MacOS, Symbian, VMS and Win32.
The question http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-11/msg00087.html All hail gonzui http://cpansearch.bulknews.net/ using clearenv http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-11/msg00117.html
Robin Houston was rather bemused by:
% perl -e 'map print(reverse), ("")x68' Segmentation fault
and wondered why it was happening. Dave Mitchell promptly described the problem and fixed it. Sadahiro Tomoyuki found that many other pp_*
functions exhibit similar behaviour and provided a patch to fix them too. Tels wanted tests.
segfault http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-11/msg00126.html How to kill perl http://www.perlmonks.org/index.pl?node_id=505817
Steve Peters proposed a patch to bring Perl 6's say()
to Perl 5. (Which is roughly print
with a \n
tacked on). Robin Houston pointed to a prior thread (and patch) on the issue, that was not well received at the time. The main problem is one of backwards compatibility: how do you deal with a program that has defined a subroutine named say
?
(The summariser recalls a thread on Perlmonks where someone suggested using -l
on the command line to get equivalent say
functionality with print
and use printf
(not necessarily with %
args) to get non-newline print behaviour).
This time http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-11/msg00144.html Last time around http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-03/msg00162.html
Andreas J. Koenig brought CPAN.pm
up to version 1.76_60. (The _60 implies a beta version). Some of the new features include: plays nicely with version.pm, support for sudo
, new commands, better error messages and better handling of configuration variables.
1520 open items, six items less that 2 weeks old have not been responded to.
Jarkko added UIQ support to the Symbian port
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-10/msg00979.html
Steven Schubiger cleared up the no-whitespace-before-semicolon problems for pod files that needed it.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-10/msg00993.html
Jutta posted a bug report dealing with sysread
in UTF-8 mode. When Steve Peters opined that a little bit of code might help understand the problem more easily, Jutta replied with a TCP server written in C and a client written in Perl. What more could you wish for?
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-11/msg00040.html
Alan Burlison was still wondering about the malloc_wrap
compiler warnings being produced. After discussing the issue with Nicholas, he decided to add an explanation about the compiler warnings to the README.solaris file.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-11/msg00048.html
Dan Dascalescu posted a bug report concerning File::Glob
, escaped metacharacters and spaces in filenames. Steven Schubiger showed a couple of ways to get around the problem.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-11/msg00068.html
Andreas J. Koenig took a stab at fixing bug #19049 (Incorrect $`
after replacement). Rafael applied it, and then backed it out after not being able to solve the remaining problems himself. If someone else wants to have a go...
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-11/msg00091.html
Robin Houston noted that perlcall.pod documents problems that were fixed way back in version 5.002, and fired up the chainsaw.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-11/msg00121.html
Anno Siegel posted an interesting bug:
my $str = 'aa'; $str &= 'a'; $str =~ /a+$/ or die;
This dies, and Anno says it shouldn't. No response for the moment.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-11/msg00159.html
This summary was written by David Landgren.
Information concerning bugs referenced in this summary (as #nnnnn) may be viewed at http://rt.perl.org/rt3/Ticket/Display.html?id=nnnnn
Information concerning patches to maint or blead referenced in this summary (as #nnnnn) may be viewed at http://public.activestate.com/cgi-bin/perlbrowse?patch=nnnnn
Weekly summaries are published on http://use.perl.org/ and posted on a mailing list, (subscription: perl5-summary-subscribe@perl.org). The archive is at http://dev.perl.org/perl5/list-summaries/. Corrections and comments are welcome.
If you found this summary useful or enjoyable, please consider contributing to the Perl Foundation to help support the development of Perl.