develooper Front page | perl.perl5.summary | Postings from February 2009

This Week on perl5-porters - 18-25 January 2009

From:
David Landgren
Date:
February 1, 2009 12:29
Subject:
This Week on perl5-porters - 18-25 January 2009
Message ID:
4985AEE1.8080806@landgren.net
This Week on perl5-porters - 18-25 January 2009

   A summary of last week's activity on perl5-porters, by David Landgren.

   "Are these names considered to be a public non-changeable interface
   by virtue of having been placed in these directories for a while, even
   though they were never documented as far as I can tell? Or are these
   files considered to be an internal implementation detail of Perl, not
   for external use, and hence subject to change or deletion?" -- Karl
   Williamson, waging war on two fronts simultaneously, Perl and Unicode.

Topics of Interest

Interesting git-based changelog workflow

   Aristotle Pagaltzis mentioned a workflow he had heard about regarding
   git. The aim was to ease the burden of producing the Changelog and
   perldelta files, which are huge timesinks as it involves sifting
   through thousands of commit messages to look for the big-ticket items.
   The solution is to create a more incremental effort.

   Dave Mitchell said he hoped to produce a one line summary for
   perldelta for each day of reviewing and merging patches from blead to
   maint.

   A number of porters highlighted the difficulty of being able to know
   precisely when a bug was fixed, since smokers of CPAN on blead tended
   to uncover problems a long time after the "final" patch had landed.
   David Golden suggested that a "add-perldelta" tool might be a step in
   the right direction to keep track of the changes at an appropriately
   high meta-level of changes.

     navigating the delta
     http://xrl.us/beeifz

disabling "suidperl" in Configure

   Nicholas Clark put forward a patch to prevent "suidperl" being
   configured in 5.11 and beyond and wondered if there was a better
   approach. Andy Dougherty suggested another way, but it had the
   disadvantage of increasing the workload for H.Merijn Brand, the
   "Configure" pumpking, and would also not produce a useful error
   message if someone attempted to try and build "suidperl" in 5.12
   anyway.

   As it was, H.Merijn applied Nicholas's patch.

     it's dead jim
     http://xrl.us/beeif3

   Later on, Nicholas axed it altogether, reasoning that if there was
   some brave maintainer who wanted to resurrect it, all they had to do
   was to reverse out one change from their local git repository.

     let sleeping dogs
     http://xrl.us/beeif5

"mingw libperl" broken

   Reini Urban reported a discrepancy between mingw and cygwin as to what
   public functions were exported to the world at large. Nicholas Clark
   thought that mingw (not exporting three particular functions) was
   correct, and it was cygwin that was being lax. And further, modules
   outside the core had no business in defining "PERL_CORE" in order to
   call functions to which it had no right.

   This problem is not limited to the Windows platform. AIX also has a
   strict policy on what is and isn't exported.

   Dmitry Karasik noted that the problem had been found a long time ago
   and a patch had been produced, and wondered why it had never been
   applied. This allowed Nicholas Clark to recycle his standard remark
   about volunteer workers and companies using Perl not making resources
   or money forward in order to improve the situation.

     plus ça change
     http://xrl.us/beeif7

   Reini revived cpan bug #28912 to fix "B::Generate" and deal with its
   breakage. He said that three functions, "Perl_pad_alloc",
   "Perl_cv_clone" and "Perl_fold_constants" are exported anyway, and so
   should be published in the API as such. Nicholas Clark was a lot more
   reticent, saying that while it may indeed be useful for them to be
   exported, were they documented, testable, stable and supportable.

     a gentleman's agreement
     http://xrl.us/beeif9

LSB testing issue with "Test::Harness"

   Stew Benedict reported a problem with the LSB project's handling of
   perl's test infrastructure. They currently use "Test::Harness" version
   N-1, and run into problems when that is upgraded to the current
   version N.

   Yves Orton thought that the best way forward was to deal with the pain
   now and upgrade to the current version, even if there were backward
   compatible shims available for those who wished to keep working with
   N-1.

     duty now for the future
     http://xrl.us/beeigb

   Later on, Stew gave a status report on the second round of Perl
   modules included in the LSB. He made a list of modules that had been
   pulled out of their core distribution, a list of modules that might
   yet be pulled, and a list of those modules that remain, along with
   their counts as pre-requisites. Stew explained that it was easier to
   pull things out now, possibly to put them in later, rather than the
   other way around. Thus, it would pay to be as aggressive as possible.

   Yves Orton thought that removing parts of the testing infrastructure
   was definitely a bad idea. Nicholas Clark pointed out that while "CGI"
   has been in core for a long time, FreeBSD removed it in a recent
   release, apparently without much ill effect. He also responded with a
   large list of modules that have achieved ubiquity (and thus must be
   present) as well as other modules that also must be present even
   though we all wish they would curl up in a corner and die.

     freebsd decoring++
     http://xrl.us/beeigd

