Robin Barker [Sat, 10 Sep 2011 08:05:13 +0000 (09:05 +0100)]
fix NAME section in Text::Abbrev and Search::Dict
These modules currently warn when parsing ABSTRACT_FROM,
as the NAME section does not have the correct form; so
add "$package - " at the start of the NAME section line.
Leon Timmermans [Sun, 18 Sep 2011 10:22:30 +0000 (12:22 +0200)]
Only upgrade when necessary
Father Chrysostomos [Sun, 18 Sep 2011 05:42:58 +0000 (22:42 -0700)]
Deparse "${#}a"
Father Chrysostomos [Sun, 18 Sep 2011 05:39:17 +0000 (22:39 -0700)]
Deparse $#{/} correctly
Father Chrysostomos [Sun, 18 Sep 2011 03:47:26 +0000 (20:47 -0700)]
Make -l always treat non-bareword arguments as file names
Here is some suspicious code in Perl_my_lstat_flags:
if (SvROK(sv) && isGV_with_GP(SvRV(sv)) && ckWARN(WARN_IO)) {
Perl_warner(aTHX_ packWARN(WARN_IO), "Use of -l on filehandle %s",
GvENAME((const GV *)SvRV(sv)));
return (PL_laststatval = -1);
}
The behaviour differs depending on whether warnings are enabled.
That -1 turns into undef in pp_ftlink. So we get an undef return
value with warnings on, but a file test on a file name otherwise.
In 5.6.2, -l $foo always treated $foo as a file name.
In 5.8+, if it is a reference (ignoring magic) and the reference
points to a typeglob (ignoring magic) and io warnings are on, it warns
and returns undef.
So the only time that undef return is reached is when a warning has
been emitted, so it’s code that will likely be corrected before it
goes into production. Hence I think it unlikely that anyone could be
relying on the behaviour of -l \*foo (under warnings).
So this commit restores the 5.6 behaviour for that case.
Father Chrysostomos [Sun, 18 Sep 2011 03:16:36 +0000 (20:16 -0700)]
Make stacked -l work
Perl 5.10.0 introduced stacked filetest operators,
-x -r $foo
being equivalent to
-r $foo && -x _
That does not work with -l. It was these suspicious lines in
Perl_my_lstat_flags that drew my attention to it:
> else if (PL_laststype != OP_LSTAT
> && (PL_op->op_private & OPpFT_STACKED) && ckWARN(WARN_IO))
> Perl_croak(aTHX_ no_prev_lstat);
That croak only happens when warnings are on. Warnings are just
supposed to be warnings, unless the ‘user’ explicitly requests
fatal warnings.
$ perl -le 'print "foo", -l -e "miniperl"'
foo
$ perl -lwe 'print "foo", -l -e "miniperl"'
The stat preceding -l _ wasn't an lstat at -e line 1.
That it doesn’t die in the first example is a bug.
In fact, it’s using the return value of -e as a file name:
$ ln -s miniperl 1
$ ./miniperl -le 'print -l -e "miniperl"'
1
And, with warnings on, if the preceding stat *was* an lstat, it
falls back to the pre-stacked behaviour, just as it does when warn-
ings are off.
It’s meant to be equivalent to -e "miniperl" && -l _ (which is why the
error message above says ‘The stat preceding -l _’).
Father Chrysostomos [Sun, 18 Sep 2011 02:39:07 +0000 (19:39 -0700)]
perlglossary: fix broken link
Father Chrysostomos [Sun, 18 Sep 2011 02:32:22 +0000 (19:32 -0700)]
perlglossary: Make empty-list-as-scalar even clearer
Chas. Owens [Sun, 18 Sep 2011 02:31:09 +0000 (19:31 -0700)]
Document empty-list-as-scalar in perlglossary
Father Chrysostomos [Sun, 18 Sep 2011 02:35:41 +0000 (19:35 -0700)]
Really allow podcheck.t to be run from outside t/
4e9a627e2 was not enough.
Father Chrysostomos [Sun, 18 Sep 2011 02:25:26 +0000 (19:25 -0700)]
perldata: Mention undefined as a false val
Father Chrysostomos [Sun, 18 Sep 2011 02:12:38 +0000 (19:12 -0700)]
Allow podcheck.t to be run from outside t/ for convenience
Father Chrysostomos [Sat, 17 Sep 2011 21:28:29 +0000 (14:28 -0700)]
Update META.yml following
986a805c
Father Chrysostomos [Sat, 17 Sep 2011 20:23:07 +0000 (13:23 -0700)]
Correct punctuation in some POSIX error messages
Commit
fa22ee54 changed some of the POSIX error messages to be more
consistent, but in doing so made many of them grammatically incorrect.
It is almost always incorrect in English to join two independent
clauses with a comma.
I don’t think it’s particularly important that error messages be gram-
matical; I just don’t want them getting worse over time. Hence, I
have not touched those that were already ungrammatical.
Father Chrysostomos [Sat, 17 Sep 2011 19:46:20 +0000 (12:46 -0700)]
perlop: Clarify \octal slightly
This is to address ticket #94252.
Father Chrysostomos [Sat, 17 Sep 2011 19:09:22 +0000 (12:09 -0700)]
Make IO::Handle::getline(s) respect the open pragma
See <https://rt.cpan.org/Ticket/Display.html?id=66474>. Also, this
came up in <https://rt.perl.org/rt3/Ticket/Display.html?id=92728>.
The <> operator, when reading from the magic ARGV handle, automatic-
ally opens the next file. Layers set by the lexical open pragma are
applied, if they are in scope at the point where <> is used.
This works almost all the time, because the common convention is:
use open ":utf8";
while(<>) {
...
}
IO::Handle’s getline and getlines methods are Perl subroutines
that call <> themselves. But that happens within the scope of
IO/Handle.pm, so the caller’s I/O layer settings are ignored. That
means that these two expressions are not equivalent within in a
‘use open’ scope:
<>
*ARGV->getline
The latter will open the next file with no layers applied.
This commit solves that by putting PL_check hooks in place in
IO::Handle before compiling the getline and getlines subroutines.
Those hooks cause every state op (nextstate, or dbstate under the
debugger) to have a custom pp function that saves the previous value
of PL_curcop, calls the default pp function, and then restores
PL_curcop.
That means that getline and getlines run with the caller’s compile-
time hints. Another way to see it is that getline and getlines’s own
lexical hints are never activated.
(A state op carries all the lexical pragmata. Every statement
has one. When any op executes, it’s ‘pp’ function is called.
pp_nextstate and pp_dbstate both set PL_curcop to the op itself. Any
code that checks hints looks at PL_curcop, which contains the current
run-time hints.)
Father Chrysostomos [Sat, 17 Sep 2011 18:51:16 +0000 (11:51 -0700)]
perldelta for h2ph conditional sub fix
Lukas Mai [Sat, 17 Sep 2011 16:31:00 +0000 (18:31 +0200)]
don't redefine macrosubs in .ph
h2ph generates code of the form
unless(defined(&FOO)) {
sub FOO () {42;}
}
for a C macro like '#define FOO 42'.
The problem with that: 'sub' happens at compile time, 'unless' at runtime.
So the sub is unconditionally defined first, then the unless runs with
an empty body. This behavior was introduced in commit
3d271ce79d39df56470393916b3d33ff26db2c8b (the syntax errors there were
fixed in commit
4a8e146e38ec2045f1f817a7cb578e1b1f80f39f).
There are already two code paths there, one for indentation level > 0
(eval), the other for toplevel definitions (straight sub). This patch
unifies them to always use 'eval' / runtime definitions. This change
shortens the code and makes the conditions actually work.
It moves the check for '#define FOO FOO' further up because I don't
see why it only needs to be done if indentation == 0. I changed the
comparison to use a whitespace-agnostic regex because
'" \&$name" eq $new' looks too brittle (the redundant \ doesn't help).
Karl Williamson [Sat, 17 Sep 2011 18:43:57 +0000 (12:43 -0600)]
perlobj: Fix pod problems
introduced by
7168b2511bddd4967be30033b32ce8b1b6500f6d
Karl Williamson [Sat, 17 Sep 2011 18:16:15 +0000 (12:16 -0600)]
perldata: Only one "_" is allowed between each digit pair
Karl Williamson [Mon, 5 Sep 2011 18:39:23 +0000 (12:39 -0600)]
podcheck.t: Don't use case-sensitive file exclusion
VMS by default doesn't preserve case in its file systems, and so
excluding a file based on case-sensitive matching will fail there.
Damian Conway [Sat, 17 Sep 2011 13:39:56 +0000 (08:39 -0500)]
Lots of revisions from Damian for perlobj
A lot of this is fixing the incorrect meme of "an object is a blessed
reference", but this change also corrects a number of typos, adds clarifying
bits of text, etc.
Damian Conway [Sat, 17 Sep 2011 13:29:47 +0000 (08:29 -0500)]
Tweaks to perlootut by Damian
Mostly this consists of removing the incorrect meme that an object is a
blessed reference.
Craig A. Berry [Sat, 17 Sep 2011 12:15:15 +0000 (07:15 -0500)]
POSIX::access() doesn't do ENOTDIR on VMS.
Even though the underlying error is RMS$_DNF. Go figure.
Father Chrysostomos [Sat, 17 Sep 2011 07:27:14 +0000 (00:27 -0700)]
Fix recursion warning for ‘no warnings; goto &sub’
Commit
309aab3a made goto &foo make the lexical hints of the caller of
the sub containing the goto visible when foo is called. CORE subs
need this to function properly when ‘goneto’. But in that commit I
put the PL_curcop assignment before the recursion check, causing the
warning settings of the caller to be used, instead of those at the
goto. This commit moves the PL_curcop further down in pp_goto.
Father Chrysostomos [Sat, 17 Sep 2011 01:57:37 +0000 (18:57 -0700)]
Tests for goto &xsub and lexical hints
This new script tests that goto &xsub causes the sub to see the hints,
not of the subroutine it replaces, but of that subroutine’s caller.
Father Chrysostomos [Sat, 17 Sep 2011 01:54:57 +0000 (18:54 -0700)]
Make goto &CORE::sub use the right lexical scope
Since goto &foo is supposed to replace the current sub call, as though
foo had been called instead, logically foo should see the same lexical
hints that would have been seen if it had been called to begin with.
Regular Perl subs begin with nextstate ops, so they have their own
lexical scopes, but CORE:: subs see the caller’s PL_curcop. They lack
a nextstate precisely so that they run in the caller’s scope, just as
though a built-in function had been called.
For Perl subs (as opposed to XSUBs), goto-&sub was not reset-
ting PL_curcop to the caller’s value, but leaving as it was, so
goto &CORE::sub would cause the CORE sub to run with the lexical hints
of the subroutine in replaced, instead of that sub’s caller.
This was never a problem until CORE subs came along, as they look like
Perl subs to the internals (they have an op tree and are flagged as
such), but comprise a sequence of ops that can never result from com-
piling Perl source code.
The simple one-line fix is to set PL_curcop in pp_goto for Perl subs
as well as XSUBs. (For XSUBs it is implied by POPBLOCK.)
Father Chrysostomos [Fri, 16 Sep 2011 23:15:53 +0000 (16:15 -0700)]
Merge postinc and postdec
They were nearly identical.
Father Chrysostomos [Fri, 16 Sep 2011 23:10:57 +0000 (16:10 -0700)]
Merge preinc and postinc
They are almost identical. This gives the compiler less code
to digest.
Father Chrysostomos [Fri, 16 Sep 2011 22:48:46 +0000 (15:48 -0700)]
Make ++ and -- work on glob copies
These ops considered typeglobs read-only, even if they weren’t.
Father Chrysostomos [Fri, 16 Sep 2011 21:32:20 +0000 (14:32 -0700)]
[perl #93638] $ENV{LS_COLORS} causes miniperl glob failure
On some systems, csh croaks if the LS_COLORS envvar contains something
it considers invalid.
The easiest and least intrusive fix for now is to localize %ENV before
running csh, though eventually it might be nice to use File::Glob in
miniperl, either by linking it statically or by inlining it.
Zefram [Fri, 16 Sep 2011 21:39:07 +0000 (22:39 +0100)]
update B::Concise test for B::Deparse change
Chris 'BinGOs' Williams [Fri, 16 Sep 2011 20:18:45 +0000 (21:18 +0100)]
Update CPAN-Meta to CPAN version 2.112580
[DELTA]
2.112580 2011-09-15 10:53:59 America/New_York
[BUGFIX]
- Use UTF-8 mode for internal structure cloning to avoid bugs
in Perl <= 5.8.6 (RT #70936) [Dagfinn Ilmari Mannsåker]
Chris 'BinGOs' Williams [Fri, 16 Sep 2011 20:02:58 +0000 (21:02 +0100)]
Update CPANPLUS to CPAN version 0.9111
[DELTA]
Changes for 0.9111 Fri Sep 16 10:15:06 2011
================================================
* Enhance CPANPLUS::Dist::MM Makefile/Makefile.PL
age checking code to resolve some issues.
Craig A. Berry [Fri, 16 Sep 2011 20:07:42 +0000 (15:07 -0500)]
skip_all is a sub in t/test.pl.
plan(skip_all => 'foo') is a Test::More-ism that survived the
switch to t/test.pl in
8d646433865d105d3ca0f95dd6593fe343e37aa2
unchanged and caused the test to fail where d_shm is not defined
or IPC::SysV is not built.
Zefram [Fri, 16 Sep 2011 19:44:51 +0000 (20:44 +0100)]
make B::Deparse handle $[ for older perls
Nicholas Clark [Fri, 16 Sep 2011 17:45:29 +0000 (19:45 +0200)]
NetWare has stdbool.h, so add it as 'define' to config.wc
[
bd31be4baa3ee68a failed to add *any* value for i_stdbool to config.wc]
Craig A. Berry [Fri, 16 Sep 2011 17:08:19 +0000 (12:08 -0500)]
Assorted File::Glob test fix-ups following
528bd3ce85.
- Avoid list assignment to %ENV, which fails at compile time on VMS.
- Use consistent indentation for readability.
- Mark bsd_glob('~') tests TODO on VMS. The HOME path is successfully
retrieved, but it normally contains square brackets, which confuse
glob, because it thinks the directory portion of the path contained
within brackets is a pattern. The path probably needs to be
converted to Unix syntax first.
Father Chrysostomos [Fri, 16 Sep 2011 16:25:10 +0000 (09:25 -0700)]
Disallow weakening of read-only references
$ perl -MScalar::Util=weaken -le 'DESTROY{return if$_++;weaken$_[0]}$x=bless[]'
DESTROY created new reference to dead object 'main' during global destruction.
It says that because the reference count has gone down to -1 (or the
max unsigned value, whichever it is), and the error occurs when
SvREFCNT is true. So there is no new reference to the dead object;
it’s just the refcount that’s off.
This case is worse:
$ perl -MScalar::Util=weaken -le 'DESTROY{weaken$_[0];$x=$_[0]}bless[];'
Segmentation fault
$_[0]’s reference count is normally lowered manually by sv_clear, to
avoid a recursive call to sv_clear (as lowering the reference count
normally triggers that). If the variable has been weakened, then
$_[0] no longer holds a reference count. sv_clear proceeds to destroy
at, as its reference count is 1 (held by $x), causing $x to point to a
freed scalar. Not good.
Since $_[0] is read-only anyway, it should not be weakenable.
Father Chrysostomos [Fri, 16 Sep 2011 16:21:05 +0000 (09:21 -0700)]
perldelta update
Dave Rolsky [Fri, 16 Sep 2011 14:07:52 +0000 (09:07 -0500)]
Revert "Put Jesse's "How a Bill Becomes a Law" into perlhack (with editing)"
This reverts commit
6a945912f2861921b440402072b7053a1dc414a5.
Father Chrysostomos [Fri, 16 Sep 2011 13:17:28 +0000 (06:17 -0700)]
Partial perldelta update
Craig A. Berry [Fri, 16 Sep 2011 12:38:40 +0000 (07:38 -0500)]
i_stdbool for configure.com.
The comments in the header itself say that it needs DEC C 6.4 or
later.
H.Merijn Brand [Fri, 16 Sep 2011 11:21:07 +0000 (13:21 +0200)]
Regenerate. Sorry for the massive re-order
Nicholas Clark [Wed, 14 Sep 2011 12:03:31 +0000 (14:03 +0200)]
Probe for <stdbool.h>, and if found use it in handy.h
This means that the core uses the compiler's bool type if one exists.
This avoids potential problems of clashes between perl's own implementation
of bool and the compiler's bool type, which otherwise occur when one
attempts to include headers which in turn include <stdbool.h>.
Signed-off-by: H.Merijn Brand <h.m.brand@xs4all.nl>
Father Chrysostomos [Fri, 16 Sep 2011 05:45:37 +0000 (22:45 -0700)]
Dear perlvar: ${\ fPEN} was introduced in 5.8.0.
Father Chrysostomos [Fri, 16 Sep 2011 03:22:28 +0000 (20:22 -0700)]
[perl #92728] open.pm without :std should leave std alone
‘use open’ without :std was turning off layers on STDIN and STDOUT
(but not STDERR), due to a few missing if() conditions and due to an
omission of STDERR (which probably also caused STDERR’s handles to
accumulate through multiple calls to ‘use open ':std'...’).
This fixes that. (As if you were expecting otherwise.)
Father Chrysostomos [Fri, 16 Sep 2011 02:58:43 +0000 (19:58 -0700)]
Make open.t use test.pl
so future commits can use runperl.
Dave Rolsky [Fri, 16 Sep 2011 04:26:54 +0000 (23:26 -0500)]
Add a mention of #p5p to perlhack
Dave Rolsky [Fri, 16 Sep 2011 04:26:45 +0000 (23:26 -0500)]
Put Jesse's "How a Bill Becomes a Law" into perlhack (with editing)
Dave Rolsky [Fri, 16 Sep 2011 04:06:43 +0000 (23:06 -0500)]
Wording tweak to clarify that perlbug submits the patch for you via email
Dave Rolsky [Fri, 16 Sep 2011 04:06:23 +0000 (23:06 -0500)]
Run podtidy on perlhack.pod
Father Chrysostomos [Fri, 16 Sep 2011 01:08:17 +0000 (18:08 -0700)]
Make tie_fetch_count.t skip -[guk] globref tests
When trying to fix this before (
4a021280) I assumed that these func-
tions would die on primitive platforms, without even looking at the
code to make sure.
They don’t die, but return false.
Since Config does not list them, we just have to skip the -k \$tied
tests on all platforms.
Since they share the same code as a whole list of other filetest ops,
I think this code is still tested well enough.
Father Chrysostomos [Fri, 16 Sep 2011 00:56:30 +0000 (17:56 -0700)]
[perl #99142] Make GV_ADDMG and magic vars account for s(t)ubs
When I eliminated is_gv_magical_sv (commit
23496c6ea), I did not take
into account that existing symbol table elements might not be GVs.
The special handling that GV_ADDMG does (to avoid creating a GV at all
unless a magical variable is created) simply does not apply if there
is a stash element there already, so this commit disables it.
The special handling involves creating a GV without assigning it to
the symbol table until the end of the function, where it gets freed if
it turns out not to contain a magical variable. If the GV it is deal-
ing with is actually a non-GV that was residing in a stash element,
then we end up freeing something still in use.
When I made defined(&{"name"}) vivify CORE:: subs (commit
9da346da9),
this bug was extended to defined(&{"name"}), causing the
HTTP::MobileAttribute failure reported in the RT ticket (which was
actually triggered directly by code in Class::Inspector, but which
required HTTP::MobileAttribute’s test suite to make it apparent).
Zefram [Thu, 15 Sep 2011 21:35:20 +0000 (22:35 +0100)]
document convention for keys in %^H
Dave Rolsky [Thu, 15 Sep 2011 14:03:09 +0000 (09:03 -0500)]
Fix some bugs in the example code for perlootut
Moritz Lenz [Thu, 15 Sep 2011 12:26:52 +0000 (14:26 +0200)]
remove outdated information from perlport
Nicholas Clark [Wed, 14 Sep 2011 13:21:28 +0000 (15:21 +0200)]
Don't #include headers already included by perl.h
097ee67dff1c60f2 didn't need to include <locale.h> in locale.c (then
util.c) because it had been included by perl.h since 5.002 beta 1
3f270f98f9305540 missed removing the include of <unistd.h> from perl.c
or perlio.c
de8ca8af19546d49 changed perl.h to also include <sys/wait.h>, but didn't
notice that it code therefore be removed from perl.c, pp_sys.c and util.c
George Greer [Thu, 15 Sep 2011 03:46:44 +0000 (23:46 -0400)]
Use test.pl miniperl check rather than by-hand in t/io/shm.t
Doing the miniperl check by hand didn't exit() so the test script would die
as soon as it got down to the "use IPC::SysV" line.
George Greer [Thu, 15 Sep 2011 03:45:54 +0000 (23:45 -0400)]
Tests in "t/io" aren't supposed to use Test::More yet, so use test.pl instead.
Father Chrysostomos [Thu, 15 Sep 2011 01:07:02 +0000 (18:07 -0700)]
shm.t: Skip under miniperl
Father Chrysostomos [Wed, 14 Sep 2011 23:12:59 +0000 (16:12 -0700)]
shm.t: Don’t call shmctl in END when undefined
The skip was not inside a BEGIN block, so the END block ended up
getting compiled and running.
Abigail [Wed, 14 Sep 2011 23:38:41 +0000 (01:38 +0200)]
Be more precise in the wording of how // works.
See the discussion starting with mail:9879.
1315954489@chthon
This rephrasing should avoid people getting the impression // is a
source filter, translating 'A // B' into 'defined(A) ? A : B', and
reparsing the result.
Father Chrysostomos [Wed, 14 Sep 2011 20:43:45 +0000 (13:43 -0700)]
[perl #92436] Make Filter::Simple match variables better
(This is the second bug reported in ticket #92436.)
Filter::Simple was using Text::Balanced’s extract_variable, which
...extracts any valid Perl variable or variable-
involved expression, including scalars, arrays, hashes, array
accesses, hash look-ups, method calls through objects, subrou-
tine calls through subroutine references, etc.
So it extracts things like $x->foo("blah lbah blah"). That means
that, when the user of Filter::Simple asks for everything except
strings, "blah lbah blah" is passed through anyway, because
Filter::Simple things it’s part of a variable name. That obviously
doesn’t work.
This commit makes Filter::Simple use a regular expression for varia-
bles, as it does for other things. It’s certainly not foolproof, but
Filter::Simple in general is not foolproof, and this regular expres-
sion is actually less foolproof than most parts of Filter::Simple. So
it’s a step in the right direction (unless you consider deletion to be
the right direction).
Father Chrysostomos [Wed, 14 Sep 2011 20:08:44 +0000 (13:08 -0700)]
Dear CoreList: Please note that 5.12.3 included VMS::Filespec.
Leon Timmermans [Tue, 13 Sep 2011 18:13:22 +0000 (20:13 +0200)]
Fix #98480 math when reading shared memory
shmread didn't unset SvIOK properly, causing a read into a SVIV to have
an incorrect numeric value. This patch fixes that and adds tests.
Leon Timmermans [Tue, 13 Sep 2011 16:34:28 +0000 (18:34 +0200)]
Added SysV shared memory tests
Tests are based on IPC-SysV's tests, though I had to remove a lot for it
not to rely on IPC::SharedMem.
Father Chrysostomos [Wed, 14 Sep 2011 16:32:53 +0000 (09:32 -0700)]
Dear CoreList: FYI, Errno was included in 5.6.0 and .1.
Father Chrysostomos [Wed, 14 Sep 2011 13:20:37 +0000 (06:20 -0700)]
Dear CoreList: 5.8.2 *did* include DB_File.
Father Chrysostomos [Tue, 13 Sep 2011 21:44:11 +0000 (14:44 -0700)]
Missing word in release managers’ guide
Dave Rolsky [Wed, 14 Sep 2011 15:39:21 +0000 (10:39 -0500)]
Mention that a method can be thought of as a verb for an object
Dave Rolsky [Wed, 14 Sep 2011 14:24:37 +0000 (09:24 -0500)]
Mention mutator as synonym for setter
Nicholas Clark [Wed, 14 Sep 2011 10:55:11 +0000 (12:55 +0200)]
Merge Storable improvements (XS tidying, test failures on older perls).
Nicholas Clark [Wed, 14 Sep 2011 10:53:18 +0000 (12:53 +0200)]
Note Storable changes in perldelta.
Nicholas Clark [Tue, 13 Sep 2011 15:37:10 +0000 (17:37 +0200)]
Simplify Storable.xs by providing a fallback definition of HvTOTALKEYS().
Longer term this should be added to ppport.h
Nicholas Clark [Sat, 10 Sep 2011 19:18:00 +0000 (21:18 +0200)]
Change Storable's code.t to serialise a subroutine under our control.
The test originally testing serialising and deserialising \&Test::ok. When
the test was converted from Test.pm to Test::More in 2009, it was changed to
use \&Test::More::ok. However, this turns out to be "works on my machine".
Test::More::ok from Test::Simple 0.61 onwards (2005,
b1ddf16980125497) will
deserialise correctly. The previous implementation of Test::More::ok uses a
lexical from an outer scope. Hence the textual representation of the
subroutine (in isolation) fails to deserialise, because it's not valid under
strict, because there is no visible declaration of the lexical.
Hence switch to testing a large subroutine under our control, _store(), to
avoid unpleasant surprises from dependencies we were not even aware of.
The comment "large scalar" dates from the original test using \&Test::ok.
It's not clear which large scalar it refers to.
Nicholas Clark [Sat, 10 Sep 2011 16:15:03 +0000 (18:15 +0200)]
Remove from Storable.xs all compatibility code that duplicates ppport.h
The rest should probably be migrated to Devel::PPPort.
Nicholas Clark [Sat, 10 Sep 2011 15:14:31 +0000 (17:14 +0200)]
Restore 5.004 and 5.005 support in Storable.
Add XSLoader as a prerequisite.
Use parentheses for the call to XSLoader::load().
Don't pass parameters that old ExtUtil::MakeMaker doesn't understand.
Avoid the T_BOOL typemap, as xsubpp will always mortalise the SV generated
by processing RETVAL, T_BOOL generates the SV using boolSV() which returns
PL_sv_yes or PL_sv_no, and on 5.004 Perl_sv_2mortal() will croak if passed
a readonly scalar. This is actually a small optimisation on later perls, as
the call to Perl_sv_2mortal() isn't actually needed.
Avoid repeating the PPCODE by merging last_op_in_netorder() with
is_storing() and is_retrieving(). (Which I didn't spot was easy to do
when commit
7cb18e1b020cd2e5 merged is_storing() and is_retrieving().)
Together these reduce the size of the shared object by about 200 bytes on
this platform. Small, but in the right direction.
Nicholas Clark [Sat, 10 Sep 2011 11:43:57 +0000 (13:43 +0200)]
Remove Symbian compatibility macros from Storable, now supplied by ppport.h
ppport.h provides default definitions for PERL_UNUSED_DECL, dNOOP and dVAR,
so no need to duplicate this in Storable.xs
Nicholas Clark [Tue, 13 Sep 2011 19:58:56 +0000 (21:58 +0200)]
Simplify S_set_caret_X() by returning early if we set caret_x.
This avoids duplicating the fallback code to set caret_x to PL_origargv[0].
Nicholas Clark [Tue, 13 Sep 2011 19:31:34 +0000 (21:31 +0200)]
Inline S_procself_val() into S_set_caret_x().
Possibly this should have been done as part of commit
3aa90d208c3bbfc1,
which broke S_set_caret_X() out from S_init_postdump_symbols().
[S_procself_val() was not inlined into S_init_postdump_symbols() because
Nick Ing-Simmons thought it unwise to hold on to MAXPATHLEN bytes of stack
longer than necessary.]
Nicholas Clark [Tue, 13 Sep 2011 19:07:06 +0000 (21:07 +0200)]
In S_set_caret_X(), use GvSV() consistently in all conditional code.
Commit
c69033f2a6291605 was inconsistent, in that it changed two instances
of GvSV() to GvSVn(), but not the third. The expansion of GvSV() is simpler,
and is appropriate here. Hoist the call to GvSV() out of the conditional
code.
Nicholas Clark [Tue, 13 Sep 2011 15:27:00 +0000 (17:27 +0200)]
Bump $Module::CoreList::VERSION after
77cc041da6484066.
Chris 'BinGOs' Williams [Tue, 13 Sep 2011 13:08:09 +0000 (14:08 +0100)]
Corrected the version of Module::CoreList shipped with v5.10.0
Nicholas Clark [Tue, 13 Sep 2011 10:10:18 +0000 (12:10 +0200)]
Merge POSIX improvements (refactoring, tests, bugfix for Solaris)
Nicholas Clark [Mon, 12 Sep 2011 12:11:05 +0000 (14:11 +0200)]
Change POSIX::Termios::setattr() to default to TCASNOW, not 0.
0 isn't valid on all operating systems. TCASNOW has the value 0 on most
operating systems, but on Solaris (at least) TCASNOW, TCSADRAIN and
TCSAFLUSH have the same values as the equivalent ioctls, TCSETS, TCSETSW and
TCSETSF. Solaris faults 0, setting errno to EINVAL. This isn't useful as a
default behaviour.
Nicholas Clark [Sat, 10 Sep 2011 11:28:19 +0000 (13:28 +0200)]
Remove unneeded fallback definitions of dNOOP, dVAR etc from POSIX.xs
As POSIX.xs is not dual life, we can always rely on these macros being
defined for us in perl.h. (And these days, dual life XS code should let
Devel::PPPort take care of this sort of thing.)
Nicholas Clark [Sat, 10 Sep 2011 10:20:08 +0000 (12:20 +0200)]
Update perldelta to note that POSIX.so is now 12% smaller.
Also record that there are more tests.
Nicholas Clark [Fri, 9 Sep 2011 21:55:25 +0000 (23:55 +0200)]
Merge the implementations of POSIX::{asctime,mktime} using ALIAS.
This shares identical code marshaling 6 to 9 input arguments into a
struct tm. However, as the return types differ we have to explicitly code
pushing the return value onto perl's stack.
Nicholas Clark [Fri, 9 Sep 2011 21:25:08 +0000 (23:25 +0200)]
Merge the implementations of POSIX::{access,mkfifo} using ALIAS.
Nicholas Clark [Fri, 9 Sep 2011 21:14:22 +0000 (23:14 +0200)]
Merge the implementations of POSIX::{close,dup,tcdrain} using ALIAS.
On this platform, this reduces the shared object size by about .5K.
Nicholas Clark [Fri, 9 Sep 2011 20:36:33 +0000 (22:36 +0200)]
Add tests for POSIX::{access,close,dup,dup2}.
Nicholas Clark [Fri, 9 Sep 2011 16:59:00 +0000 (18:59 +0200)]
In ext/POSIX/t/sysconf.t, make the tests more strict.
$! should always be 0 after each call, so test this whether the result is
defined or undefined. Match a defined result against a regex to ensure that
it is an integer, and give better diagnostics if it is not.
Nicholas Clark [Fri, 9 Sep 2011 16:36:15 +0000 (18:36 +0200)]
In ext/POSIX/t/sysconf.t, refactor the API of _check_and_report().
The new API removes a lot of code repetition in the callers.
Nicholas Clark [Fri, 9 Sep 2011 16:10:19 +0000 (18:10 +0200)]
In various POSIX tests, make better use of Test::More.
Avoid using ok() when alternatives are available, as ok() can't give useful
diagnostics on failure.
Nicholas Clark [Fri, 9 Sep 2011 12:57:19 +0000 (14:57 +0200)]
Merge the implementations of 11 is*() functions in POSIX using XSANY.
is{alnum,alpha,cntrl,digit,graph,lower,print,punct,space,upper,xdigit}
have identical structures, so replace them with one body to marshal
arguments between Perl and C, calling the C library is*() function via
a function pointer stored in the CV's XSANY.
Nicholas Clark [Fri, 9 Sep 2011 10:39:13 +0000 (12:39 +0200)]
Merge the implementations of 10 maths functions in POSIX using ALIAS.
10 functions take a single NV argument and return an NV result. Merging them
reduces the shared object size by over 2K on this platform. (Argument
marshalling code in XS is not free.)
Nicholas Clark [Thu, 8 Sep 2011 14:08:16 +0000 (16:08 +0200)]
Further tests for POSIX trigonometric and hyperbolic functions.
Nicholas Clark [Thu, 8 Sep 2011 13:28:04 +0000 (15:28 +0200)]
Change POSIX::localeconv() to a table-driven implementation.
This removes a lot of copy-paste code.
[with a tweak by Ilmari that removed residual duplication]
Nicholas Clark [Thu, 8 Sep 2011 12:37:09 +0000 (14:37 +0200)]
Add tests for POSIX::localeconv().