This is a live mirror of the Perl 5 development currently hosted at
9 years agoMerge the branch that purged various under-used Makefile targets.
Nicholas Clark [Mon, 1 Jul 2013 09:40:12 +0000 (11:40 +0200)]
Merge the branch that purged various under-used Makefile targets.

9 years agoDocument the removed Makefile targets in perldelta.
Nicholas Clark [Mon, 1 Jul 2013 09:39:39 +0000 (11:39 +0200)]
Document the removed Makefile targets in perldelta.

9 years agoIn perlhacktips, suggest a shell loop to generate all .gcov files.
Nicholas Clark [Thu, 20 Jun 2013 14:46:05 +0000 (16:46 +0200)]
In perlhacktips, suggest a shell loop to generate all .gcov files.

9 years agoEliminate the perl.gprof and perl.gcov Makefile targets.
Nicholas Clark [Thu, 20 Jun 2013 11:52:15 +0000 (13:52 +0200)]
Eliminate the perl.gprof and perl.gcov Makefile targets.

I don't feel that it's worthwhile having specific named targets for
building named binaries for use with gprof and gcov given that one has to
(re)Configure with the appropriate C compiler flags, hence all the object
files and the F<perl> that the build tree would build are just as enabled
(or contaminated) with profiling code as the specially named binary.

Update the documentation on using gprof and gcov to reflect that the binary
named F<perl> is now the binary that is profiled.

9 years agoRun Porting/podtidy on pod/perlhacktips.pod
Nicholas Clark [Thu, 20 Jun 2013 09:00:34 +0000 (11:00 +0200)]
Run Porting/podtidy on pod/perlhacktips.pod

9 years agoUpdate perlhacktips to note that Address Sanitizer is now also in gcc 4.8
Nicholas Clark [Thu, 20 Jun 2013 08:51:17 +0000 (10:51 +0200)]
Update perlhacktips to note that Address Sanitizer is now also in gcc 4.8

Also s/linux/Linux/ in two places.

9 years agoIn perlhacktips, no need to give 3 ways to set an environment variable.
Nicholas Clark [Thu, 20 Jun 2013 08:15:31 +0000 (10:15 +0200)]
In perlhacktips, no need to give 3 ways to set an environment variable.

9 years agoRemove the explicit purify/quantify/purecov targets and documentation.
Nicholas Clark [Thu, 20 Jun 2013 08:01:20 +0000 (10:01 +0200)]
Remove the explicit purify/quantify/purecov targets and documentation.

It's not clear whether IBM still sell quantify or purecov. They still seem
to sell purify, but I'm not sure if anyone is using it these days to detect
bugs in perl.

This doesn't prevent anyone from using these tools if they have them, as
it's still possible to run the commands by "hand". But by removing probably
unused code and documentation, the signal to noise ratio improves.

9 years agoWe don't actually need to set $ENV{PERL} for the tests to work.
Nicholas Clark [Wed, 19 Jun 2013 19:39:39 +0000 (21:39 +0200)]
We don't actually need to set $ENV{PERL} for the tests to work.

Whatever the executable is named at the top level, it's always symlinked
as ./perl in t, so there's no need to set an environment variable to
override the expected name.

9 years agovalgrind doesn't require that perl was built with -g, so remove the check.
Nicholas Clark [Wed, 19 Jun 2013 19:13:45 +0000 (21:13 +0200)]
valgrind doesn't require that perl was built with -g, so remove the check.

C<make test.valgrind> will run quite happily on a perl built with
optimisation and without debugging symbols. So don't enforce -g.

9 years agoInline the Makefile target minitest.prep into its only user.
Nicholas Clark [Wed, 19 Jun 2013 12:09:55 +0000 (14:09 +0200)]
Inline the Makefile target minitest.prep into its only user.

This is strictly a refactoring, so do not change the rules themselves, despite
them being ugly and fragile.

9 years agoRemove Makefile targets and tools related to Irix and Tru64 debugging tools.
Nicholas Clark [Wed, 19 Jun 2013 11:37:25 +0000 (13:37 +0200)]
Remove Makefile targets and tools related to Irix and Tru64 debugging tools.

Remove the targets:

perl.pixie perl.pixie.atom perl.pixie.config perl.pixie.irix perl.third

It's still possible to run the actions these targets "by hand", if desired.
This commit removes the convenience targets from the Makefile, reducing its
complexity. It also removes the related support scripts testall.atom and
thirdclean from Porting/

pixie is a performance analysis tool for Irix and Tru64
Third Degree is a memory checker tool for Tru64

Given that Tru64 went out of support at the end of 2012, and Irix goes out
of support at the end of 2013, it's very unlikely that anyone is still
actively profiling or debugging perl on either platform, and hence using
these targets. It's been several years since we've even had a regular bug
report from either platform.