Need advice on gotchas on upgrading unicode db to 5.1

   Karl Williamson is currently working on bring the Unicode database in
   Perl up to date with the latest and greatest, version 5.1.

   The first problem he encountered was that the previous update didn't
   upgrade the Property Value Aliases, which is a hassle, because
   upgrading it now may introduce curious backward compatible bugs.

   H.Merijn Brand thought that the problems Karl was raising were
   sufficiently far down in the basement that the general public
   shouldn't be aware of them, let alone rely on them, and that anything
   that allowed Perl to track Unicode with a minimum of intermediate
   layers and mappings was a worthy goal. He also put forward his idea of
   the list of files in the distribution that the general public was
   likely to be aware of, and using.

   Karl went ahead after receiving additional clearance from Nicholas,
   and CYAed himself with a "these files are subject to change without
   notice" header.

     "just change it" works for me
     http://xrl.us/beeigf

   As part of this work, Karl added the Unicode file NameAliases.txt,
   which fixes up some of the problems that have arisen over time.

     http://xrl.us/beeigh

"use bytes" and regular expressions

   Karl is also continuing to wade through the crocodile-infested swamp
   of bytes, characters and regular expressions and was wondering what
   exactly should be happening when a regular expression was being
   compiled when "use bytes" was effect. The main problem being a
   complete lack of guidance insofar as the test suite makes no attempt
   to specify what should be happening one way or another.

     http://xrl.us/beeigj

"glob()" on VMS totally different to Unix

   John Malmberg was stunned to learn that "glob('foo')" on VMS is the
   equivalent to "glob('foo.*')", as it can lead to some pretty nasty
   cross-platform side effects. And even more curiously, there was
   explicit code to make things behave differently on VMS if 'foo' were
   in fact a directory. He wondered what the appropriate fix would be.
   The goal was to get "Module::Build" working correctly on VMS.

   Craig Berry wasn't too sure either, since the observed "glob"
   behaviour had been like that since time immemorial, and it also
   happened to reflect the native behaviour in VMS anyway.

   John countered that in actual fact it was the utilities that were
   doing the expansion, not the shell.

   Peter Prymmer voiced the opinion that things are working according to
   spec already, and pointed out that "unlink" only removes the current
   version of the file (since the RMS filesystem on VMS allows multiple
   versions of the same file to exist simultaneously -- a concept quite
   alien to Unix where Perl was initially developed).

   Peter also thought that "Module::Build" really ought to be doing the
   "opendir"/"readdir"/"closedir" dance, since differences in "glob"
   behaviour had been observed in the past among different Unices.

   After some more work, John produced a final patch that cleared up the
   remaining "Module::Build" test errors. He then spotted a different
   error, that Craig Berry identified as being fallout from the Y2038+
   code that entered blead recently. Craig promised to get it sorted out
   if no-one else wanted to.

     it's a bird... it's a plane... it's a directory!
     http://xrl.us/beeigm

   John forwarded some patches to start clearing this up.

     http://xrl.us/beeigo
     http://xrl.us/beeigy

"lock()" on a code ref?

   Jerry D. Hedden wondered why we check for code references when locking
   scalars, since it is meaningless to do so. He wanted to remove it
   since he felt it was superfluous. Dave Mitchell suggested putting an
   assertion in its place.

     next up, signed coderefs
     http://xrl.us/beeigq

   And thus it came to pass.

     let my code free
     http://xrl.us/beeigs

A plan for ext/

   Nicholas Clark would like to clean up ext/ by hoisting anything that
   pertains to the build process *per se*, such as make_ext.pl so that
   all that is left are the extensions themselves.

   He also wants to flatten the directory structure so that all module
   build directories can be globbed with "ext/*".

   The Windows and VMS platforms in particular need some refactoring done
   so that everything can be driven off a generic "make_ext" build
   process. Some modules will need to have a Makefile.PL synthesised as
   well. Another problem to address is the dependency chain: ensuring a
   modules's prerequisites are built before it is.

   Craig A. Berry remembered his classes and noted that ext/ used to
   represent modules that contained XS components, and lib/ those that
   didn't. While he didn't have a problem with Nicholas's idea, he
   pointed out it would be a good idea to look for cruft in %Config and
   "installperl" that such a change would create.

   And then dual-life modules can migrate from ./lib to ./ext.

   Stay tuned next week.

     sounds like a... oh wait
     http://xrl.us/beeigu

