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-subscr...@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

Reply via email to