9 years agoRemove various rarely used test targets from the generated Makefile.
Nicholas Clark [Wed, 19 Jun 2013 10:35:33 +0000 (12:35 +0200)]
Remove various rarely used test targets from the generated Makefile.

Remove these targets and their documentation:

check.third check.utf16 check.utf8 coretest minitest.utf16 test.deparse
test.taintwarn test.third test.torture test.utf16 test.utf8
test_notty.deparse test_notty.third test_prep.third torturetest ucheck
ucheck.third ucheck.utf16 ucheck.valgrind utest utest.third utest.utf16

It's still possible to run the actions these targets "by hand", if desired.
This commit simply removes the convenience targets from the Makefile,
reducing its complexity.

9 years ago[perl #71680] hints to use gdbm compat for [NO]DBM_File on Win32
Tony Cook [Mon, 24 Jun 2013 06:27:42 +0000 (16:27 +1000)]
[perl #71680] hints to use gdbm compat for [NO]DBM_File on Win32

9 years agoSmall stylistic improvement; add one POD formatting character.
James E Keenan [Sat, 26 Jan 2013 15:05:29 +0000 (10:05 -0500)]
Small stylistic improvement; add one POD formatting character.

9 years agoGive little more examples to interpolated typemap variables
Hojung Youn [Fri, 25 Jan 2013 09:52:53 +0000 (18:52 +0900)]
Give little more examples to interpolated typemap variables

Added an example for $type Perl variable interpolated by typemap.
and adjusted an example of $ntype Perl variable of typemap to
illustrate its effect.

9 years agoMake t/comp/parser.t get the correct libraries.
Craig A. Berry [Mon, 1 Jul 2013 02:09:21 +0000 (21:09 -0500)]
Make t/comp/parser.t get the correct libraries.

In principle it shouldn't need libraries, but an eval of a utf8
constant now triggers automatic loading of, and it was
looking for that in the usual @INC locations set at configuration
time.  Which just might match an installed perl rather than the
perl being tested.  So make sure we get the correct libraries.

9 years agochange tied_method to use SVs with precomputed hash values
Ruslan Zakirov [Mon, 25 Feb 2013 09:46:02 +0000 (13:46 +0400)]
change tied_method to use SVs with precomputed hash values

9 years agochange magic_methcall to use SV with shared hash value
Ruslan Zakirov [Sun, 24 Feb 2013 12:05:51 +0000 (16:05 +0400)]
change magic_methcall to use SV with shared hash value

Perl_magic_methcall is not public API, so there is no
need to add another function and we can just change
function's arguments.

9 years agoSV_CONST(name) and PL_sv_consts
Ruslan Zakirov [Mon, 25 Mar 2013 01:31:35 +0000 (05:31 +0400)]
SV_CONST(name) and PL_sv_consts

SV_CONST(XXX) returns SV* that contains "XXX" string.
SVs are built on demand and stored in interp's structure
for re-use. All SVs have precomputed hash value.

Creates SVs on demand, we don't want 35 SV created during
compile time or cloned during thread creation.

9 years agoG_METHOD_NAMED flag for call_method and call_sv
Ruslan Zakirov [Sat, 29 Sep 2012 16:41:10 +0000 (20:41 +0400)]
G_METHOD_NAMED flag for call_method and call_sv

Can be used when it's known that method name has no
package part - just method name.

With flag set SV with precomputed hash value is used
and pp_method_named is called instead of pp_method.
Method lookup is faster.

9 years agoperldiag: Consistent spaces after dots
Father Chrysostomos [Sun, 30 Jun 2013 06:44:30 +0000 (23:44 -0700)]
perldiag: Consistent spaces after dots

9 years agoUpdate IPC-Cmd to CPAN version 0.82
Chris 'BinGOs' Williams [Sat, 29 Jun 2013 21:34:17 +0000 (22:34 +0100)]
Update IPC-Cmd to CPAN version 0.82


  Changes for 0.82    Sat Jun 29 22:11:22 BST 2013
  * Typo fixes (David Steinbrunner)

9 years agoop.c: Suppress compiler warning
Father Chrysostomos [Sat, 29 Jun 2013 01:31:26 +0000 (18:31 -0700)]
op.c: Suppress compiler warning

Sorry, commit 08aff5359 was not quite ready and I pushed it too soon.

The purpose of the if block that it removed was to suppress a warn-
ing about an unused variable, but it was a very strange way of accom-
plishing that.

We have a much simpler way that takes only one line and expresses its
intent clearly.

9 years agoregenerate t/porting/known_pod_issues.dat
Brian Gottreu [Fri, 28 Jun 2013 23:43:41 +0000 (18:43 -0500)]
regenerate t/porting/known_pod_issues.dat

9 years agoRun the pedantic checks when regenerating the database
Brian Gottreu [Fri, 28 Jun 2013 23:07:49 +0000 (18:07 -0500)]
Run the pedantic checks when regenerating the database

Make the two checks of possible poor uses of C<>
pedantic checks.

Allow --pedantic to turn on those tests in addition to
the environmnt variable.

9 years agodo not worry about long verbatim lines w/o env var
Ricardo Signes [Tue, 18 Jun 2013 23:45:56 +0000 (19:45 -0400)]
do not worry about long verbatim lines w/o env var

To run these tests, set PERL_POD_PEDANTIC in the environment.

This needs further testing, at least, to ensure that it behaves correctly
when regenerating the known problem files.

9 years agoRevert "Make t/podcheck.t less sensitive"
Ricardo Signes [Tue, 18 Jun 2013 23:27:11 +0000 (19:27 -0400)]
Revert "Make t/podcheck.t less sensitive"

This reverts commit f26da014a698383ac348973050af3e754752e6ab.


9 years agoop.c: Remove dummy code from const_sv_xsub
Father Chrysostomos [Fri, 28 Jun 2013 21:24:59 +0000 (14:24 -0700)]
op.c: Remove dummy code from const_sv_xsub

This was added in commit 9cbac4c7 with no explanation.  It has been
#ifdeffed out since it was added.  That commit was supposedly just for
compiler warnings.  I think this was something else the author was
playing with that got combined in the same patch by mistake.

9 years agoperlfunc: consistent spaces after dots
Father Chrysostomos [Fri, 28 Jun 2013 19:45:41 +0000 (12:45 -0700)]
perlfunc: consistent spaces after dots

plus one typo fix

9 years agoClarify variable lists for my, our, state.
Johan Vromans [Mon, 24 Jun 2013 07:23:49 +0000 (09:23 +0200)]
Clarify variable lists for my, our, state.

9 years ago7b2d3c0 Added description of the Benchmark object to doc
Neil Bowers [Wed, 26 Jun 2013 21:53:55 +0000 (22:53 +0100)]
7b2d3c0 Added description of the Benchmark object to doc

9 years agoop.c:cv_ckproto_len_flags: do null checks first
Father Chrysostomos [Fri, 28 Jun 2013 07:09:02 +0000 (00:09 -0700)]
op.c:cv_ckproto_len_flags: do null checks first

Checking local variables for nullness is faster than calling ckWARN_d,
which involves a function call.

9 years agoReinstate UTF8f
Father Chrysostomos [Wed, 26 Jun 2013 03:31:54 +0000 (20:31 -0700)]
Reinstate UTF8f

This format string allows char*s to be interpolated with the
utf8ness and length specified as well, avoiding the need to create
extra SVs:

Perl_croak(aTHX_ "Couldn't twiggle the twoggle in \"%"UTF8f"\"",
                  UTF8fARG(is_utf8, len, s));

This is the second attempt.

I screwed up in commits 1c8b67b38f0a5 and b3e714770ee1 because
I didn’t really understand how varargs functions receive their

They are like structs, in that different members can be different
sizes.  So therefore both ends--the caller and the called--*must* get
the casts right, or the data will be corrupted.

The main mistake I made was to use %u in the format for the first
argument and then retrieve it as UV (a simple typo, I meant unsigned
int or U32--I don’t remember).

To be on the safe side, I added a UTF8fARG macro (after SVfARG), which
(unlike SVfARG) takes three arguments and casts them explicitly, mak-
ing it much harder to get this wrong at call sites.

9 years agomake sure the prototype actually matches
Tony Cook [Fri, 28 Jun 2013 01:55:27 +0000 (11:55 +1000)]
make sure the prototype actually matches


a) I think it better demonstrates the fix, the following failed without
the patch:

./perl -Ilib -le 'my $proto = "\x{30cd}"; eval "sub f($proto) {}"; print prototype(\&f); print prototype(\&f) eq $proto'

b) I can envision bugs that might preserve UTF-8 but mis-manage the content