A plan for pod/

   Nicholas also had some good ideas about POD. For instance,
   pod/perlapi.pod, pod/perlintern.pod and pod/perltoc.pod are currently
   maintained under revision control, but could just as easily be
   generated dynamically by "./miniperl" during the build. Similarly, the
   "man" pages could be built before the install phase, thus avoiding
   another step that currently performed in a task run with super-user
   privileges.

   One benefit is that it reduces the amount of data shipped in an perl
   tarball, and helps reduce the speed at which the generated
   documentation drifts out of date.

     generate the pod bay doors please
     http://xrl.us/beeigw

TODO of the week

Make Config.pm cope with differences between built and installed perl

   Quite often vendors ship a perl binary compiled with their (pay-for)
   compilers. People install a free compiler, such as gcc. To work out
   how to build extensions, Perl interrogates %Config, so in this
   situation %Config describes compilers that aren't there, and extension
   building fails. This forces people into choosing between re-compiling
   perl themselves using the compiler they have, or only using modules
   that the vendor ships.

   It would be good to find a way teach "Config.pm" about the
   installation setup, possibly involving probing at install time or
   later, so that the %Config in a binary distribution better describes
   the installed machine, when the installed machine differs from the
   build machine in some significant way.

Patches of Interest

Avoid confusing gcc with -2147483648

   Robin Barker wanted to play by gcc's rules in relation to
   "LOCALTIME_MIN" but there appears to be problems with having things
   work correctly with C89-compliant compilers.

     time is not on my side
     http://xrl.us/beeig2

Run make_patchnum.pl before configpm

   Jerry D. Hedden wanted to ensure that ib/Config_git.pl was available
   before "configpm" was right, but this turned out to be surprisingly
   difficult in the light of parallel make environments and stamping out
   the possibility of race conditions that could arise therein.

     first things first
     http://xrl.us/beeig4

Fix "mktables" time stamp test

   Karl Williamson tried to cut through sedimentary layers of code checks
   designed to prevent "mktables" from being run repeatedly during the
   build process. Just when he thought he had things solved he ran into
   another problem. Rafaël suggested that the remaining problem was also
   some sort of bogus optimisation and so maybe it too should be brute
   forced.

     one thing at a time
     http://xrl.us/beeig6

"File::Copy" and permission bits

   Charles Bailey stumbled across a pot of tuits and spent them on
   learning git and cleaning up "File::Copy", specifically, the
   management of permission bits. The result was to make "cp" more POSIXy
   and "copy" more native.

   Abigail added a few more tests to look at how the copy dealt with
   setuid and sticky bits, and pointed out that there was now a potential
   world visibility race condition in the code for anyone in a Unix
   session with a 022 umask (all too common). Charles thought that
   "File::Copy"'s security mandate didn't stretch that far (the paranoid
   are invited to look at a hand-rolled solution involving "sysopen").

     do you copy
     http://xrl.us/beeig8

New and old bugs from RT

