Frank Wiegand [Thu, 8 Apr 2010 20:16:30 +0000]
fix a2p example
David Mitchell [Tue, 13 Apr 2010 10:00:30 +0000]
fix minor casting issue
David Mitchell [Tue, 13 Apr 2010 10:00:09 +0000]
Merge commit 'origin/davem/post-5.12' into blead
Ævar Arnfjörð Bjarmason [Tue, 13 Apr 2010 09:48:20 +0000]
Before
96a8704c makedepend.SH used shell quote syntax that modern
shells barf on. Document how to work around this in the example bisect
script.
Ævar Arnfjörð Bjarmason [Tue, 13 Apr 2010 09:46:48 +0000]
When your bisect starts to go into perl-5.9.* territory `make -j4'
fails on Config.pm due to some race condition. This'll turn what would
otherwise be a bad/good report into skip.
Rafael Garcia-Suarez [Tue, 13 Apr 2010 09:45:11 +0000]
Fix test comment (noticed by Alex Vandiver)
Rafael Garcia-Suarez [Tue, 13 Apr 2010 09:42:12 +0000]
[perl #74198] Typo in perlop(1)
reported by rrt@sc3d.org
Rafael Garcia-Suarez [Fri, 9 Apr 2010 10:25:54 +0000]
when(scalar) without argument should be a syntax error [perl #74114]
Rafael Garcia-Suarez [Fri, 9 Apr 2010 10:29:04 +0000]
Ignore Devel/DProf test files in the git repository
Jesse Vincent [Tue, 13 Apr 2010 03:52:50 +0000]
Add the 5.13 deprecation stanza to Module::Corelist to make tests happy
Jesse Vincent [Tue, 13 Apr 2010 03:32:12 +0000]
feature.pm now knows about 5.13
Jesse Vincent [Tue, 13 Apr 2010 03:15:56 +0000]
Bump to 5.13.0
Jesse Vincent [Tue, 13 Apr 2010 03:03:05 +0000]
Create a perl5130delta.pod
Jesse Vincent [Mon, 12 Apr 2010 13:01:09 +0000]
Removing the RC marker from patchlevel.h
Jesse Vincent [Mon, 12 Apr 2010 12:43:28 +0000]
Revert "* Fixed typo in toke.c docs, identified by Zefram"
The commit was good, but we're in freeze for 5.12.0. I'd be happy to
see this hit blead again after 5.12.0 is tagged.
This reverts commit
675ac12c19e6fe00eff6e604a7d637bf621997ef.
David Mitchell [Sun, 11 Apr 2010 22:45:29 +0000]
remove 'enable taint if modify gid/uid' feature
If at runtime you modify any of any the id variables $<, $>, $(, $),
such that the id and effective id differ, perl used to enable tainting,
even if -T wasn't specified at startup.
This commit removes that feature. See
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2010-03/mail9.html
RT #67260
David Mitchell [Sun, 11 Apr 2010 14:52:43 +0000]
RT 8857: premature free in local of tied element
[The original bug report concerned local($_) remained tied, but while
looking at it, Nicholas found some related code that popped up premature
free errors. This commit fixes the freeing issue rather than the issue of
the original bug report ]
Background:
local $a[0]
does, approximately:
svp = av_fetch(av);
SAVE(av,*svp);
sv = newSV();
*svp = sv;
This used to leak when av was tied, as the new sv only got embedded in
*svp, which for tied arrays is a temporary placeholder rather than
somewhere within AvARRAY. This leak was fixed in 2002 by adding the
following:
if (SvTIED_mg(sv, PERL_MAGIC_tiedelem))
sv_2mortal(sv);
which worked, except for the following:
sub f { local $_[0] }
f($_) for ($tied[0]);
Here, @_ is a real array not a tied one, yet its first element is a
PERL_MAGIC_tiedelem which trigged the test above. So the sv got
mortalised *and* stored in the array, so got freed twice. The fix is
to test the *array/hash* for tied-ness rather than the element.
David Mitchell [Sun, 11 Apr 2010 14:23:17 +0000]
create SV leak test infrastructure
Add an sv_count() function to XS::APItest to allow access to PL_sv_count,
then add new test file t/op/svleak.t that allows you yo run a code
fragment a few times and test whether the number of allocated SVs has
increased
brian d foy [Sun, 11 Apr 2010 12:15:27 +0000]
* Fixed typo in toke.c docs, identified by Zefram
Jesse Vincent [Sat, 10 Apr 2010 03:20:36 +0000]
adjust release dates due to rc5
Josh ben Jore [Fri, 9 Apr 2010 20:44:09 +0000]
Add bug to known issues for perl-v5.12.0
Rafael Garcia-Suarez [Fri, 9 Apr 2010 12:19:00 +0000]
[perl #74168] Assertion failure when emitting a stricture error message
Jesse Vincent [Sat, 10 Apr 2010 03:17:44 +0000]
RC5 due to a regression reported by <mons@veda.park.rambler.ru>
David Mitchell [Thu, 8 Apr 2010 12:16:56 +0000]
fix RT 23810: eval and tied methods
Something like the following ended up corrupted:
sub FETCH { eval 'BEGIN{syntax err}' }
The croak on error popped back the context stack etc to the EVAL pushed by
entereval, but the corresponding JUMPENV_PUSH(3) unwound all the way to the
outer perl_run, losing all the mg_get() related parts of the C stack.
It turns out that the run-time parts of pp_entereval were protected with
a new JUMPENV level, but the compile-time parts weren't. Add this.
Jos Boumans [Tue, 6 Apr 2010 21:19:08 +0000]
Explicitly set the location of cpanp-run-perl when under PERL_CORE
CPANPLUS::Config checks 3 specific scenarios first
when looking for cpanp-run-perl: parallel to cpanp,
parallel to CPANPLUS.pm, or installed into a custom
prefix like /tmp/foo. Only *THEN* does it check the
the path.
If the perl core is extracted to a directory that has
cpanp-run-perl installed the same amount of 'uplevels'
as the /tmp/foo prefix, we'll pull in the wrong script
by accident.
Since we set the path to cpanp-run-perl explicitily
at the top of this script, it's best to update the config
ourselves with a path lookup, rather than rely on its
heuristics. Thanks to David Wheeler, Josh Jore and Vincent
Pit for helping to track this down.
Effects both CPANPLUS and CPANPLUS-Dist-Build
David Mitchell [Tue, 6 Apr 2010 19:53:45 +0000]
more mods to -Dl debugging output
Josh ben Jore [Mon, 5 Apr 2010 23:36:10 +0000]
Skip make_path group/user tests for darwin - it's nobody and nogroup ids are -1
Jesse Vincent [Mon, 5 Apr 2010 13:23:22 +0000]
Update perldelta for the removal of the deprecation warnings on perl4-era libraries.
Steffen Mueller [Mon, 5 Apr 2010 13:15:38 +0000]
Remove perl4-library deprecation warnings
After the recent, long discussion about this topic and demonstrated
cases where the deprecation warnings may actually *break* things, we
agreed on IRC to push the "active" deprecation warnings to after 5.12.
--Steffen
From
f1b2d650aa126e06fc270dd0a44b8a6bf0da6e2c Mon Sep 17 00:00:00 2001
From: Steffen Mueller <smueller@cpan.org>
Date: Mon, 5 Apr 2010 15:12:41 +0200
Subject: [PATCH] Remove deprecation warnings from perl4-era tools
The libraries still have deprecation warnings in their comments but the
mandatory run-time warnings are disabled until after 5.12.
Jesse Vincent [Mon, 5 Apr 2010 13:05:19 +0000]
Most of the REGEXP-massaging modules have now been updated.
Moved the single known-failing example to the errata page.
Jesse Vincent [Mon, 5 Apr 2010 13:06:58 +0000]
We're gonna have a fourth RC.
Jesse Vincent [Fri, 2 Apr 2010 19:22:22 +0000]
There's gonna be an RC3
Jesse Vincent [Fri, 2 Apr 2010 19:22:01 +0000]
untodo the no-longer-failing todo test for rgs' patch
Rafael Garcia-Suarez [Fri, 2 Apr 2010 19:19:24 +0000]
For evals, op_targ carry hint flags, which are pretty high when you're
using feature or another (recent) pragma. And previously we had to care
only about entereval, but now we can compile to entertry too.
Florian Ragwitz [Fri, 2 Apr 2010 18:25:03 +0000]
Add a TODO test for block evals segfaulting on syntax errors.
Jesse Vincent [Fri, 2 Apr 2010 18:07:57 +0000]
If the RC goes out today, the release goes out next friday
Curtis Jewell [Wed, 31 Mar 2010 06:57:10 +0000]
Adding Curtis Jewell to AUTHORS.
Curtis Jewell [Wed, 31 Mar 2010 06:54:44 +0000]
Specifying when the trimmed down Win64 compiler works.
Curtis Jewell [Wed, 31 Mar 2010 06:53:45 +0000]
Updating location of Strawberry's 64-bit toolchain.
Jesse Vincent [Fri, 2 Apr 2010 13:42:01 +0000]
Typo in perldelta found by Tom Wyant
Jesse Vincent [Thu, 1 Apr 2010 02:13:23 +0000]
5.12.0 is now expected on 7 April 2010
Ricardo Signes [Wed, 31 Mar 2010 20:40:57 +0000]
update the name of Task::Deprecations::5_12
Jesse Vincent [Wed, 31 Mar 2010 17:31:55 +0000]
Merge branch 'blead' of ssh://perl5.git.perl.org/gitroot/perl into blead
* 'blead' of ssh://perl5.git.perl.org/gitroot/perl:
Don't initialize end in pp_reverse when begin is NULL
More tests for in-place reverse (empty tied array)
Add a test for reversing in-place an empty array
Avoid a segfault when reversing an empty array in-place.
Jesse Vincent [Wed, 31 Mar 2010 17:31:18 +0000]
Updated perldelta to point to the not-yet-extant bundle for 5.12
core-deprecated modules
Vincent Pit [Wed, 31 Mar 2010 12:33:32 +0000]
Don't initialize end in pp_reverse when begin is NULL
This change is a complement to
572558b47236782e60e41bd235c96eae7cbca3db.
Arithmetic on null pointers isn't defined by the C standard, so it may crash even before entering the loop.
Rafael Garcia-Suarez [Wed, 31 Mar 2010 10:43:32 +0000]
More tests for in-place reverse (empty tied array)
Rafael Garcia-Suarez [Wed, 31 Mar 2010 09:32:16 +0000]
Add a test for reversing in-place an empty array
Rafael Garcia-Suarez [Wed, 31 Mar 2010 07:50:00 +0000]
Avoid a segfault when reversing an empty array in-place.
Jesse Vincent [Wed, 31 Mar 2010 03:16:57 +0000]
Remove potentially confusing strawman version numbers from the release
manager schedule
Jesse Vincent [Wed, 31 Mar 2010 03:02:33 +0000]
Reword a speculative message about building 32bit perls from INSTALL.
Spotted by Tim Jenness
Jesse Vincent [Wed, 31 Mar 2010 02:58:52 +0000]
Looks like we have an RC2 due to a segfault in reverse()
David Mitchell [Tue, 30 Mar 2010 19:26:31 +0000]
improve -Dl debugging output
In particular, distinguish between scope and context stack push/pops,
show depth of JUMPENV stack, and show STACKINFO push/pops
David Mitchell [Tue, 30 Mar 2010 14:03:50 +0000]
PL_defoutgv isn't always a GV.
Nasty code like the following results in PL_defoutgv not pointing
to a valid GV:
my $x = *STDERR; select($x); $x = 1;
This causes all sorts of SEGVs when PL_defoutgv is subsequently accessed,
because most code assumes that it has a valid gv_gp pointer. It also
turns out that PL_defoutgv is under-tested; for example, temporarily
hacking pp_close to make an arg-less close() croak didn't cause any
minitest failures.
Add a new test file that does some basic testing of a bad PL_defoutgv,
and fix all the obvious badness in accessing it.
This also fixes #20727, which although ostensibly a tie bug, was due to
PL_defoutgv pointing to a tiedelem scalar, and fun like that described
above happening.
David Golden [Tue, 30 Mar 2010 04:18:44 +0000]
rafl volunteers to release blead in August 2010
David Golden [Tue, 30 Mar 2010 04:11:56 +0000]
revise release manager schedule
Florian Ragwitz [Mon, 29 Mar 2010 17:59:30 +0000]
Document removal of -P in perldelta.
Also trim some trailing whitespace.
Jesse Vincent [Mon, 29 Mar 2010 15:44:32 +0000]
Assuming RC1 goes out today, .0 goes out on 5 April
Jesse Vincent [Mon, 29 Mar 2010 15:30:02 +0000]
Add an errata pointer to perldelta.
Slaven Rezic [Mon, 29 Mar 2010 11:55:21 +0000]
doc update: Storable cannot serialize REGEXP (yet)
Jesse Vincent [Mon, 29 Mar 2010 14:04:15 +0000]
Update perldelta to warn people that deprecated things weren't just deprecated in this release.
Jesse Vincent [Mon, 29 Mar 2010 13:47:10 +0000]
back out misguided change to brnaching time.
Jesse Vincent [Mon, 29 Mar 2010 13:12:43 +0000]
Begin bowing to public pressure toward an open blead;
document how to create a maint branch when RC1 comes out.
Jesse Vincent [Mon, 29 Mar 2010 03:51:48 +0000]
bump from rc0 to rc1.
Jesse Vincent [Mon, 29 Mar 2010 03:48:44 +0000]
Update perldelta to better warn users about the changes from the first-classification of regexps.
Karl Williamson [Sun, 28 Mar 2010 18:33:54 +0000]
A few edits
Rewording to clarify a few paragraphs; make table fit in 80 column
terminal; remove extra word; other slight edits
Karl Williamson [Sun, 28 Mar 2010 18:18:11 +0000]
Slight edits
Add index entries; reword a paragraph
Karl Williamson [Sun, 28 Mar 2010 18:16:35 +0000]
Slight edits
double word, make table fit in 80 column terminal
Craig A. Berry [Sun, 28 Mar 2010 19:58:54 +0000]
Spaces in filenames require non-default settings on VMS.
Specifically DECC$EFS_CHARSET must be enabled and not everything
plays nice with that, so for now this is a to-do.
David Mitchell [Sun, 28 Mar 2010 20:13:41 +0000]
remove tmp debugging from File/Copy.t
Karl Williamson [Sun, 28 Mar 2010 05:06:59 +0000]
Clarify that some examples are for ASCII machines
Karl Williamson [Sun, 28 Mar 2010 04:55:41 +0000]
Make whitespace a single word [perl #34462]
Karl Williamson [Sun, 28 Mar 2010 04:50:46 +0000]
Fix typos, minor wording changes, clarifications
Karl Williamson [Sun, 28 Mar 2010 04:45:53 +0000]
Bring up to date for 5.12; including POSIX
The regex documentation included changes that were put temporarily into
a 5.11 release, but not into 5.12. And there were a number of omissions.
I went through this pod and tried to make it reflect reality.
Karl Williamson [Sun, 28 Mar 2010 04:43:32 +0000]
Remove duplicate information and refer to other pods
Things were getting out of sync.
Karl Williamson [Sun, 28 Mar 2010 04:22:39 +0000]
Note a new thing to check for each new release of Perl
David Mitchell [Sun, 28 Mar 2010 11:45:00 +0000]
add =encoding utf8 to the perldelta template
Ævar Arnfjörð Bjarmason [Sat, 27 Mar 2010 23:59:01 +0000]
When using a GitHub fork advice the use of Perl's Git, not GitHub's mirror
This bit me when `git pull upstream blead' didn't pull commits I knew
had been commited, turned out GitHub's mirror was out of date.
David Mitchell [Sat, 27 Mar 2010 18:07:30 +0000]
RT #73714: Regression in 5.12: File::Copy and initial spaces
Commit
81ec4fbc8320b72171c9fbea0fa0456b3a687f92
removed some obsolete code that processed with leading spaces in filenames
(not needed with 3-arg open), but didn't quite clean out everything.
This meant that trying to copy to a file whose name had a leading space
would unceremoniously die with
Undefined subroutine &File::Copy::_protect called
Craig A. Berry [Sat, 27 Mar 2010 17:52:33 +0000]
Update Porting/checkAUTHORS.pl to (once again) distinguish authors from committers by processing git log --pretty=fuller, e.g.,
% git log --pretty=fuller perl-5.12.0..HEAD \
? | perl Porting/checkAUTHORS.pl --rank --percentage -
Without this, the --rank and --thanks-applied options were not working.
Also, the meaning of --thanks-applied has changed somewhat; it now only counts
commits where the committer is not the author.
[This commit is the delta between Craig's previous patch and his revised
patch]
Andreas J. Koenig [Sat, 27 Mar 2010 17:26:44 +0000]
Andreas provided a patch to CPAN::Distribution to deal with a bug in core
module deprecation
commit
8b7e29685086feb1e01992478bcb0498f584574c
Author: Andreas J. Koenig <andk@cpan.org>
Date: Tue Mar 16 08:56:03 2010 +0100
except deprecated modules from short circuiting, uncovered by
Data::TreeDumper/Class::ISA
Craig A. Berry [Sat, 27 Mar 2010 17:11:57 +0000]
A slightly tweaked patch to perldelta from Craig Berry acknowledging the
huge amount of work done by our prior pumpkings.
Jesse Vincent [Sat, 27 Mar 2010 17:05:31 +0000]
Reformatted excessively long lines in perldelta.
Jesse Vincent [Sat, 27 Mar 2010 16:35:09 +0000]
Bump B::Deparse and Module::CoreList versions due to the late patch.
Jesse Vincent [Sat, 27 Mar 2010 16:33:56 +0000]
Merge branch 'blead' of ssh://perl5.git.perl.org/gitroot/perl into blead
* 'blead' of ssh://perl5.git.perl.org/gitroot/perl:
[perl #73720] opt_scalarhv(or OP_BOOLKEYS) does not work
David Leadbeater [Thu, 25 Mar 2010 00:40:35 +0000]
[perl #73720] opt_scalarhv(or OP_BOOLKEYS) does not work
An optimisation for %hash in boolean context, as introduced with
867fa1e2da145229b4db2c6e8d5b51700c15f114
could falsely optimise constructs that shoudn't be.
Original bug report and fix suggestion were by Goro Fuji.
Include a test to cover the case which was mis-optimised (although
coverage still seems low to me).
Additionally correct B::Deparse (just swap a line, it was using a
variable before it was defined).
Ævar Arnfjörð Bjarmason [Thu, 25 Mar 2010 21:28:20 +0000]
Add =encoding utf8 to the 5.12 delta (like the 5.10 delta)
Without specifying =encoding POD converters would produce strings like
"Ævar" from the source "Ævar". This affected the Acknowledgements
section where several non-ASCII names were present.
Tested by checking if search.cpan.org screwed up non-ASCII characters
in the 5.10 delta, it didn't.
Ævar Arnfjörð Bjarmason [Thu, 25 Mar 2010 20:56:49 +0000]
Adjust the formatting of the note about t/op/re.t
POD formatters will now render this note one one line like the rest of
the items in the list.
Craig A. Berry [Thu, 25 Mar 2010 17:55:16 +0000]
Bring Porting/checkAUTHORS.pl into the world of git.
Now processes git log output rather than the Changes file. E.g.,
% git log --pretty=fuller --name-status perl-5.10.0..HEAD \
? | perl Porting/checkAUTHORS.pl --rank --percentage -
Also, the meaning of --thanks-applied has changed; it now only counts
commits where the committer is not the author.
Ævar Arnfjörð Bjarmason [Thu, 25 Mar 2010 21:41:27 +0000]
Eulogy fix: Mention Domain/OS instead of DomainOS in "Discontinued Platforms"
The slash is used in the official name, and is e.g. the title of the
Wikipedia article.
Rafael Garcia-Suarez [Fri, 26 Mar 2010 22:30:41 +0000]
Fix title of perluniprops in table of contents
(noticed by Frank Wiegand)
Jesse Vincent [Thu, 25 Mar 2010 15:26:05 +0000]
perl 5.11.6 never happened. Remove the traces of its perldelta.
Thanks to Ask for pointing it out.
Jesse Vincent [Thu, 25 Mar 2010 15:13:27 +0000]
Removed specific attributions from the very few changes that had them.
While I'd love it if all changes were attributed to the porters
responsible for them, it's not reasonable to single out only a few
contributors for individual changes without acknowledging all
contributors. (Read: I love and appreciate all of you. Deleting your
name from the perldelta doesn't mean I hate you or your work.)
Jesse Vincent [Thu, 25 Mar 2010 15:06:19 +0000]
Downgrade Socket.pm's new inet_ntop and inet_pton to EXPORT_OK rather
than EXPORT as they're new functions which clobber symbols in downstream
CPAN modules.
Jesse Vincent [Thu, 25 Mar 2010 14:28:27 +0000]
Perldelta proofreading fixes from Zefram in
Message-Id: <
20100322120613.GC19877@lake.fysh.org>
David Mitchell [Thu, 25 Mar 2010 10:56:35 +0000]
RT #67962: $1 treated as tainted in untainted match
Fix the issue in the following:
use re 'taint';
$tainted =~ /(...)/;
# $1 now correctly tainted
$untainted =~ s/(...)/$1/;
# $untainted now incorrectly tainted
The problem stems from when $1 is updated.
pp_substcont, which is called after the replacement expression has been
evaluated, checks the returned expression for taintedness, and if so,
taints the variable being substituted. For a substitution like
s/(...)/x$1/ this works fine: the expression "x".$1 causes $1's get magic
to be called, which sets $1 based on the recent match, and is marked as
not tainted. Thus the returned expression is untainted. In the variant
s/(...)/$1/, the returned value on the stack is $1 itself, and its get
magic hasn't been called yet. So it still has the tainted flag from the
previous pattern.
The solution is to mg_get the returned expression *before* testing for
taintedness.
David Golden [Thu, 25 Mar 2010 03:18:28 +0000]
added Aristotle Pagaltzis to AUTHORS
Aristotle Pagaltzis [Thu, 25 Mar 2010 03:12:36 +0000]
give two simpler recipes for creating remote branches
David Mitchell [Wed, 24 Mar 2010 22:02:02 +0000]
describe how to create a remote topic branch
Leon Brocard [Wed, 24 Mar 2010 13:06:09 +0000]
Check that sparse files hold at least a block (bug in eCryptfs: https://bugs.launchpad.net/ecryptfs/+bug/390833)
David Mitchell [Tue, 23 Mar 2010 12:11:43 +0000]
Fix assorted bugs related to magic (such as pos) not "sticking" to
magical array and hash elements; e.g. the following looped infinitely:
$h{tainted_element} =~ /..../g
There are two side-effects of this fix.
First, MGf_GSKIP has been extended to work on tied array
elements as well as hash elements. This is the mechanism that skips all
but the first tied element magic gets until after the next set.
Second, rvalue hash/array element access where the element has get magic,
now directly returns the element rather than a mortal copy.
The root cause of the bug was code similar to the following in pp_alem,
pp_aelemfast, pp_helem and pp_rv2av:
if (!lval && SvGMAGICAL(sv)) /* see note in pp_helem() */
sv = sv_mortalcopy(sv);
According to the note, this was added in 1998 to make this work:
local $tied{foo} = $tied{foo}
Since it returns a copy rather than the element, this make //g fail.
My first attempt, a few years ago, to fix this, took the approach that
the LHS of the bind should be made an lvalue in the presence of //g, since
it now modifies its LHS; i.e.
expr =~ // expr is rvalue
expr =~ s/// expr is lvalue
expr =~ //g expr was rvalue, I proposed to change it to lvalue
Unfortunately this fix broke too much stuff (stuff that was arguably
already broken, but it upset people). For example, f() ~= s////
correctly gives the error
Can't modify non-lvalue subroutine call
My fix extended f() =~ //g to give the same error. Which is reasonable,
because the g isn't doing what you want. But plenty of people had code that
only needed to match once and the g had just been cargo-culted. So it
broke their working code. So lets not do this.
My new approach has been to remove the sv_mortalcopy(). It turns out
that this is no longer needed to fix the local $tied{foo} issue.
Presumably that went away as a side-effect of my container/value magic
localisation rationalisation of a few years ago, although I haven't
analysed it - just noted that the tests still pass (!). However, an issue
with removing it is that mg_get() no longer gets called. So a plain
$tied_hash{elem};
in void context no longer calls FETCH(). Which broke some tests and might
break some code. Also, there's an issue with the delayed calling of magic
in @+[n] and %+{foo}; by the time the get magic is called, the original
pattern may have gone out of scope.
The solution is to simply replace the original
sv = sv_mortalcopy(sv);
with
mg_get(sv);
This then caused problems with tied array FETCH() getting called too much.
I fixed this by extending the MGf_GSKIP mechanism to tied arrays as well
as hashes. I don't understand why tied arrays have always been treated
differently than tied hashes, but unifying them didn't seem to break
anything (except for a Storable test, whose comment indicated that the
test's author thought FETCH() was being called to often anyway).