9 years agopad.c, S_cv_clone: Maintain the utf8-ness of the cloned cv
Brian Fraser [Sun, 24 Mar 2013 08:58:43 +0000 (05:58 -0300)]
pad.c, S_cv_clone: Maintain the utf8-ness of the cloned cv

Because of a missing SvUTF8_on() in cv_clone(), these two were different:

    use utf8;
    eval "   sub foo ($;\x{30cd});"
    eval "my sub foo ($;\x{30cd});"

Because the lexical version would lose the UTF8 flag in the

9 years agoperlexperiment: mark :pop layer as accepted
Ricardo Signes [Thu, 27 Jun 2013 02:12:34 +0000 (22:12 -0400)]
perlexperiment: mark :pop layer as accepted

9 years agoMANIFEST: add t/porting/readme.t
Brian Gottreu [Thu, 27 Jun 2013 03:11:17 +0000 (22:11 -0500)]
MANIFEST: add t/porting/readme.t

9 years agoFix Porting/README.pod so it passes its new test.
Brian Gottreu [Thu, 27 Jun 2013 00:44:34 +0000 (19:44 -0500)]
Fix Porting/README.pod so it passes its new test.

Added entries for sync-with-cpan and README.pod itself.  Rearranged
entries to be sorted consistently.

9 years agot/porting/readme.t: Check Porting/README.pod consistency
Brian Gottreu [Thu, 27 Jun 2013 00:39:25 +0000 (19:39 -0500)]
t/porting/readme.t: Check Porting/README.pod consistency

