This Fortnight on perl5-porters - 28 September-12 October 2008

  "... because a git repository is a collection of assembled changes,
  not a linear progression, using a commit ID as a way to find out where
  your code came from doesn't work. This is not git's fault but is an
  issue with every distributed version control system (SVK tries to
  pretend otherwise). You could perhaps use a combination of the git
  repository you pulled from and the last commit ID, but [...]
  fundamentally the idea is gone. It's a small price to pay." -- Michael
  G. Schwern, coming to terms with the future.

Topics of Interest

$VERSION in "Opcode"

  The tangent regarding the issue of module version numbers and the
  techniques to deal with them continued apace over the last fortnight.
  The core of Matt S. Trout's argument over "version.pm" is that it
  injects a method into "UNIVERSAL", and this, in an of itself, produces
  action at a distance, even when "version.pm" is not at fault. The
  problem shows up when "version.pm" is used incorrectly by third-party
  code, and the resulting errors are very hard to track down.

  All that being as it may, Matt appreciates the value of the version
  comparison code available, and would like to be able to get at it,
  while leaving "UNIVERSAL" untouched. Otherwise, it's akin to modifying
  $[ or $/ at the global level. Tom Christiansen concluded that only the
  highest level code should be putting things into "UNIVERSAL", not by
  proxy via the use of other modules.

    universal language
    http://xrl.us/oudw3
    http://xrl.us/oudw5

  Later on, in a particularly magnanimous gesture, John Peacock
  announced that he had a patch that would do all that Matt wanted and
  more, and asked if Matt was satisfied by it.

    UNIVERSAL::VERSION and version.pm
    http://xrl.us/oudw7

Y2038 branch

  Steve Hay took Michael G. Schwern's Y2038+ code for a spin in the land
  of Windows, and made a few adjustments to have it play nicely with the
  compilers there.

  Based on Steve's recommendations, Michael produced a series of changes
  that ended up delivering sane results. In the end, Michael had to lift
  some code from the FreeBSD project to address the problem of
  converting strings to long longs. This helped the Microsoft compilers
  that still had not caught up with the C standard as of the previous
  millennium.

    party like it's 1999
    http://xrl.us/oudw9
    http://xrl.us/oudxb

  Later on Michael released a newer patch that included all his latest
  research on the matter. Steve continued to find a number of rough
  edges on Windows. H.Merijn Brand thought that it might be worthwhile
  probing for 64-bit variants of time routines on the platforms that
  offer them, since that the whole point of the exercise in the first
  place. And so he did, and said he'd get around to probing for the
  reentrant versions as well.

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

  Michael then had a patch working on Windows and Cygwin, contingent on
  a couple of details that needed to be resolved. Some problems turned
  out to involve the building of "miniperl" itself, which uses some
  canned constants before Michael's work is able to work its magic.

  Dave Rolsky dropped by to say that he was delighted that all of this
  work had a positive effect on the innards of "Time::Local". On the
  other hand, it greatly complicated the task of keeping it dual-lifed
  on CPAN, so much so that he doubted that the new changes would work
  with older perl releases. Michael showed him how this could be done
  with some XS goodness.

    just in time
    http://xrl.us/oudxf

Crash when dying on warning from backticks with vfork() (5.6.1 on Lamp)

  Joshua Juran is the caretaker for Perl on the traditional Mac OS (that
  is, pre OS/X). Said platform doesn't know how to "fork", but it can
  "vfork". In the current state of affairs, asking a program to fork
  itself with something silly, like "/dev/null", leads to some very
  interesting (read: not useful) results, in that one receives very
  little information as to what went wrong.

  Joshua managed to get as far as showing how a minor change to
  "Perl_do_exec()", "Perl_my_popen()", and "pp_system()" would fix the
  problem, but he wasn't sure if his internals-fu was strong enough to
  consider all the ramifications.

  Nicholas Clark reasoned that the problem Joshua faced was sufficiently
  weird (or rather, his platform of choice was weird) that he should
  write the tests to establish the desired behaviour out on the end of
  the continuum, and then the rest of us could just follow suit.

  Apparently he has done this on a code repository hosted on
  Sourceforge, but unless I am mistaken they didn't make it to the list.

    pneumatic tubes
    http://xrl.us/oudxh
    http://xrl.us/oudxj

Discussing the (im?)possibility of prototype-based polymorphism for 5.12

  David Nicol responded to a previous thread (which I lack the tuits to
  track down) with the concept of polymorphism based on prototypes,
  which would, amongst other things, make the following work:

    sub foo($$);
    sub bar(@);

    bar foo 1, 2, 3, 4;
    # parsed as

    bar( foo(1, 2), 3, 4);

  He promised to investigate the possibility with his "Macrame" module.
  In the meantime, Rafaël Garcia-Suarez reminded David that prototypes
  in Perl are more for changing the syntax rather that type inferencing.

    http://xrl.us/oudxm

Small incompatibility between 5.8.8 and 5.10.0

  Torsten Förtsch discovered a problem that had crept into 5.10, which
  appears to be something to do changes to the implementation of
  stashes. No-one commented.

    something new with ::
    http://xrl.us/oudxo

"protochk" and C++

  Tony Cook had been puzzled for a while over intermittent smoke
  failures when using C++ on Debian, and managed to discover that C++'s
  function overloading mechanism was the cause. He suggested a change to
  a Configure test, but H.Merijn admitted that it was far outside his
  scope of expertise and asked for other eyes to look at it and consider
  the ramifications.

    looking the other way
    http://xrl.us/oudxq

TODO list for moving to git

  Nicholas, having endured a painful bisection ordeal under Perforce to
  track down when something changed, wondered what was holding up the
  migration to git. His current problem was one of mapping a Perforce
  revision (a number in a monotonic sequence) to a git checksum.

  Mark Mielke wanted to know if there was a page on the web somewhere
  that recorded the current status of the Perforce-git migration.

  Michael G. Schwern offered an interesting parenthetical remark
  regarding the move from Perforce to git, and why it is the Right
  Thing. David Golden also noted that git solves the problem of
  branching at any point in time, hacking, and folding the changes back
  in a most elegant manner. The price you pay, though, is that it is
  very hard to point to a specific moment in development (since one only
  has an unsortable checksum, not a monotonic sequence).

  Craig A. Berry, not fully versed in git-speak, was nonetheless able to
  describe how people would communicate points of interest in the
  development tree. At the same time, he thought that the barrier to
  entry to understanding git was much higher than that of Perforce. As
  it turns out, basic web projections of git repositories already come
  close to what the All Perl Changes browser provides.

    gitting there
    http://xrl.us/oudxs

  Michael went through the git threads on the list and neatly summarised
  them on the Perl5 wiki. He noted with satisfaction that there were no
  showstoppers, just a question of tuits.

    http://xrl.us/oudxu

"Perl_newSVpvf("%lld")" is broken

  One other item that fell out of the Y2038+ code was that, on 32-bit
  platforms, "printf("%lld\n", 2**32)" gives a result of -1. Michael and
  admitted to being terrified by the code and hoped someone else could
  dig down through it and figure out where the problem lay.

    quad wrangle
    http://xrl.us/oudxw

Pathtools QNX regression

  Nicholas Clark looked more closely at Matt Kraai's failures for
  5.8.9-tobe on QNX. He determined that it was due to a refactoring of
  "File::Spec::Unix::abs2rel" between Pathtools 3.12 and 3.13.

  Interestingly, this dredged up an interesting piece of Perl trivia, in
  that for a short time, the "/t" flag on a regexp match maintained the
  taint flag if the target string was tainted. The idea lived a short
  life.

  Nicholas thought that creating a new "File::Spec::QNX" (and the like),
  since it would be easier to test and would probably simplify the
  implementation of "catdir". In any event, he wrote a patch and Matt
  confirmed that it fixed up the problem on QNX 6 (a.k.a QNX Neutrino,
  or "$^O eq 'nto'").

  Ken Williams folded Nicholas's patch into his Pathtools repository.

    http://xrl.us/oudxy

git conversion discrepancy

  Nicholas Clark uncovered a flaw in Same Vilain's Perforce-git import.
  Sam said he'd go over the import code to see if he'd missed anything.
  By and large most of the Perforce branches were bit-for-bit perfect.

    ancient history
    http://xrl.us/oudx2

[EMAIL PROTECTED]

  Nicholas produced another snapshot of 5.8.9-tobe. Of note were some
  problems on VMS (for which fixes existed) and some minor problems with
  "Module::Build".

  Slaven Rezic tested some 3700 CPAN distributions and listed a dozen or
  so regressions. Most of them turned out to be minor, but one was an
  honest to goodness C error, relying on a reallocated SV landing in
  exactly right place.

    getting closer
    http://xrl.us/oudx4

Fedora (Assertion failure on glob assignment)

  Nicholas Clark wailed and gnashed his teeth at vendors who insist on
  foisting a perl compiled with "-DDEBUGGING" upon their users, and
  pondered tweaking things to make it produce a nasty warning on STDERR
  during startup.

    make it so they have to reboot
    http://xrl.us/oudx6

t/op/regexp.t

  Abigail wondered how to deal with a test that causes a segfault during
  program exit, since even a "fresh_perl_is" from test.pl will return a
  correct result, not seeing that $? contains a non-zero value. Michael
  G. Schwern thought that the expedient measure of testing $? against
  zero should be sufficient.

    measuring success
    http://xrl.us/oudx8

TODO of the week

  A task that need a little sysadmin-type knowledge

Linker specification files

  Some platforms mandate that you provide a list of a shared library's
  external symbols to the linker, so the core already has the
  infrastructure in place to do this for generating shared perl
  libraries. My understanding is that the GNU toolchain can accept an
  optional linker specification file, and restrict visibility just to
  symbols declared in that file. It would be good to extend makedef.pl
  to support this format, and to provide a means within "Configure" to
  enable it. This would allow Unix users to test that the export list is
  correct, and to build a perl that does not pollute the global
  namespace with private symbols.

Patches of Interest

Cross-compile for linux

  Vadim Konovalov continued to deliver his patches for
  cross-compilation. Alas, few people with commit bits have had the time
  to review them and enter them into Perforce. There is hope that git
  may alleviate these sorts of problems.

    http://xrl.us/oudya
    http://xrl.us/oudyc

5.8.x on Interix

  Ben Morrow reported on the test failures on Interix for 5.8.9-tobe.
  Jan Dubois took issue with the skipping of tests, since that might
  lead the underlying bugs to be swept under the carpet. Ben thought
  that there was a distinction to be made as to whether the test suite
  was testing Perl or Perl and its interaction with its host environment
  (such as bugs in the C library).

  Rafaël hoped that the changes, if they were good enough for 5.8, could
  also make it into blead. Ben saw no reason why not, he just wanted to
  help get 5.8.9 out the door at the moment.

    http://xrl.us/oudye

Invalid read in regdupe in maint-5.8

  Nicholas continued to ponder what Vincent Pit had uncovered, regarding
  an off-by-one allocation in the regexp compiler.

    http://xrl.us/oudyg

New and old bugs from RT

Different behaviour using the "-Idir" option on the command line and shebang (#6665)

  Renée Bäcker wondered why using "-I" on the shebang line of a Perl
  program appends the specified directory to @INC, rather than
  prepending.

  Rafaël Garcia-Suarez explained how and why it was a feature, and Renée
  proposed a patch to make "-I" always prepend.

    http://xrl.us/oudyi
    http://xrl.us/oudyk

"return do { }": take 3 (or 4...) (#38809)

  "sub foo { do { return do { 1; 2 } }; 3 }" returns undef. This is
  unfortunate. Vincent Pit has been chipping away at the problem, trying
  to solve it. This is his latest offering. He's still not happy with
  the fix, and suggests that it's either this, or ignore the bug.

    tests will tell
    http://xrl.us/oudyn

Perl 5.8.8 Build Failures for SunOS 4.1.3 (#59456)

  Bob Peterson called for help in getting a new Perl running on a very,
  very long in tooth SunOS platform. Andy Dougherty thought that the
  last time he had attempted such a task was in 2001, and thought that
  some of the errors Bob was encountering were due compiler bugs, and
  that building without "-O2" optimisation may alleviate some of the
  problems.

  Nicholas Clark identified some failures as being Mostly Harmless, but
  others were rather more disconcerting.

    teaching an old dog
    http://xrl.us/oudyp
    http://xrl.us/oudyr

"Unicode::UCD::casefold()" does not work as documented, nor probably as intended (#58430)

  Karl Williamson continued to work on Perl's simple-minded
  implementation of folding case for Unicode characters, the real-world
  problems that this induces, and a proposal on how to move to something
  that works whilst retaining backwards compatibility.

  Rafaël asked for some background for the readers following along at
  home, and Karl responded with a very well written summary of the
  problem domain.

    all you need to know
    http://xrl.us/oudyt

Segfault on weird but plain Perl in eval on 5.10.0 on Windows (#59498)

  Eirik Hanssen and Alexandr Ciornii pinned down some code that failed
  in Strawberry Perl 5.10.0 and wondered if it was common to all Windows
  5.10 builds. Cygwin and Unix builds appeared to be unaffected.

    broken windows
    http://xrl.us/oudyv

Memory leak with regex in 5.10.0 (#59516)

  Robin Hill offered an interesting bug on 5.10 that proceeded to eat
  all memory. The trigger was a regexp with a quotemeta'ed portion and
  some single character character classes.

  Nicholas Clark noted that while lots of memory gets chewed up, if the
  program is able to run to completion, every last byte is correctly
  freed. Dave Mitchell produced a smaller test case to demonstrate the
  leak... which still cleaned up after itself if things ended in an
  orderly fashion. Believed (by Nicholas) to be solved.

    http://xrl.us/oudyx

Surprising behaviour when "$" is left off $last (#59522)

  Inside a curly brace block, even just for lexical scoping, "last" will
  take you out of it without a murmur, even if you write "$x < last"
  instead of "$x < $last". Unfortunately there's not a whole lot that
  can be done about it.

    http://xrl.us/oudyz

"readline" returns EBADF at eof in 5.10.0 (#59550)

  Mark Martinec reported that the "readline()" function (or a diamond
  I/O operator "<>") returns a EBADF (Bad file descriptor) as its errno
  status on end-of-file when PERLIO is set to "stdio".

    http://xrl.us/oudy3

Error installing a Perl 5.8.8 (#59610)

  Leandro Gregorio needs some help with an installation on a 64-bit
  Linux platform.

    http://xrl.us/oudy5

FOLDCHAR regop not produced for "\x", "\0", "\N{U+....}" (#59616)

  Karl Williamson is now using the latest version of blead for his work
  and is pushing out the bugs he encounters in Unicode case folding. His
  latest item is that specifying characters in hex, octal or named
  characters defeats the regular expression engine.

    http://xrl.us/oudy7

Save code generated by references in @INC (#59626)

  Shawn Moore wanted to be able to profile code references in @INC via
  "Devel::NYTProf", and found a number of hurdles in his way. He offered
  a patch that appeared to work, but Nicholas Clark pointed out that it
  did in fact only appear to work, and making it work would in fact be
  much more difficult.

    http://xrl.us/oudy9

Unicode problem (#58182)

  Karl Williamson continued on his Unicode trek this fortnight, with a
  summary of the issues concerning this bug (for which the main point is
  about how to land it gracefully in 5.10 in a backwards-compatible
  manner, switchable via a lexical pragma). Another item is what to do
  about regular expressions which are compiled in one (Unicode-encoding)
  context and then used in another.

  Glenn Linderman and Rafaël made a few comments, and it appears that
  Karl has managed to reach a concensus of sorts.

    http://xrl.us/oudzb

"unicore/mktables" expects wrong syntax from CaseFolding.txt for Turkish (#58656)

  Karl pinned down the bug in Turkic character handling in Unicode. In
  his words: "it appears that the Unicode folks decided they were doing
  the wrong thing in 3.1, and changed it in 3.2. Perl is still looking
  for the 3.1 syntax." That is, they snuck it in without telling
  anybody. Karl hopes to be able to produce a patch.

    http://xrl.us/oudzd

"File::Copy" does not handle file objects sanely (#59650)

  Wow, another bug in "File::Copy".

    http://xrl.us/oudzf

Too late for -CS option (#59652)

  Either that, or too early, since no-one has the tuits to implement
  something that would do the right thing. In the meantime, Aristotle
  Pagaltzis proffered the canonical workaround.

    http://xrl.us/oudzh

SIGSEGV compiling regexp in 5.10.0 (#59654)

  Salvador Fandiño found a way to make things go boom. But what could
  that pattern be used to match?

    6000 parens is not enough
    http://xrl.us/oudzj

"Cwd::realpath" fails on unsearchable directory (AIX) (#59662)

  John Wiersba showed that a short C program worked where Perl fell over
  and choked.

    just need to cut'n'paste
    http://xrl.us/oudzm

Segfault when using "(?|)" in regexp. (#59734)

  Abigail gives the regexp engine indigestion, with a short, sharp "perl
  -wE '";" =~ /(?<a>(?|(?<b>;)))/;'" to the ribs.

    new toys broken
    http://xrl.us/oudzo

Documentation issues with 5.8.8/Math/BigInt.pm (#59746)

  Paging Tels. White courtesy phone.

    unless fixed in blead?
    http://xrl.us/oudzq

"File::Find" behaviour with files among @DIRS (#59750)

  J. Flack noted with pleasure that "File::Find" does more or less the
  right thing when given a file as a starting point. And in fact, if it
  didn't, it would be incredibly awkward to make it so from the client
  side.

  Unfortunately, it is completely undocumented, so his/her plea was to
  have it documented so that it could be relied on, unless perchance it
  doesn't work at all on some obscure platform.

    when you need it, you need it bad
    http://xrl.us/oudzs

Changing effective userid from root to normal user fails on Linux (#59766)

  Markus Huaraz filed a bug report on Linux regarding the setting of $>
  preventing perl from reading its own binary. The "/proc" symbol table
  entered the picture, but Rafaël Garcia-Suarez was unable to reproduce
  the problem.

    note to self
    http://xrl.us/oudzu

Not OK: perl 5.11.0 +DEVEL +patchaperlup: on i686-linux-64int 2.6.22-1-k7 (UNINSTALLED) (#59776)

  Andreas König reported a smoke failure and suggested the fix (in
  "ExtUtils::MakeMaker").

    http://xrl.us/oudzw

Cannot recurse inside (?|) (#59792)

  Whilst working upon the next release of "Regexp::Common", Abigail
  encountered some flaws in the implementation of "(?|)" and offered
  some tests to pin down the problem.

    broke again
    http://xrl.us/oudzy

Hash collision? (#59796)

  Nope, just symbolic references that "use strict" would have caught.

    priceless
    http://xrl.us/oudz2

"return 0 or die" (#59802)

    return doit() or die "did it wrong";

  It would be nice if that warned "unreachable statement".

    that or Perl::Critic
    http://xrl.us/oudz4

Perl5 Bug Summary

    279 new + 1054 open = 1333 (+15 -5)
    http://xrl.us/oudz6
    http://rt.perl.org/rt3/NoAuth/perl5/Overview.html

New Core Modules

  Module::Build 0.30
        http://xrl.us/oudz8
        http://xrl.us/oud2a

  ExtUtils::MakeMaker 6.46
        http://xrl.us/oud2c

  IPC::Cmd 0.42
        http://xrl.us/oud2e

  File::Fetch 0.16
        http://xrl.us/oud2g

  Archive::Extract 0.28
        http://xrl.us/oud2i

In Brief

  Renée Bäcker pointed out that there are many patches in RT bug
  reports, just begging to be applied.

    http://xrl.us/oud2k
    http://xrl.us/oud2n

  Michael G. Schwern suggested an improved "GM/LOCALTIME_MAX/MIN" search
  algorithm. H. Merijn Brand suggested a tweak or two.

    http://xrl.us/oud2p

  Jim Cromie was stung by list context in assignment.

    bad luck
    http://xrl.us/oud2r

  Michael G. Schwern discovered that HP's Testdrive being replaced. As a
  long-time resource for testing VMS issues regarding Perl, it will be
  greatly missed. The HP engineer that H.Merijn contacted suggested that
  something could be worked out.

    thanks for all the fish
    http://xrl.us/oud2t

  Nicholas Clark wasn't sure if CPAN bug #39403 involved something that
  needed to be fixed in the core (the ability to overload or intercept
  an attribute, other than using a source filter).

    http://xrl.us/oud2v

  Nicholas also proposed a wild-assed guess to allow parallel testing on
  Win32 but Steve Hay reported no joy. Andy Armstrong understood the
  resulting symptoms sufficiently to volunteer to see if he could figure
  out why.

    http://xrl.us/oud2x

  Salvador Fandiño noted that Paul Fenwick was not the first person to
  whether the prototype for "CORE::truncate" is wrong.

    http://xrl.us/oud2z

  Nicholas removed the missing type "VSTRING" in the documentation to
  "ref" since it wasn't supposed to be there at all, being an overly
  optimistic backport from blead.

    bug #59264 solved
    http://xrl.us/oud23

  John O'Rourke ran into some odd behaviour of "substr(lc($utf8))" in
  5.8.8 that Nicholas had fixed, he thought, thanks to a TPF grant.
  Since that work had made it to 5.10 and had been backported to the
  upcoming 5.8.9, he was happy to leave things there.

    http://xrl.us/oud25

  Nicholas noticed some "make distclean" failures, in that there were
  some files left over from a run of the test suite that weren't cleanup
  up after the target was run. Andy Armstrong began to look at cleaning
  things up, since he had a nagging suspicion that a number of them
  might be his fault.

    http://xrl.us/oud27

  H.Merijn Brand released "Data::Peek" to CPAN.

    a collection of low-level debug facilities
    http://xrl.us/oud29

  Nicholas saw a Debugger saved lines regression and wondered out loud
  what was the new officially sanctioned way of noting new subroutines
  that are defined during an "eval". When the right technique is found,
  a test he wrote should begin to pass.

    http://xrl.us/oud3b

  If Dave Mitchell is ignoring *you*, resend your message.

    the tale of davem's lost emails
    http://xrl.us/oud3d

Last week's summary

    This Week on perl5-porters - 15-21 September 2008
    http://xrl.us/oud3f

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: [EMAIL PROTECTED]). 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.

--
stubborn tiny lights vs. clustering darkness forever ok?

Reply via email to