updated reproducible perlmodlib.PL with bugfix for "Test::Tutorial"'s 
entry (#53000)

   Richard Soderberg tossed out some code to attack a TODO, but Rafaël
   Garcia-Suarez wasn't able to make use of it, and it prodded Nicholas
   Clark to wonder whether our git-configure-fu was sufficiently strong.
   Richard said he'd try again some day.

     to do later
     http://xrl.us/beeiha

"sqrt" without EXPR and "Math::Complex" always 0 (#62412)

   Frank Wiegand found a problem with "sqrt" failing to operate on $_ if
   "Math::Complex" was loaded. Abigail found a way to use "use
   Scalar::Util 'set_prototype'" (suggested by Rafaël and have things
   work correctly before and after 5.10.

     the root of complexity
     http://xrl.us/beeihc

Dies in recursion on some regexes (#62444)

   Vany wondered why "(1 x $_) !~ /^(1{2,}?){2,}$/" blew up with a
   segfault when $_ became large. Abigail had a look and replied that
   "This is to be expected given the regexp."

     EWONTFIX
     http://xrl.us/beeihe

Fcntl exported constants become tainted under 5.8.9 (#62502)

   Mark Martinec discovered that under perl 5.8.9, some O_* and other
   constants as exported by module "Fcntl" (or "IO::File") become tainted
   under certain circumstances. Both Nicholas Clark and Ben Morrow were
   able to confirm seeing the same behaviour but were none the wiser as
   to why it was happening.

     and you don't make no sense
     http://xrl.us/beeihg

Insecure dependency error in sprintf under -T (#62512)

   Eric Promislow reported another easy bug to track down: problems with
   a "sprintf" format string being tainted... when run inside the Komodo
   debugger. Rafaël thought that if it couldn't be reproduced in a stock
   perl there wasn't much chance of it being fixable.

     heisentaint
     http://xrl.us/beeihi

"warnings::register" regressions introduced in 5.10 (#62522)

   Peter Rabbitson filed a report about a regression in 5.10 and backed
   it up with comprehensive set of tests to circumscribe the problem.
   Alas, it attracted no attention.

     http://xrl.us/beeihk

Perl 5.8.8 (Tainting) vulnerable to CWE-732 attacks (#62526)

   The attack in question is due to the fact that perl will happily allow
   a program to "require" a file (and thus, run code) even if said file
   happens to be world writable. There was some talk of making taint deal
   with this (refuse to load the file, à la openssh) but Abigail asked
   how one would go about untainting it.

   Yves Orton thought that a new paranoia mode, activated by a new
   command-line switch, would be a better alternative.

     oh I give up, can I trust you?
     http://xrl.us/beeihn

Method interpretation in "A::B->C" (#62584)

   Peter Scott noted that what is called by "A::B->C" depends on whether
   or "A::B" and/or "A::B::C" are defined. This then leads to program
   behaviour that can be difficult to predict.

   Eric Brine pointed out that "A::B::->C" is the preferred way of
   disambiguating the situation, and Ben Morrow explained why it is
   unlikely that a favourable resolution will made of the matter.

     there's one right way to do it
     http://xrl.us/beeihp

Maximum string length with "substr" (#62646)

   skylar reported running into grief with "substr" being asked to chop
   away at a string larger than 2147483648 bytes (give or take a byte).
   Nicholas Clark explained that the 1998-vintage implementation uses a
   32-bit quantity which is clearly starting to become a limit in the
   21st century.

     sign of the times
     http://xrl.us/beeihr

Override documentation (#62648)

   Jerrad Pierce would love to see "override" have its own documentation,
   or at least be able to get to it easily from "overload", which does
   have its own documentation.

     overboard
     http://xrl.us/beeiht

UTF8 failure with "sprintf ()" (#62666)

   H.Merijn Brand has managed to get the UTF-8 cache confused and panic
   with nothing more than a "sprintf".

     doctor it hurts
     http://xrl.us/beeihv

Perl5 Bug Summary

     http://xrl.us/beeihx
     http://rt.perl.org/rt3/NoAuth/perl5/Overview.html

New Core Modules

   podlators 2.2.2
       Russ Allbery pushed out a new version, the main improvement being
       the ability to deal correctly with verbatim paragraphs that
       contain lines with only whitespace.

         http://xrl.us/beeihz

   Encode 2.27
       Dan Kogai released a new version of "Encode" that clears up a
       number of reported bugs.

         http://xrl.us/beeih3

   Module::Load 0.14
       Jos Boumans synced the latest version of "Module::Load" that
       corrects a reported bug and streamlines the test suite.
       "Module::Load::Conditional" was also upgraded to clear up some
       bugs in the test suite itself, smoked out by Win32 and VMS.

         sweet
         http://xrl.us/beeih5

   Archive::Tar 1.44
       Jos also released a bug fix for "Archive::Tar".

         http://xrl.us/beeih7

In Brief

   Some consting goodness for time64 was applied.

     http://xrl.us/beeih9

   Renée Bäcker thought it would be great to show -E in error message
   when called with -E, and on the surface it is. Except it breaks tests
   like "$0 eq '-e'" and to Do The Right Thing in light of that was so
   hard that all hope was abandoned.

     http://xrl.us/beeiib

   Slaven Rezic improved the warnings if forks fail in "Perl_my_popen".

     http://xrl.us/beeiid

   Karl Williamson is getting close to landing code to solve the problem
   of the Unicode ordinal range 128-255 and so he delivered a skeleton
   legacy.pm to bring lay the way for genuine Unicode goodness.

     http://xrl.us/beeiif

   Ben Morrow spotted some curious behaviour when calling "-t", "-T" on
   IO refs and a variation on the theme that tripped an assertion
   failure. He promised to write a patch after he had audited the rest of
   the codebase for uses of "isGV()".

     http://xrl.us/beeiih

   Ricardo Signes wrote a rough patch to remove indirect method calls
   from documentation. This was applied, but he admitted that other
   examples no doubt lie around in obscure corners of the
   documentation.(I thought chromatic wrote an exhaustive patch for this
   a couple of years ago --ed).

     http://xrl.us/beeiij

   Reini Urban pulled off a gnarly trick to use MSVC6 Project files to
   build perl.exe, which reduces the edit-compile-debug cycle on windows
   down to keypresses "F7"-"F5".

     faster debugging
     http://xrl.us/beeiim

Last week's summary

   There was none. I needed a break. As much as I enjoy doing these
   summaries, it's a huge chunk of tuits each week.

About this summary

   This summary was written by David Landgren.

   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, please consider contributing to the
   Perl Foundation or attending a YAPC to help support the development of
   Perl.

-- 
it's an anthem in a vacuum on a hyperstation, day dreaming days in a 
daydream nation



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About