This is a slightly expanded (or bloated) version of the patch
Dennis Kaarsemaker <> submitted.

9 years agoCorrect the SYNOPSIS for Module::CoreList::Utils
Chris 'BinGOs' Williams [Thu, 27 Jun 2013 15:15:32 +0000 (16:15 +0100)]
Correct the SYNOPSIS for Module::CoreList::Utils

9 years agoUpdate HTTP-Tiny to CPAN version 0.034
Chris 'BinGOs' Williams [Thu, 27 Jun 2013 10:04:53 +0000 (11:04 +0100)]
Update HTTP-Tiny to CPAN version 0.034


0.034     2013-06-26 19:02:25 America/New_York


  - Added support for 'Basic' authorization from
    user:password parameters in the URL

9 years agocv_ckproto should disregard spaces
Peter Martini [Thu, 27 Jun 2013 04:06:16 +0000 (00:06 -0400)]
cv_ckproto should disregard spaces

This included some refactoring to break down the original
large if block into smaller, more manageable chunks,
although the only functional change was to pass the two
string buffers through S_strip_spaces.

9 years agot/re/reg_mesg.t: Add diagnostic output on some failures
Karl Williamson [Wed, 26 Jun 2013 23:51:36 +0000 (17:51 -0600)]
t/re/reg_mesg.t: Add diagnostic output on some failures

