This is a live mirror of the Perl 5 development currently hosted at
5 years agolib/utf8.t: Generalize for EBCDIC
Karl Williamson [Sun, 22 Jan 2017 17:55:43 +0000 (10:55 -0700)]
lib/utf8.t: Generalize for EBCDIC

This had an ASCII-specific test which has been failing on EBCDIC

5 years agoMove I8 test helpers to common file
Karl Williamson [Sun, 22 Jan 2017 17:53:41 +0000 (10:53 -0700)]
Move I8 test helpers to common file

This moves the code that helps in testing I8 (which is the same as UTF-8
on non-EBCDIC platforms) to t/, away from the .t where
they previously were.  This means these can now be used in other .t's.

5 years agofix special-case recreation of *::
Zefram [Sun, 22 Jan 2017 07:26:34 +0000 (07:26 +0000)]
fix special-case recreation of *::

If *:: is called for then as a special case it is looked up as
$::{"main::"}.  If $::{"main::"} has been deleted, then that hash entry
is recreated.  But formerly it was only recreated as an undef scalar,
which broke things relying on glob lookup returning a glob.  Now in
that special case the recreated hash entry is initialised as a glob,
and populated with the customary recursive reference to the main stash.
Fixes [perl #129869].

5 years agohandle errors in gen_constant_list
Zefram [Sun, 22 Jan 2017 03:20:08 +0000 (03:20 +0000)]
handle errors in gen_constant_list

When the attempt to constant-fold a list generates an error, that
error should not be signalled at compile time, but merely abort the
attempt at constant folding, so that the error will occur naturally
at runtime.  This is achieved by wrapping the compile-time execution in
gen_constant_list() in a fake eval block.  This brings it in line with
the scalar fold_constants().  Fixes [perl #129320].

5 years agoavoid disabling utf8 pos cache on tainted strings
David Mitchell [Sat, 21 Jan 2017 15:47:43 +0000 (15:47 +0000)]
avoid disabling utf8 pos cache on tainted strings

RT #130584

When pos() or similar is used on a utf8 string, perl attaches magic
to it that caches a couple of byte<->char offset conversions. This can
avoid quadratic behaviour when continually scanning a big chunk of a long
string to convert a byte offset to a char offset when pos() is called.

v5.17.3-203-g7d1328b added code to invalidate this cache when get magic is
called on an SV, since the get magic may change the value of the SV.

However, under -T, taint magic gets added to a tainted string, which
includes a get method which doesn't actually change the SV's value.
So make a special exception to get-magic-cache-invalidation if the only
get magic on the string is taint.

This stops code like the following going quadratic under -T:

    $_ = "... long tainted utf8 string ...";
    while ( /..../g) {
        my $p = pos(); # calculating pos() goes quadratic

5 years agoS_do_op_dump_bar(): fix some weird indentation
David Mitchell [Fri, 20 Jan 2017 12:40:31 +0000 (12:40 +0000)]
S_do_op_dump_bar(): fix some weird indentation

whitespace-only change

5 years agorevamp the op_dump() output format
David Mitchell [Tue, 17 Jan 2017 17:40:32 +0000 (17:40 +0000)]
revamp the op_dump() output format

This is mainly used for low-level debugging these days (higher level stuff
like Concise having since been created), e.g. calling op_dump() from
within a debugger or running with -Dx. Make it display more info, and use
an ACSII-art tree to show the structure.

The main changes are:

* added 'ASCII-art' tree structure;
* it now displays each op's class and address;
* for op_next etc links, it now displays the type and address of the
  linked-to op in addition to its sequence number;
* the following ops now have their op_other field displayed, like op_and
  etc already do:
    andassign argdefelem dor dorassign entergiven entertry enterwhen
    once orassign regcomp substcont
* enteriter now has its op_redo etc fields displayed, like enterloop
  already does;

Here is a sample before and after of perl -Dx -e'($x+$y) * $z'


    1   TYPE = leave  ===> NULL
        TARG = 1
        PRIVATE = (REFC)
        REFCNT = 1
    2       TYPE = enter  ===> 3
    3       TYPE = nextstate  ===> 4
            LINE = 1
            PACKAGE = "main"
            SEQ = 4294967246
    5       TYPE = multiply  ===> 1
            TARG = 5
            PRIVATE = (0x2)
    6           TYPE = add  ===> 7
                TARG = 3
                PRIVATE = (0x2)
    8               TYPE = null  ===> (9)
                      (was rv2sv)
                    PRIVATE = (0x1)
    4                   TYPE = gvsv  ===> 9
                        FLAGS = (SCALAR,SLABBED)
                        PADIX = 1
    10              TYPE = null  ===> (6)
                      (was rv2sv)
                    FLAGS = (SCALAR,KIDS,SLABBED)
                    PRIVATE = (0x1)
    9                   TYPE = gvsv  ===> 6
                        FLAGS = (SCALAR,SLABBED)
                        PADIX = 2
    11          TYPE = null  ===> (5)
                  (was rv2sv)
                FLAGS = (SCALAR,KIDS,SLABBED)
                PRIVATE = (0x1)
    7               TYPE = gvsv  ===> 5
                    FLAGS = (SCALAR,SLABBED)
                    PADIX = 4


    1    leave LISTOP(0xdecb38) ===> [0x0]
         TARG = 1
         PRIVATE = (REFC)
         REFCNT = 1
    2    +--enter OP(0xdecb00) ===> 3 [nextstate 0xdecb80]
    3    +--nextstate COP(0xdecb80) ===> 4 [gvsv 0xdeb3b8]
         |   LINE = 1
         |   PACKAGE = "main"
         |   SEQ = 4294967246
    5    +--multiply BINOP(0xdecbe0) ===> 1 [leave 0xdecb38]
             TARG = 5
             FLAGS = (VOID,KIDS,SLABBED)
             PRIVATE = (0x2)
    6        +--add BINOP(0xdeb2b0) ===> 7 [gvsv 0xdeb270]
             |   TARG = 3
             |   PRIVATE = (0x2)
             |   |
    8        |   +--null (ex-rv2sv) UNOP(0xdeb378) ===> 9 [gvsv 0xdeb338]
             |   |   FLAGS = (SCALAR,KIDS,SLABBED,MORESIB)
             |   |   PRIVATE = (0x1)
             |   |   |
    4        |   |   +--gvsv PADOP(0xdeb3b8) ===> 9 [gvsv 0xdeb338]
             |   |       FLAGS = (SCALAR,SLABBED)
             |   |       PADIX = 1
             |   |
    10       |   +--null (ex-rv2sv) UNOP(0xdeb2f8) ===> 6 [add 0xdeb2b0]
             |       FLAGS = (SCALAR,KIDS,SLABBED)
             |       PRIVATE = (0x1)
             |       |
    9        |       +--gvsv PADOP(0xdeb338) ===> 6 [add 0xdeb2b0]
             |           FLAGS = (SCALAR,SLABBED)
             |           PADIX = 2
    11       +--null (ex-rv2sv) UNOP(0xdeb220) ===> 5 [multiply 0xdecbe0]
                 FLAGS = (SCALAR,KIDS,SLABBED)
                 PRIVATE = (0x1)
    7            +--gvsv PADOP(0xdeb270) ===> 5 [multiply 0xdecbe0]
                     FLAGS = (SCALAR,SLABBED)
                     PADIX = 4

5 years agoadd Perl_op_class(o) API function
David Mitchell [Wed, 18 Jan 2017 12:35:50 +0000 (12:35 +0000)]
add Perl_op_class(o) API function

Given an op, this function determines what type of struct it has been
allocated as. Returns one of the OPclass enums, such as OPclass_LISTOP.

Originally this was a static function in B.xs, but it has wider
applicability; indeed several XS modules on CPAN have cut and pasted it.

It adds the OPclass enum to op.h. In B.xs there was a similar enum, but
with names like OPc_LISTOP. I've renamed them to OPclass_LISTOP etc. so as
not to clash with the cut+paste code already on CPAN.

5 years agoUpdate Module::CoreList for 5.25.10
Abigail [Fri, 20 Jan 2017 16:37:58 +0000 (17:37 +0100)]
Update Module::CoreList for 5.25.10

5 years agoBump the perl version in various places for 5.25.10
Abigail [Fri, 20 Jan 2017 16:31:32 +0000 (17:31 +0100)]
Bump the perl version in various places for 5.25.10

5 years agoNew perldelta for 5.25.10
Abigail [Fri, 20 Jan 2017 16:19:00 +0000 (17:19 +0100)]
New perldelta for 5.25.10

5 years agoTick!
Abigail [Fri, 20 Jan 2017 16:07:55 +0000 (17:07 +0100)]

5 years agoEpigraph for 5.25.9
Abigail [Fri, 20 Jan 2017 16:06:54 +0000 (17:06 +0100)]
Epigraph for 5.25.9

5 years agoLet's be consistent v5.25.9
Abigail [Fri, 20 Jan 2017 03:07:32 +0000 (04:07 +0100)]
Let's be consistent

5 years agoAdd perlhist entry for the 5.25.9 release
Abigail [Fri, 20 Jan 2017 03:06:13 +0000 (04:06 +0100)]
Add perlhist entry for the 5.25.9 release

5 years agoAcknowledgements for perldelta
Abigail [Fri, 20 Jan 2017 03:04:09 +0000 (04:04 +0100)]
Acknowledgements for perldelta

5 years agoMore work on perldelta:
Abigail [Fri, 20 Jan 2017 02:48:55 +0000 (03:48 +0100)]
More work on perldelta:

* Finished the update modules.
* Made podchecker -warning -warnings happy.
* Fixed some typos.

5 years agoFix typo in the name the .pm file is generated from.
Abigail [Fri, 20 Jan 2017 02:32:26 +0000 (03:32 +0100)]
Fix typo in the name the .pm file is generated from.

5 years agoUpdate Module::CoreList for 5.25.9
Abigail [Fri, 20 Jan 2017 01:46:55 +0000 (02:46 +0100)]
Update Module::CoreList for 5.25.9

5 years agoMore perldelta entries
Abigail [Fri, 20 Jan 2017 01:15:00 +0000 (02:15 +0100)]
More perldelta entries

5 years agoWork on perldelta
Abigail [Fri, 20 Jan 2017 00:50:32 +0000 (01:50 +0100)]
Work on perldelta

5 years agoMake an entry for the deprecation of certain string delimiters.
Abigail [Thu, 19 Jan 2017 18:40:51 +0000 (19:40 +0100)]
Make an entry for the deprecation of certain string delimiters.

This mostly copies the entry in perldiag to perldeprecation. When 5.30
arrives, the entry in perldiag can dissappear, and the wording in
perldeprecation needs to change -- as the deprecation will no longer
be in the future.

5 years agoTypo fix: one of the =head2's should have been a =head3
Abigail [Thu, 19 Jan 2017 18:37:10 +0000 (19:37 +0100)]
Typo fix: one of the =head2's should have been a =head3

5 years agoutil.c: Allow C backtrace to compile under threads
Karl Williamson [Thu, 19 Jan 2017 20:54:48 +0000 (13:54 -0700)]
util.c: Allow C backtrace to compile under threads

This would not compile due to passing a thread context parameter to
Safefree, which isn't expecting it.

No claim is made by this commit that it works well under threads.  No
claim is made in the documentation to that effect either.

5 years agotoke.c: Refactor part of tr// handling, mostly for EBCDIC
Karl Williamson [Thu, 19 Jan 2017 04:48:51 +0000 (21:48 -0700)]
toke.c: Refactor part of tr// handling, mostly for EBCDIC

Commit af9be36c89322d2469f27b3c98c20c32044697fe changed toke.c to count
the number of UTF-8 variant characters seen in a string so far.  If the
count is 0 when the string has to be upgraded to UTF-8, then only a flag
has to be flipped, saving reparse time.  Incrementing this count wasn't
getting done during the expansion of ranges like A-Z under tr///.  This
currently doesn't matter for ASCII platforms, as the count is currently
treated as a boolen, and it was getting set if a range endpoint is
variant.  On EBCDIC platforms a range may contain variants even if both
endpoints are not.  For example \x00-\xFF.  (\xFF is a control that is
an invariant).  This led to a lot of noise on an EBCDIC smoke, but no
actual tests failing.

I want to keep it as a count so that in the future, things could be
changed so that count can be used to know how big to grow a string when
it is converted to UTF-8, without having to re-parse it as we do now.
It turns out that we need to have this count anyway in the tr/// code as
that grows the string to account for the expansion, and needs to know
how many variants there are in order to do so if the string already is
in UTF-8.  So refactoring that code slightly allows the count to served
double-duty, for the grow if it is already UTF-8, and how much to grow
if it isn't UTF-8.  And it fixes the noise problem on EBCDIC

5 years agotoke.c: Avoid work if tr/a-b/foo/
Karl Williamson [Wed, 18 Jan 2017 22:36:49 +0000 (15:36 -0700)]
toke.c: Avoid work if tr/a-b/foo/

A two-element range here is already fully set up, and no need to do

5 years agotoke.c: Avoid work for tr/a-a/.../
Karl Williamson [Wed, 18 Jan 2017 21:21:02 +0000 (14:21 -0700)]
toke.c: Avoid work for tr/a-a/.../

A single element range can skip a bunch of work.

5 years agotoke.c: Save a branch
Karl Williamson [Thu, 19 Jan 2017 20:52:57 +0000 (13:52 -0700)]
toke.c: Save a branch

By ordering these sequential tests properly, a branch in the mainline
can be saved.

5 years agotoke.c: Add, clarify some comments, white-space
Karl Williamson [Wed, 18 Jan 2017 21:19:37 +0000 (14:19 -0700)]
toke.c: Add, clarify some comments, white-space

5 years agoperlebcdic: Rmv obsolete text about 'use encoding'
Karl Williamson [Tue, 17 Jan 2017 00:52:55 +0000 (17:52 -0700)]
perlebcdic: Rmv obsolete text about 'use encoding'

5 years agoperlop: Remove obsolete text
Karl Williamson [Tue, 17 Jan 2017 00:51:20 +0000 (17:51 -0700)]
perlop: Remove obsolete text

'use encoding' no longer works.  Don't say it does.

5 years agoFix bug with a digit range under re 'strict'
Karl Williamson [Fri, 13 Jan 2017 20:53:17 +0000 (13:53 -0700)]
Fix bug with a digit range under re 'strict'

"use re 'strict" is supposed to warn if a range whose start and end
points are digits aren't from the same group of 10.  For example, if you
mix Bengali and Thai digits.  It wasn't working properly for 5 groups of
mathematical digits starting at U+1D7E.  This commit fixes that, and
refactors the code to bail out as soon as it discovers that no warning
is warranted, instead of doing unnecessary work.

5 years agopp_ctl.c: false/true --> FALSE/TRUE
Craig A. Berry [Thu, 19 Jan 2017 16:10:36 +0000 (10:10 -0600)]
pp_ctl.c: false/true --> FALSE/TRUE

The win32 build died with the lower case versions.

Follow-up to 86191aed6f092273.

5 years ago[perl #129377] don't read past start of string for unmatched backref
Hugo van der Sanden [Wed, 5 Oct 2016 11:56:05 +0000 (12:56 +0100)]
[perl #129377] don't read past start of string for unmatched backref

We can have (start, end) == (0, -1) for an unmatched backref, we must
check for that.

5 years ago(perl #129342) test for buffer overflow
Tony Cook [Tue, 17 Jan 2017 00:52:53 +0000 (11:52 +1100)]
(perl #129342) test for buffer overflow

5 years ago[perl #129342] ensure range-start is set after error in tr///
Hugo van der Sanden [Wed, 5 Oct 2016 13:53:27 +0000 (14:53 +0100)]
[perl #129342] ensure range-start is set after error in tr///

A parse error due to invalid octal or hex escape in the range of a
transliteration must still ensure some kind of start and end values
are captured, since we don't stop on the first such error. Failure
to do so can cause invalid reads after "Here we have parsed a range".

5 years agoperldelta for 86191aed6f09
Tony Cook [Thu, 19 Jan 2017 06:35:49 +0000 (17:35 +1100)]
perldelta for 86191aed6f09

5 years ago(perl #129125) copy form data if it might be freed
Tony Cook [Thu, 19 Jan 2017 05:28:03 +0000 (16:28 +1100)]
(perl #129125) copy form data if it might be freed

If the format SV also appeared as an argument, and the FF_CHOP
operator modified that argument, the magic and hence the compiled
format would be freed, and the next iteration of the processing
the compiled format would read freed memory.

Unlike my original patch this copies the formsv too, since
that is also stored in the magic, and is needed for presenting
literal text from the format.

5 years ago(perl #126228) partly revert 8cc95fdb and fix a3c8358c origin/tonyc/126228-dxsub_sysx
Tony Cook [Mon, 16 May 2016 06:51:51 +0000 (16:51 +1000)]
(perl #126228) partly revert 8cc95fdb and fix a3c8358c

a3c8358c changed:

-#define dXSUB_SYS int dummy
+#define dXSUB_SYS

which made dXSUB_SYS into not-a-declaration, this apparently broke
something, since 8cc95fdb then went through all the definitions of
dXSUB_SYS, made each of them into not-a-declaration and then
ensured ExtUtilis::Miniperl emitted dXSUB_SYS in a place where it
didn't matter whether it was a declaration or a statement.

When these changes were made perl.h didn't have dNOOP, but now we
do, so we can make dXSUB_SYS a declaration again, as its name

Based on a patch originally created by Daniel Dragan (bulk88).

5 years agoAPItest/t/handy.t: Skip some tests on EBCDIC
Karl Williamson [Wed, 18 Jan 2017 18:05:47 +0000 (11:05 -0700)]
APItest/t/handy.t: Skip some tests on EBCDIC

The skipped tests are for malformed input for the various isCNTRL
functions.  Perl does not go out of its way to test for malformedness in
the these, only making sure they are well-formed if that is necessary
for the correct operation of the function.  Since all controls in EBCDIC
are represented by a single byte, and you can't malform a single byte,
all the malformedness control tests will not detect malformedness on
EBCDIC platforms, so skip them.

5 years agoAPItest/t/handy.t: Use more mnemonic variable names
Karl Williamson [Tue, 10 Jan 2017 16:46:23 +0000 (09:46 -0700)]
APItest/t/handy.t: Use more mnemonic variable names

The previous commit might not have been necessary if these had been more
mnemonic in the first place.

5 years agoRemove obsolete (PL_)statcache mentions in comments
Dagfinn Ilmari Mannsåker [Wed, 18 Jan 2017 12:39:28 +0000 (12:39 +0000)]
Remove obsolete (PL_)statcache mentions in comments

cando() has not used PL_statcache since Perl 3 (commit a687059cbaf)

5 years agoAvoid deprecation message.
Abigail [Tue, 17 Jan 2017 21:54:08 +0000 (22:54 +0100)]
Avoid deprecation message.

File::Glob::glob is deprecated. So, if we test it, we should avoid
the warning.

5 years agoAvoid triggering a deprecation warnings.
Abigail [Tue, 17 Jan 2017 21:21:29 +0000 (22:21 +0100)]
Avoid triggering a deprecation warnings.

The offending line is put in a block with "no warnings 'deprecated';".
The line can go after 5.26, as it'll be fatal in 5.28.

5 years agoAvoid deprecation warning.
Abigail [Tue, 17 Jan 2017 21:16:02 +0000 (22:16 +0100)]
Avoid deprecation warning.

Use of an unqualified dump() now gives a deprecation warning. So, change
dump into CORE::dump in the tests.

5 years agoadd S_process_optree() function to op.c
David Mitchell [Sat, 14 Jan 2017 16:02:46 +0000 (16:02 +0000)]
add S_process_optree() function to op.c

Extract into a new static function, S_process_optree(), some of the common
code that calls rpeep(), finalize_optree() etc in the various
newSUB()-style functions.

There should be no functional changes, except that for formats, pad_tidy()
is now called *after* optimisation. This matches what already happens for
normals subs, and can possibly be regarded as a bug fix - although I can't
think of anything it actually fixes.

There are probably more things that could be consolidated into this
function, but because the details vary amongst the various call sites,
I've left them alone for now.

5 years agoperldelta for 254707b
James E Keenan [Tue, 17 Jan 2017 13:42:28 +0000 (08:42 -0500)]
perldelta for 254707b

5 years agoUpdates to ANDK/CPAN-2.16-TRIAL2.tar.gz
Andreas Koenig [Tue, 17 Jan 2017 08:27:49 +0000 (09:27 +0100)]
Updates to ANDK/CPAN-2.16-TRIAL2.tar.gz

5 years agodavem's perldelta entries for 5.25.9 so far
David Mitchell [Tue, 17 Jan 2017 11:55:58 +0000 (11:55 +0000)]
davem's perldelta entries for 5.25.9 so far

5 years ago(perl #129149) fix the test so skip has a SKIP: to work with origin/tonyc/129149-fix-skip
Tony Cook [Tue, 17 Jan 2017 04:36:31 +0000 (15:36 +1100)]
(perl #129149) fix the test so skip has a SKIP: to work with

Thanks to bulk88 for pointing this out.

5 years agowarn at most once per literal about misplaced _
Zefram [Tue, 17 Jan 2017 00:04:00 +0000 (00:04 +0000)]
warn at most once per literal about misplaced _

Fixes [perl #70878].

5 years agoperldelta for bf4a926a2937
Tony Cook [Mon, 16 Jan 2017 23:56:33 +0000 (10:56 +1100)]
perldelta for bf4a926a2937

5 years ago(perl #129149) avoid a heap buffer overflow with pack "W"...
Tony Cook [Wed, 7 Sep 2016 06:51:39 +0000 (16:51 +1000)]
(perl #129149) avoid a heap buffer overflow with pack "W"...

5 years agoperldelta for 02c161ef974f
Tony Cook [Mon, 16 Jan 2017 22:27:15 +0000 (09:27 +1100)]
perldelta for 02c161ef974f

5 years agoperldelta: Fix typo
Karl Williamson [Mon, 16 Jan 2017 20:05:14 +0000 (13:05 -0700)]
perldelta: Fix typo

5 years agoMention changed deprecation messages in perldelta.
Abigail [Mon, 16 Jan 2017 18:10:04 +0000 (19:10 +0100)]
Mention changed deprecation messages in perldelta.

5 years agoThere's an objection to fatalizing jumping into a construct.
Abigail [Mon, 16 Jan 2017 10:44:30 +0000 (11:44 +0100)]
There's an objection to fatalizing jumping into a construct.

This reverts commit 84b32f52b10f9912b40ef378cd0b01f4aff80630.
This reverts commit d30393aaade31b605724846a30a10dd1e96cd181.

We need more debate on this one; either we should undeprecate it,
or settle on an end-of-life version.

5 years agoUse of $* and $# will be fatal in 5.30.
Abigail [Sun, 15 Jan 2017 21:23:47 +0000 (22:23 +0100)]
Use of $* and $# will be fatal in 5.30.

Initially, the plan was to just drop the deprecation message of $* and $#,
letting them be the magicless punctuation variables they are now. However,
we decided to make their use fatal, so we can use them in a future version
of Perl.

5 years agoRevert "Remove deprecation warnings related to $* and $#."
Abigail [Sun, 15 Jan 2017 12:23:34 +0000 (13:23 +0100)]
Revert "Remove deprecation warnings related to $* and $#."

This reverts commit e9b5346b919b4f4cc0096af4644cb0d48d64e14c.

We've decided that instead of leaving $* and $# as usuable, magic-free
variables, we instead make it fatal to use them. Therefore, we restore
the warnings their use gives, and in a subsequent commit, we fix the
warning to indicate the version where their use becomes fatal.

5 years agoRevert "Fix mentioning of C<$#>."
Abigail [Sun, 15 Jan 2017 12:23:12 +0000 (13:23 +0100)]
Revert "Fix mentioning of C<$#>."

This reverts commit b9a643355baa0bd9bc9b4e9cbaf51c8727589bfa.

5 years agoMention $! vs $^E in pod/perlport.pod
Abigail [Sat, 14 Jan 2017 21:34:30 +0000 (22:34 +0100)]
Mention $! vs $^E in pod/perlport.pod

Since 5.24, it has been deprecated to check $! after a Winsock function;
one such use $^E instead. However, since we do not have a deprecation
warning for this, we cannot set an EOL version of this deprecation.
As such, it just gets mentioned in perlport, and this will be the
only deprecation without an EOL version.

5 years agoUpdate an old email address of mine
Abigail [Sat, 14 Jan 2017 21:28:50 +0000 (22:28 +0100)]
Update an old email address of mine

5 years agoString bitwise operators will not accept code points > 0xFF in 5.28
Abigail [Sat, 14 Jan 2017 21:13:54 +0000 (22:13 +0100)]
String bitwise operators will not accept code points > 0xFF in 5.28

5 years agoReading/writing bytes from :utf8 handles will be fatal in 5.30
Abigail [Sat, 14 Jan 2017 20:44:56 +0000 (21:44 +0100)]
Reading/writing bytes from :utf8 handles will be fatal in 5.30

5 years agoDeprecating the modifyable variables in constants by 5.32.
Abigail [Sat, 14 Jan 2017 17:25:48 +0000 (18:25 +0100)]
Deprecating the modifyable variables in constants by 5.32.

It was already deprecated, but we're now adding a version number.

5 years agoMake it fatal to pass malformed UTF-8.
Abigail [Sat, 14 Jan 2017 03:01:39 +0000 (04:01 +0100)]
Make it fatal to pass malformed UTF-8.

Due to a bug in either Perl, or in some XS-code, it's possible
for a string which is supposed to be in UTF-8 format to not be
properly encoded. If you try to find out its type (digit,
punctuation) perl will now croak.

This behaviour was deprecated in Perl 5.18.

5 years agomy() in a false conditional will be fatal in Perl 5.30
Abigail [Sat, 14 Jan 2017 01:30:49 +0000 (02:30 +0100)]
my() in a false conditional will be fatal in Perl 5.30

5 years agoDeprecation of an unqualified dump() to mean CORE::dump().
Abigail [Fri, 13 Jan 2017 21:36:47 +0000 (22:36 +0100)]
Deprecation of an unqualified dump() to mean CORE::dump().

This will no longer be allowed in 5.30.

5 years agoDeprecating the use of C<< \cI<X> >> to specify a printable character.
Abigail [Fri, 13 Jan 2017 19:29:58 +0000 (20:29 +0100)]
Deprecating the use of C<< \cI<X> >> to specify a printable character.

Starting in 5.14, we deprecated the use of "\cI<X>" when this
results in a printable character. For instance, "\c:" is just
a fancy way of writing "z". Starting in 5.28, this will be a
fatal error.

This also includes certain usage in regular expressions with the
experimental (?[ ]) construct, or when "use re 'strict'" is in
effect (also experimental).

5 years agoB::OP::terse will go away in Perl 5.28.
Abigail [Thu, 24 Nov 2016 14:35:43 +0000 (15:35 +0100)]
B::OP::terse will go away in Perl 5.28.

Adjusted the deprecation message, and bumped the version of B::Terse.

5 years agoNo longer mention some uses of $SIG {__DIE__} are deprecated.
Abigail [Thu, 24 Nov 2016 12:57:23 +0000 (13:57 +0100)]
No longer mention some uses of $SIG {__DIE__} are deprecated.

The C<$SIG{__DIE__}> hook is called even inside an C<eval()>. It was
never intended to happen this way, but an implementation glitch made
this possible. This used to be deprecated, as it allowed strange action
at a distance like rewriting a pending exception in C<$@>. Plans to
rectify this have been scrapped, as users found that rewriting a
pending exception is actually a useful feature, and not a bug.

5 years agoRemove utils/c2ph and utils/pstruct
Abigail [Thu, 24 Nov 2016 12:22:10 +0000 (13:22 +0100)]
Remove utils/c2ph and utils/pstruct

These programs are the same, just behave differently depending on
under which name you call it.

This is a very old script, originally dating from the perl3 era.
It has been deprecated in favour of h2xs for a long time.

In Perl 5.26, these utilities will no longer be available.

5 years agoDon't recognize the --libpods option in Pod::Html
Abigail [Thu, 24 Nov 2016 11:40:04 +0000 (12:40 +0100)]
Don't recognize the --libpods option in Pod::Html

Since Perl 5.18, the --libpods option has been recognized, but
did not do anything other than issue a deprecation warnings.
As of now, using the --libpods option creates an error.

The version number of Pod::Html has bumped to 1.2202.

5 years agoRemove unneeded entry from pod/perldiag.pod
Abigail [Thu, 24 Nov 2016 00:11:01 +0000 (01:11 +0100)]
Remove unneeded entry from pod/perldiag.pod

It had an entry 'Use of %s is deprecated', matching the warnings
the deprecation() macro in handy.h could generate.

Most of these warning had already their own entries in perldiag.pod,
and the ones which did not, now do. Furthermore, the format of the
warnings has changed, as we now have a version in which the construct
disappears from Perl in the message.

5 years agoUse of inherited AUTOLOAD for non-methods will be fatal in 5.28.
Abigail [Wed, 23 Nov 2016 23:50:09 +0000 (00:50 +0100)]
Use of inherited AUTOLOAD for non-methods will be fatal in 5.28.

Which will be 21 years after it was deprecated (5.004).

5 years agoRemove the deprecate() macro from handy.h.
Abigail [Wed, 23 Nov 2016 22:03:13 +0000 (23:03 +0100)]
Remove the deprecate() macro from handy.h.

Since we now require each deprecation message to come with a
version in which the feature will disappear, and we have reworked
the existing uses of this macro, there doesn't seem to be a need
for this one anymore.

5 years agoJumping into constructs will be fatal in 5.28.
Abigail [Wed, 23 Nov 2016 21:52:36 +0000 (22:52 +0100)]
Jumping into constructs will be fatal in 5.28.

5 years agoUse of comma-less variable lists is deprecated.
Abigail [Wed, 23 Nov 2016 18:38:15 +0000 (19:38 +0100)]
Use of comma-less variable lists is deprecated.

It will be fatal by Perl 5.28.

5 years agoUse of Unicode code points exceeding IV_MAX will be fatal in Perl 5.28
Abigail [Wed, 23 Nov 2016 18:06:51 +0000 (19:06 +0100)]
Use of Unicode code points exceeding IV_MAX will be fatal in Perl 5.28

Changed the warning to reflect the deadline of this deprecation.
Update tests, perldiag.pod and added a section to perldeprecation.pod.

5 years agoUnescaped left braces in regular expressions will be fatal in 5.30.
Abigail [Mon, 21 Nov 2016 21:38:32 +0000 (22:38 +0100)]
Unescaped left braces in regular expressions will be fatal in 5.30.

In 5.26, some uses of unescaped left braces were made fatal; they have
given a deprecation warning since 5.20. Due to an oversight, some cases
were missed, and did not give a deprecation warning. They do now.

This patch changes said deprecation warning to mention the Perl version
in which the use of an unescaped left brace will be fatal (5.30).

The patch also cleans up some unnecessary quotes inside a C<> construct
in the discussion of this warning in perldiag.pod.

5 years agoBare heredocs will be fatal in 5.28.
Abigail [Fri, 18 Nov 2016 17:33:19 +0000 (18:33 +0100)]
Bare heredocs will be fatal in 5.28.

Heredocs without a terminator after the << have been deprecated
since 5.000. After more than 2 decades, it's time to retire this
construct. They will be fatal in 5.28.

5 years agoUse of \N{} will be fatal in 5.28.
Abigail [Fri, 18 Nov 2016 16:41:44 +0000 (17:41 +0100)]
Use of \N{} will be fatal in 5.28.

Use of \N{} in a double quoted context, with nothing between the
braces, was deprecated in 5.24, and it will be a fatal error in 5.28.

5 years agoReformat overlong comment.
Abigail [Fri, 18 Nov 2016 13:56:56 +0000 (14:56 +0100)]
Reformat overlong comment.

pod/perlhack.pod says to try hard not to exceed 79 columns.

5 years ago$/ = \-1 will be fatal in Perl 5.28.
Abigail [Fri, 18 Nov 2016 13:52:18 +0000 (14:52 +0100)]
$/ = \-1 will be fatal in Perl 5.28.

Setting $/ to a reference of a non-positive integer has been deprecated
since 5.20, in which it was special cased to act like you had set to
$/ to undef.

In Perl 5.28, setting $/ to a reference to a non-positive integer will
be a fatal error.

5 years agoOpening a file and dir using the same symbol will be fatal in 5.28.
Abigail [Thu, 17 Nov 2016 18:34:37 +0000 (19:34 +0100)]
Opening a file and dir using the same symbol will be fatal in 5.28.

Perl 5.10 deprecated using the same symbol to open both a filehandle
and a dirhandle, as this can lead to confusing code.

In Pelr 5.28, this will become a fatal error. This patch changes the
warning to reflect this.

5 years agoFix mentioning of C<$#>.
Abigail [Wed, 16 Nov 2016 23:38:38 +0000 (00:38 +0100)]
Fix mentioning of C<$#>.

A copy and past left a C<$*> instead of a C<$#>.

Pointed out by douglas steinwand.

5 years agoSetting ${^ENCODE} will be fatal by 5.28.
Abigail [Wed, 16 Nov 2016 18:07:32 +0000 (19:07 +0100)]
Setting ${^ENCODE} will be fatal by 5.28.

Hence, we adapted the warning, to mention the version in which it
will become a fatal error.

5 years agoBe consistent when addressing Perl.
Abigail [Tue, 15 Nov 2016 23:20:31 +0000 (00:20 +0100)]
Be consistent when addressing Perl.

In perldeprecation.pod, when referring to a particular perl version,
use "Perl 5.XX" (or "Perl 5.00X" for pre-5.6 versions) consistently.

5 years agoRemove deprecation warnings related to $* and $#.
Abigail [Tue, 15 Nov 2016 22:51:53 +0000 (23:51 +0100)]
Remove deprecation warnings related to $* and $#.

The magic variables $* and $# were deprecated in 5.000. Their magical
meaning was removed in Perl 5.10. Since then, a warning was issued
if the variables were used.

This warnings has been removed.

5 years agoTime limit the deprecation of :unique and :locked.
Abigail [Tue, 15 Nov 2016 18:35:28 +0000 (19:35 +0100)]
Time limit the deprecation of :unique and :locked.

The :unique and :locked attributes have had no effect since 5.8.8
and 5.005 respectively. They were deprecated in 5.12. They are now
scheduled to be deleted in 5.28.

There are two places the deprecation warning can be issued:
in lib/, and in toke.c. The warnings were phrased
differently, but since we're changing the warning anyway (as we
added the version of Perl in which the attributes will disappear),
we've used the same phrasing for this warning, regardless of where
it is generated:

    Attribute "locked" is deprecated, and will disappear in Perl 5.28
    Attribute "unique" is deprecated, and will disappear in Perl 5.28

5 years agoDrop .0 from version numbers.
Abigail [Mon, 14 Nov 2016 18:13:29 +0000 (19:13 +0100)]
Drop .0 from version numbers.

Since most perl versions we will refer to in this document will be
major releases, we'll drop the trailing ".0" whenever we mention
a version.

5 years agoActively deprecate File::Glob::glob().
Abigail [Mon, 14 Nov 2016 18:08:12 +0000 (19:08 +0100)]
Actively deprecate File::Glob::glob().

This function has been deprecated since 5.8. However, no deprecation
message was issued; only perl5.008delta.pod and a comment in the file
mention its deprecation.

This patch issues a deprecation message, and warns the user it will
be gone in perl 5.30. Since all this method does is calling
File::Glob::bsd_glob anyway, code calling this is easily fixed.

5 years agoMove discussion of using tie and friends on * less scalars which hold globs
Abigail [Mon, 14 Nov 2016 16:26:42 +0000 (17:26 +0100)]
Move discussion of using tie and friends on * less scalars which hold globs

This was deprecated in 5.14, and fixed in 5.16. Hence, it's moved out
of pod/perldiag.pod, and added to pod/perldeprecation.pod.

5 years agoRemoved entry "Setting ${^ENCODING} is deprecated"
Abigail [Mon, 14 Nov 2016 15:16:49 +0000 (16:16 +0100)]
Removed entry "Setting ${^ENCODING} is deprecated"

pod/perldiag.pod mentions twice that the use of ${^ENCODING} is deprecated.
This is overkill, and we've removed the entry which uses wording which is
no longer used.

5 years agoDeprecated POSIX functions were removed in 5.24.0
Abigail [Mon, 14 Nov 2016 15:12:12 +0000 (16:12 +0100)]
Deprecated POSIX functions were removed in 5.24.0

Therefore, we no longer need the entry in pod/perldiag.pod. We
do however need an entry in pod/perldeprecation.pod.

5 years agoCreated pod/perldeprecation.pod
Abigail [Mon, 14 Nov 2016 13:35:00 +0000 (14:35 +0100)]
Created pod/perldeprecation.pod

This pod is intended to document all deprecations in Perl.
It will document when something became deprecated, when it is
scheduled to be actually removed, and it will offer alternatives.

Initially, we documented the undeprecation of *glob{FILEHANDLE},
and removed its entry from pod/perldiag.pod where it was left
after it being no longer deprecated.

5 years agoperluniintro: Remove obsolete text
Karl Williamson [Mon, 16 Jan 2017 18:00:12 +0000 (11:00 -0700)]
perluniintro: Remove obsolete text

This refers to future plans about 5.24; 5.24 no longer is in the future.

5 years ago(perl #130262) split scalar context stack overflow fix
Tony Cook [Mon, 5 Dec 2016 00:48:14 +0000 (11:48 +1100)]
(perl #130262) split scalar context stack overflow fix

pp_split didn't ensure there was space for its return value
in scalar context.

5 years agoCorrect spelling error.
James E Keenan [Sun, 15 Jan 2017 00:07:21 +0000 (19:07 -0500)]
Correct spelling error.

5 years agoUse File::Spec->catfile() in Test2's Files.t test.
Craig A. Berry [Sat, 14 Jan 2017 21:44:15 +0000 (15:44 -0600)]
Use File::Spec->catfile() in Test2's Files.t test.

Explicitly using forward slashes to concatenate filenames is not
portable and we've already loaded File::Spec anyway.  Also, don't
try to remove the directory we're cleaning up unless we were
successful in opening it.