The porters concentrate on the Coverity reports, cleaning up a collection of crazy, curious and crufty code constructs.
Dave Mitchell continued his quest to improve the regexp engine. In this batch of changes, he used slab allocations to deal with the hassle of saving the context required for dealing with backtracking.
With a couple of other improvements, the performance is now back to
where it was when the engine used a recursive approach, so the
efficiency is the same now as it was then. More importantly, he
also removed the final recursion path triggered by (??(..code..})
assertions. This opens the way to a number of other improvements.
The only downside is that at the moment it looks like the changes
are so extensive that it is unlikely to be backported to maint
.
Watch this space http://xrl.us/kw8f
Andy Lester later scavenged a bit of unused code in regexec.c, which made Dave realise that the code was only unused because he had accidentally deleted some other code that referred to it. So he reverted Andy's change and restored the code he had removed.
Whatever gets you there http://xrl.us/kw8g
%Config
Brendan O'Dea forwarded a wacky bug from Debian, in that %Config
has some place-holders for paths to programs like tail(1)
or
sendmail(1)
, but Configure never probes for them, so they
are left empty. One would have to run something like
Configure -Dtail=/usr/local/bin/tail
and then write code like
my $tail = $Config{tail} || '/usr/bin/tail';
in order to make any use of it, and thus wanted to know what the
idea was. Despite his best Configure
-fu, H.Merijn Brand was
at a loss to explain why these (but not all) values were empty,
because it was set up to in fact probe for them.
Andy Dougherty provided the missing pieces of the puzzle, which was sufficient for H.Merijn to figure out what was happening, and how to fix it.
H.Merijn gets some more -fu http://xrl.us/kw8h
Some time prior to the above thread, H.Merijn made a plea to
get people to test Configure
, as it has received a good
working over recently, and some things may have been broken
in the process.
Test this http://xrl.us/kw8i
A while back, Coverity announced that it had applied its source code analysis tool to a number of high-profile open source projects. At the outset, Perl had a very favourable ratio of defects to lines of source code.
Nicholas Clark noted with dismay that a number of other projects (PHP, PostgreSQL and Samba) had since addressed every single reported defect, thereby pushing Perl to the back of the pack. Benjamin Holzman and Andy Dougherty went looking to see what they could do.
"Issue" is probably more accurate than "defect" http://xrl.us/kw8j
The current state of play http://scan.coverity.com/
Andy Lester started working through the warnings produced by the
Coverity source code analysis tool. The first thing he dealt with was
some dubious #ifdef
s dealing with SOCKS5
-specific code,
Clean socks http://xrl.us/kw8k
and tightened up some code in pp.c that should be clearer to both humans and source code analysis tools,
Everyone's a winner http://xrl.us/kw8m
and tidied up some code in pp.c that, while not officially wrong, was certainly of dubious merit.
Barely legal http://xrl.us/kw8n
Jarkko fixed locale.c,
http://xrl.us/kw8o
and since he enjoyed it so much, he did it again,
http://xrl.us/kw8p
and then examined another issue that arose when you set
$/ = \0
, and documented that as well,
One less undocumented feature http://xrl.us/kw8q
and continued by adding NULL
guards to calls to IoIFP
in pp_sys.c,
http://xrl.us/kw8r
not to mention a similar problem concerning formats, also in pp_sys.c,
Little wonder this was never encountered http://xrl.us/kw8s
and added an assert
in perlio.c, which should be sufficient for Coverity
to understand what is going on. Alas, Nicholas noted that it doesn't appear
to believe perl's special home-grown assert
. So Jarkko added a comment
that should be understandable by a human (and tough beans for Coverity),
http://xrl.us/kw8t
Andy then guarded a pointer dereference, by ensuring that it points to something
useful (that is, something other than NULL
) in regcomp.c,
http://xrl.us/kw8u
attempted to indicate that listsv
is never NULL
, elsewhere in
the same file,
http://xrl.us/kw8v
but amended it following a suggestion by Nicholas.
http://xrl.us/kw8w
In regexec.c, Jarkko moved a NULL
check in the hope that it
would allow Coverity to make better sense of the code,
http://xrl.us/kw8x
but that appeared insufficient, and so he hoisted the check even further
up in the routine, blowing away Andy's delicate const
ing work in the
process,
Real Men don't use const http://xrl.us/kw8y
and added another NULL
check. Dave Mitchell thought that this was
slightly pointless, for if the variable in question really was
NULL
at that time, then the pattern was in such trouble that
stopping to check whether the variable contains NULL
is just
rearranging the deck-chairs.
http://xrl.us/kw8z
Jarkko then plugged up a leaking file handle in ext/XS/Typemap/Typemap.xs. Unfortunately, the obvious one line fix was also incredibly wrong, causing bad things to happen, which left Jarkko and Nicholas scratching their heads.
Tim Jenness recalled that there was a discussion on this issue a few years back, and the gist of the problem is that when a handle is created in XS, the core takes over and claims the responsibility of of closing it for you. A mechanism to prevent this delegation from occurring is available for XS authors who need it, but it is not ideal in the general case, as it prevents useful DWIMmery from taking place, such as (surprise!) closing the file.
Too clever, or not clever enough http://xrl.us/kw82
Jarkko carried on and clarified a pointer aliasing issue, by removing a temporary alias hanging around in perlio.c,
http://xrl.us/kw83
and another temporary in the same file that caused Coverity to think there was a resource leak.
http://xrl.us/kw84
and yet another problem of allocated but unused memory, also in perlio.c. This time Jarkko tried to edit the diff after generation, but was caught out by Coverit^WNicholas, who applied the change that Jarkko meant to make in the first place.
http://xrl.us/kw84
Coverity fussed over a section of code in doop.c that in fact only scratched the surface of the main problem. Jarkko added a slew of tests to bop.t and fixed the real problem in the code.
http://xrl.us/kw85
Yitzchak Scott-Thoennes followed up on ext/Filter/Util/Call/Call.c where
calling filter_read(-1)
would indeed produce spectacular badness. The
solution probably lies in removing the signedness from the variable used,
but in any event, some sort of sanity checking should be added.
http://xrl.us/kw86
Yitzchak also found a problem with NULL
in ext/Socket/Socket.c, and
wondered whether the code was over-engineered, and chopping out a
conditional would improve matters. Again, a defensive approach to bad
data will be required.
http://xrl.us/kw87
Yitzchak also prodded Nicholas into making a change to clear up an issue in ext/IO/IO.c. While it appears out that many of these issues are in fact "Can't Happen" problems from within perl, since they are guarded against elsewhere, it may wind up helping the development of XS modules, since garbage values may be caught earlier, rather than a core dump 20000 statements later on.
http://xrl.us/kw88
Benjamin Holzman came back with a fix for what is probably a "Can't Happen"
bug in Storable
,
http://xrl.us/kw8n
and another safety check in pp_sys.c that could only be triggered by XS code going out to lunch.
http://xrl.us/kw89
Andy Dougherty looked at toke.c and found that Coverity incorrectly
flagged some code in a loop as dead when in fact it could be reached
the second time around. He therefore wanted to add a Coverity-friendly
message to signal that it was legitimately ENOTABUG
so that
Coverity would not count it as a defect in the following round.
Two possibilities are available, either a C comment that adheres to
a specific format à la lint
, or adding an entry to their on-line
database.
He wondered whether, as a matter of policy, the comment should appear in the source (thus making a visible reference to what is, at the end of the day, a commercial product, and therefore giving them a sprinkling of mindshare), or just using the database. He favoured the comment approach.
Andy Lester voted against the idea, arguing that tools come and
go, but comments tend to remain (and worse, drift out of date).
John Peacock voted for, arguing that if Coverity were to disappear
tomorrow, we could always grep
the codebase to strip them out.
Hugo van der Sanden remarked that he had regularly spent time chasing through the source to determine whether a possible path between two points of code existed, and thought that Coverity was probably unable to perform the required gymnastics to arrive at a similar conclusion. Be that as it may, an occasional comment in the source, explaining these matters to future porters, would not go amiss. If Coverity can't figure it out, that's their problem.
Adam Kennedy was against the comment idea too, offering the hypothesis of what was not a bug initially, becoming a real bug in six months time due to an innocuous change elsewhere, but the report being suppressed due to the initial Coverity comment. This reminds me of advice from Klortho, #11922: You don't suppress error messages, you dumbass, you PAY ATTENTION and try to understand them.
The correct use of comments http://xrl.us/kw9a
Andy D. then found what was probably a genuine problem, at least as far as clarity of intent is concerned, in utf8.c.
http://xrl.us/kw9b
Andy also looked at an issue in hv.c, which he traced to change #24810 made by Nicholas last year, but the simple fix would create a visible change in behaviour from the public API, and the complex fix was too much for him to deal with without assistance.
It turns out that Coverity was right, and Nicholas resolved it with change #27761, adding a regression test that exercised some code which until now had always remained unvisited by the test suite.
Bonus statement coverage improvement http://xrl.us/kw9c
After his initial call to arms, Nicholas had a closer look at some
of the defects. One in particular caught his eye made his wonder
whether the problem was not in fact a bug in Coverity's analysis,
and whether it should be reported to Coverity. David Landgren
noted that on the postfix-users
mailing list, Wietse Venema
had announced a new release of Postfix, that in part dealt with
Coverity findings, many of which were false positives.
Wietse's thoughts on Coverity http://comments.gmane.org/gmane.mail.postfix.user/139710
state
variables For a long time, the only technique for creating static variables
in functions à la C was to use the dubious (and now, deprecated)
my $var if 0
construct. (The officially sanctioned approach is
to use an outer (BEGIN
or bare) block and hoist the variable
outside the function).
This situation started to change this week, when Rafael Garcia-Suarez
landed his first draft to add state
variable to perl. Now you can
do the following:
$ bleadperl -le 'sub f { state $x = 10; print $x++ } f; f; f' 10 11 12
This will be available via use feature 'state'
. I thought it
was nifty. A couple of people threw up their hands in horror.
In order to proceed, what is needed are more tests, and to implement state arrays and hashes as well.
A little rough around the edges http://xrl.us/kw9d
Jan Dubois kicked off an interesting thread concerning underscores in version numbers, the problems they pose, how to work around those problems, what happens with dual-lifed modules, the CPAN indexer and a mythical script belonging to Randal that checks if the universe is in sync.
I never know which version I'm going to be http://xrl.us/kw9e
perlbench
Jim Cromie presented some benchmarks concerning his work to replace
S_new_HE
with Perl_new_body
and asked for some advice as to
how to proceed, and received none.
http://xrl.us/kw9f
Following on from these efforts, Jim looked at benchmarking the same executable against itself five times. He was happy that the overall averages all came out to 100%, but many individual tests showed variations of up to 2%.
Jim felt that this constituted a threshold noise factor, below which differences are worthless. Jim then wondered whether different CPUs and platforms would have different thresholds, and whether such information should be collected in a more systematic manner.
Benchmarking perlbench http://xrl.us/kw9g
Jarkko discovered that AIX's xlc
C compiler will do the following:
#define FOO(n) printf("n = %d\n", n) FOO(10); # expands to "10 = 10\10"
which is, while apparently legal, also quite useless. He therefore patched a couple of files to work around the breakage this introduces. Lukas Mai cited the C standard, chapter and verse (ISO 9899:1999, page 152, footnote 144) that indicates that the above compiler behaviour is indeed incorrect.
Nick Ing-Simmons said that it used to be legal, but ANSI/ISO tightened the specification in a latter revision to the standard, and the compiler is adhering to the previous standard. H.Merijn Brand pointed out that other "old" compilers continue to be supported as capable of compiler perl, and offered some insights into the issues surrounding C compilers on AIX.
What could you do with a macro like that? http://xrl.us/kw9h
open(FH, ...)
in not like open FH, (...)
Ken Williams was trying to concoct a multi-argument open function to avoid using backticks, and the attendant shell-quoting problems, but was having trouble sneaking it past 5.005. It wouldn't actually have to run on 5.005, but everything Ken tried resulted in compile-time errors, or else if it was accepted by 5.005, it didn't do anything useful on 5.6+.
Mike Guy offered a venerably ancient technique that would possibly
still work with punched cards, and had an added bonus of separating
out the open
and fork
into discrete steps, thereby permitting
fine-grained error checking.
Revise your classics http://xrl.us/kw9i
Jarkko launched cpd
(cut-and-paste-detector) at a recent copy of
blead
to see what would happen. Andy Lester was so impressed he
wanted a Makefile cpd
target so that he could see how it was
invoked. Jarkko deferred, saying that the tool is still a little
fragile, being unable to parse perl's source code completely. At
the moment he's working with the author to shake out the remaining
bugs.
Stand back http://xrl.us/kw9j
Andy then took the chainsaw to dump.c. which had acquired some duplicated code in the process of incorporating Larry Wall's MAD work.
(In case I haven't mentioned it already, MAD stands for Misc Attribute Decoration and is the process of hanging sufficient information off the op-tree to be able to recover the source code afterwards. Up until now, the compilation phase has simply been required to produce bytecode for the run-time interpreter, and it's usually impossible to figure out by inspecting the bytecode to figure out what the original Perl source would have looked like (think: peep-hole optimisations).
Being able to go from source code to bytecode back to source code is an important step in getting Perl 6 to run Perl 5 code).
http://xrl.us/kw9k
The first time through, the patch didn't stick, so Andy did it again.
http://xrl.us/kw9m
CPD project page http://pmd.sourceforge.net/cpd.html
Jarkko finished with a discussion on code complexity, noting that
Coverity gives you the McCabe Cyclomatic Complexity, the Halstead
Effort and the Halstead Error Estimate. The results of for perl
seem about right: Perl_keyword
in toke.c is as complex as the
following thirteen most complex functions combined (featuring such
family favourites as Perl_magic_get
, Perl_is_gv_magical
and
S_looks_like_bool
).
Yitzchak wanted to know whether macros were expanded or not in calculating the indices, because in a codebase with such heavy uses of macros as perl's, the differences in perceived complexity are significant. Jarkko thought that they weren't. Anything that attempted to resolve the macros in sv.c would blow a fuse.
Statistician's delight http://xrl.us/kw9n
IO::Socket
tests on Win32
Yves Orton polished his patch to make the IO::Socket
tests pass on
Win32
. Jim Cromie updated concise-xs.t, because the B::Concise
tests picked up the API changes that Yves introduced.
All sockets are go http://xrl.us/kqp4
In another sub-thread on this topic, Nick Ing-Simmons circled back
to the problem of how to determine whether a Windows perl can fork
or not. The problem is one of semantics: yes, perl on Windows can
fork
, but without creating a new process, or allocating a new
memory space, so it hardly counts as a POSIX fork
, even if it
looks the same at a certain distance.
For this reason, the $Config{d_fork}
should not be used on Win32
.
Andy Dougherty nevertheless maintained that something in %Config
should be available, such as a putative $Config{d_pseudofork}
key,
the idea being that people shouldn't have to grovel through
$Config{ccflags}
to try to determine whether particular combination
of flags present or absent means that a specific feature or behaviour
is available.
So I guess we need a meta $Config{some_sort_of_fork} http://xrl.us/kw9o
Salvador Fandiño pitched his patch to add /
, ^
and 1
as
prototypes for user function to allow them to mimic accurately the
built-in functions.
Warnocked http://xrl.us/kw9p
Andy Lester noted that in a couple of routines, nothing is ever read from
the mg
parameters that are passed in, and worse, are used by the code
to stash intermediate calculations. So Andy marked them as Unused, and
declared some new local variables whose names better reflect their purpose.
Refactoring at its finest http://xrl.us/kw9q
chr(65535)
should be allowed in regexes (#38293) Back in January, Marc Lehmann filed a bug report concerning the
possibilities available for matching (or not) chr(65535)
.
Sadahiro-san, resident UTF-8 guru, examined the problem in
depth, uncovered a number of inconsistencies surrounding such
Unicode code-points and wrote a patch to clean it up. Said
patch includes tests (yay!) to ensure the problem doesn't
come back, and more tests (double yay!) for a related bug
(#37836).
Rafael wondered whether perlunicode.pod should be updated
to document more precisely what happens when use warnings 'utf8'
is in force, but Tomoyuki answered that it would probably be
better to rework perl to deal with Unicode non-characters more
reasonably, as per the standard.
http://xrl.us/kw9r
At the same time, Ilya Zakharevich ran into this exact problem on
comp.lang.perl.misc
.
It's a small world http://xrl.us/kw9s
/(??{ "(PAT)" })/
doesn't set $1
(#37407) Dominic Dunlop returned to this bug, noting that
my $dot = qr{ () }x; "" =~ /(??{ $dot })/x;
no longer dumps core on blead
, but then again it doesn't dump core
for 5.8.6 or 5.8.8 either. On the other hand,
"a" =~ /(??{ "(a)" })/
which was Abigail's original problem in the bug report doesn't capture
the 'a' into $1
. Hugo thought that, given the documentation, this
was not a bug: the implementation just isn't up to this sort of caper.
Dominic thought that the documentation should be tightened up to explain
more precisely how (??{})
currently behaves. Abigail conceded the
point, but offered a specific real world example where the ability
would come in handy (matching shortened IPv6 addresses).
http://xrl.us/kw9t
eval
statement exits by a signal (#38854) Itsuro Oda reported a problem when dying via a SIGALRM
handler
in an eval
block, with a nice short test case to show the good
and the bad.
Warnocked http://xrl.us/kw9u
Cliff Liu tried to build perl, and it failed with some peculiar errors when building lib/File/Basename.pm.
http://xrl.us/kw9v
Japhy found an odd corner-case in the regexp engine where greediness
and quantifiers get confused and located the likely culprit in
regexec.c. "Animator" took a stab at resolving the problem,
which is no mean feat considering it was h(?:er|is)
first attempt at
patching the regexp engine. Dave Mitchell took it and cleaned it up
for blead
and included Japhy's original test-case bug snippets.
http://xrl.us/kw9w
The week before last (twenty less than the previous week, all hail Steve Peters):
http://xrl.us/kw9x
Last week (six more closed):
http://xrl.us/kw9y
The remaining 1537 are here http://rt.perl.org/rt3/NoAuth/perl5/Overview.html
ExtUtils-Install version 1.38 uploaded by Yves Orton. This handles the
problems on Win32 dealing with the unlinking of open files, and also
adds an INSTALL.SKIP
directive that users of revision control systems
should appreciate.
Following a query from Rafael, Yves explained the difference between
INSTALL.SKIP
and MANIFEST.SKIP
.
http://xrl.us/kw9z
H.Merijn Brand uploaded The latest and greatest dor
patch
(the $var //= $eigenvalue
trick from Perl 6) for application to
to the current maint
snapshot. Not exactly a module, but hard to
live without once you've grown used to it.
http://xrl.us/kw92
The use sort 'stable'
sorting in reverse bug was fixed by
Robin Houston.
http://xrl.us/kw93
Jarkko Hietaniemi patched ext/IO/t/io_unix.t
to fall back and
use /tmp should the current working directory have permissions
too restrictive to allow sockets to be created.
http://xrl.us/kw94
The issue with pow
failures on AIX, and how to work around
it, was sorted out.
http://xrl.us/kw95
Jim Cromie supplied a long update to his current obsession (arenas for op-codes), and a patch to sv.c.
http://xrl.us/kw96
Nicholas Clark noted that a better strategy for testing Perl_ss_dup
is required, as it never gets called on Unix, as its main use is in
association with the pseudo-forking code on Windows.
http://xrl.us/kw97
Hugo van der Sanden fixed a problem setting %ENV
keys to
undef
that was causing the test suite to emit a faint burning smell.
http://xrl.us/kw98
Jerry D. Hedden reposted his patch to sync blead
's threads
with CPAN. Rafael found that it did not compile on older versions
of HP-UX (that is, 10.20, unsupported by HP for a couple of years
now). This will be cleaned up in a subsequent patch.
http://xrl.us/kw99
More changes here:
http://xrl.us/kxaa
Jan Dubois patched threads.pm to overload the !=
operator
as ==
is overloaded to allow threads to be compared by thread id,
since overload.pm cannot (or does not) implicitly derive !=
from ==
.
http://xrl.us/kxab
In doing so, tidied up the placement of the documentation for ~~
(smart match).
http://xrl.us/kxac
Joshua ben Jore arranged things so that foreach (...)
isn't a
B::Lint
warning anymore. Hugo and Rafael both commented on the
proposal, and Joshua defended his position with ease.
http://xrl.us/kxad
Steve Hay was struggling with the PERL_UNUSED_DECL
change
(27649) breaking threaded builds on Win32 with gcc-3.4.2.
In space no-one can hear you scream http://xrl.us/kxae
Ravi Sastry had a problem with lib/ExtUtils/t/Constant.t on z/OS. Sadahiro-san, resident EBCDIC guru, spotted an suspect ASCIIism in a complemented character class and spelt it out longhand. A conversation on the finer points of EBCDICisms ensued, and Ravi finally got it working to his satisfaction.
http://xrl.us/kxaf
Continuing on z/OS, Mohammad Haseen had problems with
-DPERL_EXTERNAL_GLOB
, which dictates to perl whether it should handle
globbing itself or defer to an external process.
http://xrl.us/kxag
He was also having problems with lib/ExtUtils/t/Embed.t. Nick Ing-Simmons was suspicious of the compiler switches used, and suggested some work-arounds.
http://xrl.us/kxah
Nick Ing-Simmons carefully explained the advantages and differences of dynamic versus static builds of Perl.
http://xrl.us/kxai
Upcoming versions of Solaris will permit 32-bit processes to open
more than 256 stdio
file handles. Alan Burlison sent in a
pre-emptive patch to allow gcc
to deal with the change.
Your standard preprocessor trickery http://xrl.us/kxaj
Dominic Dunlop went through RT looking for tickets involving
postponed regexes (??{...})
and found nine. He then
summarised the situation of each one.
http://xrl.us/kxak
Yann Combarnous offered a patch to silence an "uninitialized value" warning in CGI.pm (bug #38865).
http://xrl.us/kxam
Chris Dolan identified a problem with changing $0
on Darwin leads
to excessive padding in ps
(bug #38868)
http://xrl.us/kxan
Jan Dubois posted a patch to ease the combination of UTF-16
with :crlf
. Nick Ing-Simmons started to have second thoughts
on the approach.
http://xrl.us/kxao
John E. Malmberg published an RFC concerning
UTF-8 file specifications on VMS. Steve Hay wanted the same for
Win32
. Nicholas Clark helped John finalise his patch.
http://xrl.us/kxap
Steffen Ullrich posted a bug showing how to crash perl by having
$1
bound to an out-of-scope variable. (bug #38869)
http://xrl.us/kxaq
Joshua ben Jore is a sick person. He uses emacs for a start. On top of that, he h(ij)?acked his syntax checking minor mode to refuse to save the file if it doesn't lint cleanly. Download his code, and you can too!
http://xrl.us/kxar
Dan Kogai was happy to discover that search.cpan.org now groks the
=encoding
directive, which improved the presentation of his
modules there. Tels rushed off to add Unicode examples to his POD.
http://xrl.us/kxas
In between bouts of jousting with Coverity, Andy still found some time to deliver some consting goodness in regcomp.c . Dave applied most of it, but held back on one part as he's about to let more regcomp.c improvements escape from the basement.
http://xrl.us/kxat
Philip M. Gollucci ran into trouble, due to the recent changes
concerning PERL_UNUSED_DECL
when compiling Apache's apreq
.
It is apparently something to do with ppport.h, but his diff
appeared to rewrite ppport.h in its entirety, so I'm not sure
anyone knew what to do with it.
http://xrl.us/kxau
Torsten Foertsch was having problems with ("x"x32769)=~/\A(.)\1*\z/s
and print "$1\n"
and wondered what to do about it. Hugo explained
what was going wrong, and realised in passing that the diagnostics.pm
diagnostic needs a bit of work, following on from Dave's
recursive-to-iterative transformation of the regexp engine.
http://xrl.us/kxav
Jerry D. Hedden took a third attempt at synching blead
with
CPAN's threads
. Rafael put it through the wringer and came
up with some problems in conjunction with PERL_TRACK_MEMPOOL
and offered advice as to where things could be breaking. Rafael
made a couple of other comments on the changes and finished
with a word of thanks, because few people have had the courage
to venture into this code and attempt to clean it up.
http://xrl.us/kxaw
Andy tweaked the FIT_ARENA
macros. Jim Cromie explained that
what Andy had done was to re-merge a macro that H.Merijn had
previously split apart into two, but could no longer recall what
necessity had driven H.Merijn to do such a thing.
http://xrl.us/kxax
Linda Walsh tweaked Benchmark.pl to remove spurious warning
that occurs when the :hireswallclock
option is used.
http://xrl.us/kxay
Jan Dubois taught Pod::Html::depod()
how to deal with multi-line
strings and update the test suite to boot,
http://xrl.us/kxaz
and also fixed up anchor generation in Pod::Html
for =item item 2
.
http://xrl.us/kxa2
Hervé Guillemet had a problem with nested closures losing
their references to outer variables, noted in bug (#38895).
Yitzchak explained that the problem had been fixed in blead
,
but that the change was unlikely to make it back to maint
,
and offered a simple technique to route around the damage.
http://xrl.us/kxa3
Andy Lester made a simple, but elegant improvement to mg.c to
make it clearer what was being returned in Perl_magic_scalarpack
,
and elsewhere to split the use of variable that had been pressed into
use in two distinct roles into two separate variables. This is
has been pretty much the overall aim of Andy's refactorisations
over the past months; it's only now that he's starting to get there.
http://xrl.us/kxa4
H.Merijn implemented a trick in Configure
to introduce a new
-DEBUGGING
switch that would be an improvement over
-DDEBUGGING
. Many people appeared to appreciate the concept.
http://xrl.us/kxa5
Slaven Rezic tweaked perlfaq8
via bug report #38901 to improve
how to discover if I'm running interactively or not.
http://xrl.us/kxa6
Jerrad Pierce looked at Module::Corelist
through the lens of perl 4.036
and came up with a number of additions for it, arguing that it would have
a certain educational value. Rafael remained somewhat unconvinced.
http://xrl.us/kxa7
Nicholas Clark revived and old thread started by Jos I. Boumans concerning
a Bug or Limitation of Filehandles in pp_require
.
http://xrl.us/kxa8
This then segued into code references in @INC and source filters. Nick Ing-Simmons mentioned a truly mind-boggling use that he had put it to.
http://xrl.us/kxa9
So Nicholas went ahead and changed what he said he'd change, but
then discovered Filter::Simple
error messages getting mangled
inside require
(#38920).
http://xrl.us/kxba
Andy Lester cached a pointer dereference to a bitfield, in the hope
of improving the performance of is_list_assignment
in op.c.
Nicholas knew from bitter experience that it is hard to outsmart
compilers these days, but applied the patch anyway.
Take 1 http://xrl.us/kxbb
Take 2 http://xrl.us/kxbc
Andy finished by removing an unused variable in a macro.
http://xrl.us/kxbd
H.Merijn Brand carefully explained just what it takes to
pull a Configure
script out the constituent pieces,
http://xrl.us/kxbe
bug #34349 is still open,
http://xrl.us/kxbf
I flipped a bit concerning the layer problem Jan Dubois found,
http://xrl.us/kxbg
and Jerry Hedden explained that thread stack size sizing is even trickier than first thought.
http://xrl.us/kxbh
This summary was written by David Landgren. Last week I was in England on holiday. As I was wandering around Salisbury cathedral, I kept thinking "Hmm, I hope there won't be too much traffic on p5p this week". HA!
If you want a bookmarklet approach to viewing bugs and change reports, there are a couple of bookmarklets that you might find useful on my page of Perl stuff:
http://www.landgren.net/perl/
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.