9 years ago[perl #117751] prevent POSIX::AUTOLOAD recursing if POSIX$(so) fails to load
Aristotle Pagaltzis [Thu, 27 Jun 2013 01:55:13 +0000 (11:55 +1000)]
[perl #117751] prevent POSIX::AUTOLOAD recursing if POSIX$(so) fails to load

9 years agoUse -Wno-unused-value also on other clang compilers
Reini Urban [Mon, 8 Apr 2013 17:25:27 +0000 (12:25 -0500)]
Use -Wno-unused-value also on other clang compilers

clang++ or clang-3.2, ...

9 years ago[perl #117535, #76910] Fix bogus ambiguity warnings
Father Chrysostomos [Thu, 27 Jun 2013 01:03:04 +0000 (18:03 -0700)]
[perl #117535, #76910] Fix bogus ambiguity warnings

‘Ambiguous use of * resolved as operator *’: This message can occur in
cases where there is no multiplication operator, so what it is saying
is completely wrong.

When the lexer parses a bareword, it looks at the previous character
and warns if it happens to match /[*%&]/, so foo**bar and foo&&bar
result in this warning, as does print $%foo.

The purpose of the code is to catch *bar *bar or &black &sheep.

To avoid false positives, when emitting one of the three operators
* % & the lexer can record that fact, so when it sees a bareword pre-
ceded by one of those three characters, instead of guessing that the
infix operator was used, it will *know*.

The test cases added also trigger ‘Bareword found where operator
expected’.  I don’t know whether that should change, but at least the
current behaviour is tested, so we will know when it does change.

9 years agoregen/ Add comment
Karl Williamson [Wed, 26 Jun 2013 21:52:01 +0000 (15:52 -0600)]
regen/ Add comment

9 years agoperlguts: Nit
Karl Williamson [Wed, 26 Jun 2013 21:50:37 +0000 (15:50 -0600)]
perlguts: Nit

9 years agoembed.fnc: S_ptr_hash is inline
Father Chrysostomos [Wed, 26 Jun 2013 13:05:06 +0000 (06:05 -0700)]
embed.fnc: S_ptr_hash is inline

S_ptr_hash is declared with PERL_STATIC_INLINE in hv.c, but embed
thinks it is just static, so the proto.h and hv.c definitions do not
match, resulting in warnings.

9 years agoUpdate Digest-SHA to CPAN version 5.85
Chris 'BinGOs' Williams [Wed, 26 Jun 2013 11:42:13 +0000 (12:42 +0100)]
Update Digest-SHA to CPAN version 5.85


5.85  Wed Jun 26 04:05:26 MST 2013
  - workaround for repeated calls to shaclose (ref. Bug #86295)
    -- need to explicitly reset internal pointer to NULL
      ref. shaclose() in SHA.xs
  - corrected typos in shasum script
    -- ref. Bug #85430

9 years agoPut all sort arguments in list context
Father Chrysostomos [Wed, 26 Jun 2013 07:38:52 +0000 (00:38 -0700)]
Put all sort arguments in list context

The arguments following the first were using the context the enclosing
function was called in.

sub context { warn qw[void scalar list][wantarray + defined wantarray ] }
sub foo { sort +context, context; print "------\n"; }
$_ = foo;


list at - line 1.
void at - line 1.
list at - line 1.
scalar at - line 1.
list at - line 1.
list at - line 1.

Extend the list context to all arguments.

9 years agoFix up f_sort.t for changes in the prev commit
Father Chrysostomos [Wed, 26 Jun 2013 08:08:29 +0000 (01:08 -0700)]
Fix up f_sort.t for changes in the prev commit

9 years agoPut sort arguments in lvalue context
Father Chrysostomos [Wed, 26 Jun 2013 07:32:58 +0000 (00:32 -0700)]
Put sort arguments in lvalue context

Since $a and $b are aliased to the actual scalars being sorted, and
since they can be modified, the list of items needs to be in lvalue
context, like the arguments to grep.  Otherwise implementation
details leak through, in that sort{$a=1} $_,... will modify $_, but
sort{$a=1} $#_,... will fail to modify $#_.

The way I have written the loop and if() condition (the if inside the
loop) may seem odd and inefficient, but the next commit will take
advantage of that.

9 years agoIn-place sort should not leave array read-only
Father Chrysostomos [Wed, 26 Jun 2013 07:18:03 +0000 (00:18 -0700)]
In-place sort should not leave array read-only

$ ./perl -Ilib -e '@a=1..2; eval { @a=sort{die} @a }; warn "ok so far\n"; @a = 1'
ok so far
Modification of a read-only value attempted at -e line 1.

If something goes wrong inside the sort block and it dies, we still
need to make sure we turn off the read-only flag on that array.

9 years agodocument that it is the operator that determines the operation
Moritz Lenz [Sun, 21 Apr 2013 14:11:06 +0000 (16:11 +0200)]
document that it is the operator that determines the operation

In many other dynamic languages it is the operator plus the type of the
first operand, so it is worth mentioning.

9 years agoIncrease $if::VERSION to 0.0603 if-0.0603
Father Chrysostomos [Wed, 26 Jun 2013 06:31:34 +0000 (23:31 -0700)]
Increase $if::VERSION to 0.0603

9 years agoAdded example usage and SEE ALSO links to similar modules in doc for
Neil Bowers [Mon, 24 Jun 2013 23:51:49 +0000 (00:51 +0100)]
Added example usage and SEE ALSO links to similar modules in doc for

9 years agoop.c:S_simplify_sort: remove redundant OPf_STACKED check
Father Chrysostomos [Wed, 26 Jun 2013 05:06:57 +0000 (22:06 -0700)]
op.c:S_simplify_sort: remove redundant OPf_STACKED check

S_simplify_sort is only called from one spot and only when the
OPf_STACKED flag is not set.

9 years agoop.c:ck_sort: Restore HINT_LOCALIZE_HH check
Father Chrysostomos [Wed, 26 Jun 2013 04:47:44 +0000 (21:47 -0700)]
op.c:ck_sort: Restore HINT_LOCALIZE_HH check

I remove this by mistake in commit 354dd559d99.  It makes no
difference to the behaviour.  This check is just for efficiency.

9 years agoRevert "Use UTF8f in more places"
Karl Williamson [Wed, 26 Jun 2013 00:42:45 +0000 (18:42 -0600)]
Revert "Use UTF8f in more places"

This reverts commit acc19697c67fa63c10e07491b670a26c48f4175f.

This and the other UTF8f patch are causing significant problems on some
configurations on 32-bit platforms.  We've decided to revert them until
they can be resubmitted after the kinks get ironed out.

9 years agoRevert "UTF8f"
Karl Williamson [Wed, 26 Jun 2013 00:40:42 +0000 (18:40 -0600)]
Revert "UTF8f"

This reverts commit 670610ebb17508101065cc5f5ecfe616aace5335.

This and the other UTF8f patch are causing significant problems on some
configurations on 32-bit platforms.  We've decided to revert them until
they can be resubmitted after the kinks get ironed out.

9 years agoAdd tests for a backreference following a literal, which is a different codepath
Yves Orton [Tue, 25 Jun 2013 22:59:09 +0000 (00:59 +0200)]
Add tests for a backreference following a literal, which is a different codepath

/\87/ is parsed through a different code path than /foo\87/ so we
test that they both work properly when there are sufficient capture
buffers defined. We test the fail cases in the re/re_tests corpus,
but the success cases are easier managed in re/pat.t.

9 years agoFix rules for parsing numeric escapes in regexes origin/yves/for_karl_backrefs
Yves Orton [Tue, 25 Jun 2013 19:01:27 +0000 (21:01 +0200)]
Fix rules for parsing numeric escapes in regexes

Commit 726ee55d introduced better handling of things like \87 in a
regex, but as an unfortunate side effect broke latex2html.

The rules for handling backslashes in regexen are a bit arcane.

Anything starting with \0 is octal.

The sequences \1 through \9 are always backrefs.

Any other sequence is interpreted as a decimal, and if there
are that many capture buffers defined in the pattern at that point
then the sequence is a backreference. If however it is larger
than the number of buffers the sequence is treated as an octal digit.

A consequence of this is that \118 could be a backreference to
the 118th capture buffer, or it could be the string "\11" . "8". In
other words depending on the context we might even use a different
number of digits for the escape!

This also left an awkward edge case, of multi digit sequences
starting with 8 or 9 like m/\87/ which would result in us parsing
as though we had seen /87/ (iow a null byte at the start) or worse
like /\x{00}87/ which is clearly wrong.

This patches fixes the cases where the capture buffers are defined,
and causes things like the \87 or \97 to throw the same error that
/\8/ would. One might argue we should complain about an illegal
octal sequence, but this seems more consistent with an error like
/\9/ and IMO will be less surprising in an error message.

This patch includes exhaustive tests of patterns of the form
/(a)\1/, /((a))\2/ etc, so that we dont break this again if we
change the logic more.

9 years agoDocument and clean up -s option to xsubpp
Steffen Mueller [Mon, 24 Jun 2013 05:59:30 +0000 (07:59 +0200)]
Document and clean up -s option to xsubpp

At the same time, discourage its use. It's an obscure option that, most
of the time, does the opposite of what people actually need. If nothing
else, it should be a feature of XS instead of xsubpp.

But it exists, so documenting it with a warning is the right thing to

9 years agoStop "sv_2mortal(&PL_sv_yes)" and "(void)sv_newmortal()" in ParseXS
Daniel Dragan [Sat, 25 May 2013 16:06:27 +0000 (18:06 +0200)]
Stop "sv_2mortal(&PL_sv_yes)" and "(void)sv_newmortal()" in ParseXS

This problem was brought up in #115796.  Both of those lines of code that
ParseXS put out when dealing with T_BOOL were unnecessary, and caused a
some inefficiencies (extra calls). Since typemaps can have complicated
evaluation and include Perl code, see commit    9712754a3e, it is best to
eval the typemap entry first, then regexp it to see what it looks like,
not regexp the unevaled entry possibly containing Perl. In case a typemap
entry is maintaining state inside ParseXS (venturing into the undocumented
and unsupported), (I've never seen it done) don't eval it twice if it can
be avoided. Someone might want to change the typemap entry to multiple
eval in the future, but don't introduce it now if it can be avoided.

Using T_BOOL by name to see an immortal is a bad idea, since any XS module
can reuse the typemap entry, so best to regexp for something that looks
like it would return an immortal, "= &PL_sv_* ;" or "= boolSV(". In the
future someone might want to introduce a macro that does nothing, except
gives a signal to ParseXS that an expression returns an immortal or an
already mortaled SV, to suppress the sv_2mortal call.

The tests in 001-basic.t might break in the future with changes to ParseXS
or the Perl API, but I assume they will be fixed at that point in time.

Note: This patch was amended by the committer to apply cleanly to a
newer version of ExtUtils::ParseXS and to include all necessary test

9 years agoEU::ParseXS: Test cleanup
Steffen Mueller [Wed, 22 May 2013 20:08:42 +0000 (22:08 +0200)]
EU::ParseXS: Test cleanup

Lots of dead code and some inflexibilities wrt. running tests from / or

9 years agoEU::ParseXS: Move several constants out of the runtime object
Steffen Mueller [Wed, 22 May 2013 20:07:59 +0000 (22:07 +0200)]
EU::ParseXS: Move several constants out of the runtime object

9 years agoEU::ParseXS: Cosmetics; more explicitness in *_handler
Steffen Mueller [Wed, 22 May 2013 20:07:10 +0000 (22:07 +0200)]
EU::ParseXS: Cosmetics; more explicitness in *_handler

Basically, using named lexical beats $_ by a long shot since they don't
magically propagate into functions called.

9 years agoEU::ParseXS: Use OO version of ExtUtils::ParseXS in test
Steffen Mueller [Wed, 22 May 2013 20:04:51 +0000 (22:04 +0200)]
EU::ParseXS: Use OO version of ExtUtils::ParseXS in test

Sort of. Breaking encapsulation, but that's better than not even having
a blessed object at all.

9 years agoEU::ParseXS: Simplify output typemap code generation (targetable)
Steffen Mueller [Wed, 22 May 2013 20:03:38 +0000 (22:03 +0200)]
EU::ParseXS: Simplify output typemap code generation (targetable)

9 years agoEU::ParseXS: Cosmetics; better variable naming
Steffen Mueller [Wed, 22 May 2013 20:00:48 +0000 (22:00 +0200)]
EU::ParseXS: Cosmetics; better variable naming

9 years agoEU::ParseXS: Fix targetable size detection
Steffen Mueller [Wed, 22 May 2013 19:57:59 +0000 (21:57 +0200)]
EU::ParseXS: Fix targetable size detection

Adds new / vastly improved tests for 'targetable'.
Also improves targetable documentation.

9 years agoEU::ParseXS: Drop dup'd code: make_targetable moves to EU::Typemaps
Steffen Mueller [Wed, 22 May 2013 19:53:44 +0000 (21:53 +0200)]
EU::ParseXS: Drop dup'd code: make_targetable moves to EU::Typemaps

The make_targetable function in ExtUtils::ParseXS::Utilities now lives
in ExtUtils::Typemaps::OutputMap as method 'targetable' since the code
was quite duplicated before. Makes very minor adjustments to

Removes the flawed make_targetable tests. Improved tests in lieu of the
old ones will be added asap.

9 years agoEU::ParseXS: Update changelog
Steffen Mueller [Wed, 22 May 2013 19:51:55 +0000 (21:51 +0200)]
EU::ParseXS: Update changelog

9 years agoEU::ParseXS: Attempt to canonicalize C++ types in tidy_type
Steffen Mueller [Wed, 22 May 2013 19:49:06 +0000 (21:49 +0200)]
EU::ParseXS: Attempt to canonicalize C++ types in tidy_type

Includes moving tidy_type to ExtUtils::Typemaps where it seems to
belong. It's a pretty poor canonicalizer, but better than nothing!

9 years agoEU::ParseXS: Update Changelog
Steffen Mueller [Mon, 15 Apr 2013 06:48:07 +0000 (08:48 +0200)]
EU::ParseXS: Update Changelog

9 years agoEU::Typemaps: Document special typemap variables
Steffen Mueller [Mon, 15 Apr 2013 06:47:23 +0000 (08:47 +0200)]
EU::Typemaps: Document special typemap variables

For better or for worse, these are likely to stay. Don't cry if they

9 years agoEU::ParseXS: Stop using global state; an OO interface
Steffen Mueller [Mon, 15 Apr 2013 06:31:53 +0000 (08:31 +0200)]
EU::ParseXS: Stop using global state; an OO interface

This stops ExtUtils::ParseXS from using global state (unless using the
functional interface which uses a singleton for compatibility). It also
makes the interface more or less properly OO.

Includes tests & docs; migrates xsubpp to use the OO interface.

9 years agoEU::ParseXS: Don't inherit from Exporter; import 'import' instead
Steffen Mueller [Mon, 15 Apr 2013 06:01:36 +0000 (08:01 +0200)]
EU::ParseXS: Don't inherit from Exporter; import 'import' instead

9 years agoEU::ParseXS: Only initialize some parser regexps once
Steffen Mueller [Mon, 15 Apr 2013 05:59:28 +0000 (07:59 +0200)]
EU::ParseXS: Only initialize some parser regexps once

9 years agoEU::Typemaps: Implement API for typemap cloning
Steffen Mueller [Mon, 15 Apr 2013 05:56:41 +0000 (07:56 +0200)]
EU::Typemaps: Implement API for typemap cloning

The docs used to suggest cloning, but never provided an API.

9 years agoExtUtils::ParseXS version bump to 3.21
Steffen Mueller [Mon, 15 Apr 2013 05:56:17 +0000 (07:56 +0200)]
ExtUtils::ParseXS version bump to 3.21

9 years ago[perl #75186] Remove obsolete references to vi support
Tony Cook [Tue, 25 Jun 2013 05:36:09 +0000 (15:36 +1000)]
[perl #75186] Remove obsolete references to vi support

9 years ago[perl #118561] failures loading modules are ignored when sub-package exists
Graham Knop [Mon, 24 Jun 2013 21:58:46 +0000 (17:58 -0400)]
[perl #118561] failures loading modules are ignored when sub-package exists

9 years agoRemove spaces from a (copy of) a proto when used. The logic that uses prototypes...
Peter Martini [Mon, 24 Jun 2013 21:58:46 +0000 (17:58 -0400)]
Remove spaces from a (copy of) a proto when used. The logic that uses prototypes assumes spaces were already gone, which may not be true if they were added via XS / set_prototype.

9 years agopodcheck.t: Re-enable --add_link
Karl Williamson [Mon, 24 Jun 2013 23:50:32 +0000 (17:50 -0600)]
podcheck.t: Re-enable --add_link

Commit 83ced756 broke the --add_link option to podcheck.t.  Now fixed

9 years agoUpdate B's size/offset for CvFLAGS to U32, following commit 51c78f1b91bbcd7a.
Nicholas Clark [Sat, 22 Jun 2013 21:25:26 +0000 (14:25 -0700)]
Update B's size/offset for CvFLAGS to U32, following commit 51c78f1b91bbcd7a.

B.xs contains a table of offsets and sizes for members of the various SV
structures. This needs updating as 51c78f1b91bbcd7a changed CvFLAGS from
U16 to U32. This ommision won't be noticed on little endian platforms, but on
big endian platforms B::CV::CvFLAGS will return 0 instead of the true value.

For: RT #118603

9 years agoUpdate autodie to CPAN version 2.20
Chris 'BinGOs' Williams [Mon, 24 Jun 2013 11:07:20 +0000 (12:07 +0100)]
Update autodie to CPAN version 2.20


  2.20      2013-06-23 16:08:41 PST8PDT

        Many improvements from Niels Thykier, hero of the
        free people.  From GH #25:

        * SPEED / INTERNAL: Less time is spent computing prototypes

        * SPEED / INTERNAL: Leak guards are more efficient.

        * SPEED : Expanding tags (eg: qw(:all)) is now faster.
          This also improves the speed of checking autodying
          code with Perl::Critic.

        * INTERNAL: Expanding of tags is faster and preserves order.

9 years ago[perl #113926] fix a hash randomization bug
Tony Cook [Mon, 24 Jun 2013 03:19:44 +0000 (13:19 +1000)]
[perl #113926] fix a hash randomization bug

Through sheer sloppiness I managed to avoid actually running the new
test, sorry for the noise.

it compared [ keys %hasha ] and [ keys %hashb ] resulting in failure.

9 years ago[perl #113926] add tests for Pod::Html::anchorify()
James E Keenan [Mon, 24 Jun 2013 01:48:03 +0000 (11:48 +1000)]
[perl #113926] add tests for Pod::Html::anchorify()

9 years agoperldelta for changes to perlexperiment
Ricardo Signes [Mon, 24 Jun 2013 01:56:58 +0000 (21:56 -0400)]
perldelta for changes to perlexperiment

9 years agoperlexperiment: mark lvalue subroutines accepted
Ricardo Signes [Mon, 24 Jun 2013 01:26:54 +0000 (21:26 -0400)]
perlexperiment: mark lvalue subroutines accepted

9 years agoperlexperiment: (?{}) and (??{}) are not experimental
Ricardo Signes [Fri, 21 Jun 2013 02:33:15 +0000 (22:33 -0400)]
perlexperiment: (?{}) and (??{}) are not experimental

...but we need some more explanation of its limitations.  This text
was provided by Yves Orton on perl5-porters in message

9 years agoperlexperiment: mark regexp backtracking verbs as accepted
Ricardo Signes [Fri, 21 Jun 2013 01:43:30 +0000 (21:43 -0400)]
perlexperiment: mark regexp backtracking verbs as accepted

9 years agoQuote and indent %B::Concise::priv initialisation consistently
Dagfinn Ilmari Mannsåker [Sun, 23 Jun 2013 16:09:18 +0000 (17:09 +0100)]
Quote and indent %B::Concise::priv initialisation consistently

- use qw() for all word lists
- use double quotes for single strings (only) where necessary
- hanging indent after opening operator/paren

No difference in the resulting data structure, as verified with:

  ./perl -Ilib -MData::Dumper -MB::Concise -e 'package Data::Dumper {
    $Sortkeys = $Terse = $Useqq = $Deepcopy = 1; $Quotekeys = 0 }
    print Dumper(\%B::Concise::priv)'

Bump B::Concise $VERSION.

For: RT #118609.

9 years ago[perl #116781] several small changes to h2xs
Tony Cook [Mon, 24 Jun 2013 01:22:56 +0000 (11:22 +1000)]
[perl #116781] several small changes to h2xs

I don't think this requires a perldelta entry

9 years agoh2xs: place for license for META.* files
Alexandr Ciornii [Thu, 7 Feb 2013 11:09:20 +0000 (13:09 +0200)]
h2xs: place for license for META.* files

9 years agoh2xs: remove useless compatibility code (VERSION_FROM requires EU::MM from perl 5.5)
Alexandr Ciornii [Thu, 7 Feb 2013 11:05:21 +0000 (13:05 +0200)]
h2xs: remove useless compatibility code (VERSION_FROM requires EU::MM from perl 5.5)

9 years agoh2xs: dependency on XSLoader should be declared even when it is in core
Alexandr Ciornii [Thu, 7 Feb 2013 10:34:37 +0000 (12:34 +0200)]
h2xs: dependency on XSLoader should be declared even when it is in core