summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MANIFEST1
-rwxr-xr-xMakefile.SH8
-rw-r--r--pod/.gitignore2
-rw-r--r--pod/perl.pod1
-rw-r--r--pod/perl5214delta.pod773
-rw-r--r--pod/perldelta.pod717
-rw-r--r--vms/descrip_mms.template2
-rw-r--r--win32/Makefile4
-rw-r--r--win32/makefile.mk4
-rw-r--r--win32/pod.mak4
10 files changed, 969 insertions, 547 deletions
diff --git a/MANIFEST b/MANIFEST
index f5b54642c6..2ee6dbd489 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -4459,6 +4459,7 @@ pod/perl5210delta.pod Perl changes in version 5.21.0
pod/perl5211delta.pod Perl changes in version 5.21.1
pod/perl5212delta.pod Perl changes in version 5.21.2
pod/perl5213delta.pod Perl changes in version 5.21.3
+pod/perl5214delta.pod Perl changes in version 5.21.4
pod/perl561delta.pod Perl changes in version 5.6.1
pod/perl56delta.pod Perl changes in version 5.6
pod/perl581delta.pod Perl changes in version 5.8.1
diff --git a/Makefile.SH b/Makefile.SH
index 6a2c6ce526..81023f035a 100755
--- a/Makefile.SH
+++ b/Makefile.SH
@@ -489,7 +489,7 @@ mini_obj = $(minindt_obj) $(MINIDTRACE_O)
ndt_obj = $(obj0) $(obj1) $(obj2) $(obj3) $(ARCHOBJS)
obj = $(ndt_obj) $(DTRACE_O)
-perltoc_pod_prereqs = extra.pods pod/perl5214delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod
+perltoc_pod_prereqs = extra.pods pod/perl5215delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod
generated_pods = pod/perltoc.pod $(perltoc_pod_prereqs)
generated_headers = uudmap.h bitcount.h mg_data.h
@@ -999,9 +999,9 @@ pod/perlintern.pod: $(MINIPERL_EXE) autodoc.pl embed.fnc
pod/perlmodlib.pod: $(MINIPERL_EXE) pod/perlmodlib.PL MANIFEST
$(MINIPERL) pod/perlmodlib.PL -q
-pod/perl5214delta.pod: pod/perldelta.pod
- $(RMS) pod/perl5214delta.pod
- $(LNS) perldelta.pod pod/perl5214delta.pod
+pod/perl5215delta.pod: pod/perldelta.pod
+ $(RMS) pod/perl5215delta.pod
+ $(LNS) perldelta.pod pod/perl5215delta.pod
extra.pods: $(MINIPERL_EXE)
-@test ! -f extra.pods || rm -f `cat extra.pods`
diff --git a/pod/.gitignore b/pod/.gitignore
index 48857fe4af..7aa21c1878 100644
--- a/pod/.gitignore
+++ b/pod/.gitignore
@@ -53,7 +53,7 @@
/roffitall
# generated
-/perl5214delta.pod
+/perl5215delta.pod
/perlapi.pod
/perlintern.pod
*.html
diff --git a/pod/perl.pod b/pod/perl.pod
index 111bd52e29..585df3df47 100644
--- a/pod/perl.pod
+++ b/pod/perl.pod
@@ -179,6 +179,7 @@ aux a2p c2ph h2ph h2xs perlbug pl2pm pod2html pod2man s2p splain xsubpp
perlhist Perl history records
perldelta Perl changes since previous version
+ perl5214delta Perl changes in version 5.21.4
perl5213delta Perl changes in version 5.21.3
perl5212delta Perl changes in version 5.21.2
perl5211delta Perl changes in version 5.21.1
diff --git a/pod/perl5214delta.pod b/pod/perl5214delta.pod
new file mode 100644
index 0000000000..483f6ba5f8
--- /dev/null
+++ b/pod/perl5214delta.pod
@@ -0,0 +1,773 @@
+=encoding utf8
+
+=head1 NAME
+
+perl5214delta - what is new for perl v5.21.4
+
+=head1 DESCRIPTION
+
+This document describes differences between the 5.21.3 release and the 5.21.4
+release.
+
+If you are upgrading from an earlier release such as 5.21.2, first read
+L<perl5213delta>, which describes differences between 5.21.2 and 5.21.3.
+
+=head1 Core Enhancements
+
+=head2 Infinity and NaN (not-a-number) handling improved
+
+Floating point values are able to hold the special values infinity (also
+-infinity), and NaN (not-a-number). Now we more robustly recognize and
+propagate the value in computations, and on output normalize them to C<Inf> and
+C<NaN>.
+
+See also the L<POSIX> enhancements.
+
+=head1 Incompatible Changes
+
+=head2 Changes to the C<*> prototype
+
+The C<*> character in a subroutine's prototype used to allow barewords to take
+precedence over most, but not all subroutines. It was never consistent and
+exhibited buggy behaviour.
+
+Now it has been changed, so subroutines always take precedence over barewords,
+which brings it into conformity with similarly prototyped built-in functions:
+
+ sub splat($) { ... }
+ sub foo { ... }
+ splat(foo); # now always splat(foo())
+ splat(bar); # still splat('bar') as before
+ close(foo); # close(foo())
+ close(bar); # close('bar')
+
+=head1 Performance Enhancements
+
+=over 4
+
+=item *
+
+Subroutines with an empty prototype and bodies containing just C<undef> are now
+eligible for inlining.
+L<[perl #122728]|https://rt.perl.org/Ticket/Display.html?id=122728>
+
+=item *
+
+Subroutines in packages no longer need to carry typeglobs around with them.
+Declaring a subroutine will now put a simple sub reference in the stash if
+possible, saving memory. The typeglobs still notionally exist, so accessing
+them will cause the subroutine reference to be upgraded to a typeglob. This
+optimization does not currently apply to XSUBs or exported subroutines, and
+method calls will undo it, since they cache things in typeglobs.
+L<[perl #120441]|https://rt.perl.org/Ticket/Display.html?id=120441>
+
+=back
+
+=head1 Modules and Pragmata
+
+=head2 New Modules and Pragmata
+
+=over 4
+
+=item *
+
+L<B::Op_private> provides detailed information about the flags used in the
+C<op_private> field of perl opcodes.
+
+=back
+
+=head2 Updated Modules and Pragmata
+
+=over 4
+
+=item *
+
+L<Archive::Tar> has been upgraded from version 2.00 to 2.02.
+
+Tests can now be run in parallel.
+
+=item *
+
+L<Attribute::Handlers> has been upgraded from version 0.96 to 0.97.
+
+Internal changes to account for the fact that subroutines in packages no longer
+need to carry typeglobs around with them (see under L</Performance
+Enhancements>).
+
+=item *
+
+L<attributes> has been upgraded from version 0.22 to 0.23.
+
+The usage of C<memEQs> in the XS has been corrected.
+L<[perl #122701]|https://rt.perl.org/Ticket/Display.html?id=122701>
+
+=item *
+
+L<B> has been upgraded from version 1.50 to 1.51.
+
+It provides a new C<B::safename> function, based on the existing
+C<< B::GV->SAFENAME >>, that converts "\cOPEN" to "^OPEN".
+
+=item *
+
+L<B::Concise> has been upgraded from version 0.992 to 0.993.
+
+Internal changes to account for the fact that the defines and labels for the
+flags in the C<op_private> field of OPs are now auto-generated (see under
+L</Internal Changes>).
+
+=item *
+
+L<B::Deparse> has been upgraded from version 1.27 to 1.28.
+
+It now deparses C<our(I<LIST>)> and typed lexical (C<my Dog $spot>) correctly.
+
+=item *
+
+L<bignum> has been upgraded from version 0.37 to 0.38.
+
+An C<eval BLOCK> rather than an C<eval EXPR> is now used to see if we can find
+Math::BigInt::Lite.
+
+=item *
+
+L<constant> has been upgraded from version 1.31 to 1.32.
+
+It now accepts fully-qualified constant names, allowing constants to be defined
+in packages other than the caller.
+
+=item *
+
+L<CPAN::Meta::Requirements> has been upgraded from version 2.126 to 2.128.
+
+Works around limitations in version::vpp detecting v-string magic and adds
+support for forthcoming L<ExtUtils::MakeMaker> bootstrap F<version.pm> for
+Perls older than 5.10.0.
+
+=item *
+
+L<Data::Dumper> has been upgraded from version 2.152 to 2.154.
+
+Fixes CVE-2014-4330 by adding a configuration variable/option to limit
+recursion when dumping deep data structures.
+
+=item *
+
+L<experimental> has been upgraded from version 0.008 to 0.010.
+
+Hardcodes features for Perls older than 5.15.7.
+
+=item *
+
+L<ExtUtils::CBuilder> has been upgraded from version 0.280217 to 0.280219.
+
+Fixes a regression on Android.
+L<[perl #122675]|https://rt.perl.org/Ticket/Display.html?id=122675>
+
+=item *
+
+L<ExtUtils::Install> has been upgraded from version 1.68 to 2.04.
+
+No changes to installed files other than version bumps.
+
+=item *
+
+L<ExtUtils::Manifest> has been upgraded from version 1.65 to 1.68.
+
+Fixes a bug with C<maniread()>'s handling of quoted filenames and improves
+C<manifind()> to follow symlinks.
+L<[perl #122415]|https://rt.perl.org/Ticket/Display.html?id=122415>
+
+=item *
+
+L<File::Find> has been upgraded from version 1.27 to 1.28.
+
+C<find()> and C<finddepth()> will now warn if passed inappropriate or
+misspelled options.
+
+=item *
+
+L<Getopt::Std> has been upgraded from version 1.10 to 1.11.
+
+Corrects a typo in the documentation.
+
+=item *
+
+L<HTTP::Tiny> has been upgraded from version 0.047 to 0.049.
+
+C<keep_alive> is now fork-safe and thread-safe.
+
+=item *
+
+L<IO> has been upgraded from version 1.33 to 1.34.
+
+The XS implementation has been fixed for the sake of older Perls.
+
+=item *
+
+L<IO::Socket::IP> has been upgraded from version 0.31 to 0.32.
+
+Implements Timeout for C<connect()>.
+L<[cpan #92075]|https://rt.cpan.org/Ticket/Display.html?id=92075>
+
+=item *
+
+L<Locale::Codes> has been upgraded from version 3.31 to 3.32.
+
+New codes have been added.
+
+=item *
+
+L<Math::BigInt> has been upgraded from version 1.9996 to 1.9997.
+
+The documentation now gives test examples using L<Test::More> rather than
+L<Test>.
+
+=item *
+
+L<Module::CoreList> has been upgraded from version 5.021003 to 5.20140920.
+
+Updated to cover the latest releases of Perl.
+
+=item *
+
+L<overload> has been upgraded from version 1.22 to 1.23.
+
+A redundant C<ref $sub> check has been removed.
+
+=item *
+
+PathTools has been upgraded from version 3.49 to 3.50.
+
+A warning from the B<gcc> compiler is now avoided when building the XS.
+
+=item *
+
+L<Pod::Perldoc> has been upgraded from version 3.23 to 3.24.
+
+Filehandles opened for reading or writing now have C<:encoding(UTF-8)> set.
+L<[cpan #98019]|https://rt.cpan.org/Ticket/Display.html?id=98019>
+
+=item *
+
+L<POSIX> has been upgraded from version 1.42 to 1.43.
+
+The C99 math functions and constants (for example acosh, isinf, isnan, round,
+trunc; M_E, M_SQRT2, M_PI) have been added.
+
+=item *
+
+Scalar-List-Utils has been upgraded from version 1.39 to 1.41.
+
+A new module, L<Sub::Util>, has been added, containing functions related to
+CODE refs, including C<subname> (inspired by Sub::Identity) and C<set_subname>
+(copied and renamed from Sub::Name).
+
+The use of C<GetMagic> in C<List::Util::reduce()> has also been fixed.
+L<[cpan #63211]|https://rt.cpan.org/Ticket/Display.html?id=63211>
+
+=item *
+
+L<Term::ReadLine> has been upgraded from version 1.14 to 1.15.
+
+Faster checks are now made first in some if-statements.
+
+=item *
+
+L<Test::Harness> has been upgraded from version 3.32 to 3.33.
+
+Various documentation fixes.
+
+=item *
+
+L<Test::Simple> has been upgraded from version 1.001003 to 1.001006.
+
+Various documentation fixes.
+
+=item *
+
+L<threads> has been upgraded from version 1.95 to 1.96.
+
+No changes to installed files other than version bumps.
+
+=item *
+
+L<Time::Piece> has been upgraded from version 1.27 to 1.29.
+
+When pretty printing negative Time::Seconds, the "minus" is no longer lost.
+
+=item *
+
+L<version> has been upgraded from version 0.9908 to 0.9909.
+
+Numerous changes. See the F<Changes> file in the CPAN distribution for
+details.
+
+=back
+
+=head1 Documentation
+
+=head2 Changes to Existing Documentation
+
+=head3 L<perlfunc>
+
+=over 4
+
+=item *
+
+Calling C<delete> or C<exists> on array values is now described as "strongly
+discouraged" rather than "deprecated".
+
+=back
+
+=head3 L<perlpolicy>
+
+=over 4
+
+=item *
+
+The conditions for marking an experimental feature as non-experimental are now
+set out.
+
+=back
+
+=head3 L<perlrecharclass>
+
+=over 4
+
+=item *
+
+The documentation of Bracketed Character Classes has been expanded to cover the
+improvements in C<qr/[\N{named sequence}]/> (see under L</Selected Bug Fixes>).
+
+=back
+
+=head3 L<perlsyn>
+
+=over 4
+
+=item *
+
+An ambiguity in the documentation of the Ellipsis statement has been corrected.
+L<[perl #122661]|https://rt.perl.org/Ticket/Display.html?id=122661>
+
+=back
+
+=head3 L<perlxs>
+
+=over 4
+
+=item *
+
+Added a discussion of locale issues in XS code.
+
+=back
+
+=head1 Diagnostics
+
+The following additions or changes have been made to diagnostic output,
+including warnings and fatal error messages. For the complete list of
+diagnostic messages, see L<perldiag>.
+
+=head2 New Diagnostics
+
+=head3 New Warnings
+
+=over 4
+
+=item *
+
+L<Character in 'C' format overflow in pack|perldiag/"Character in 'C' format overflow in pack">
+
+(W pack) You tried converting an infinity or not-a-number to an unsigned
+character, which makes no sense. Perl behaved as if you tried to pack 0xFF.
+
+=item *
+
+L<Character in 'c' format overflow in pack|perldiag/"Character in 'c' format overflow in pack">
+
+(W pack) You tried converting an infinity or not-a-number to a signed
+character, which makes no sense. Perl behaved as if you tried to pack 0xFF.
+
+=item *
+
+L<Invalid number (%f) in chr|perldiag/"Invalid number (%f) in chr">
+
+(W utf8) You passed an invalid number (like an infinity or not-a-number) to
+C<chr>. Those are not valid character numbers, so it returned the Unicode
+replacement character (U+FFFD).
+
+=back
+
+=head2 Changes to Existing Diagnostics
+
+=over 4
+
+=item *
+
+L<Global symbol "%s" requires explicit package name|perldiag/"Global symbol "%s" requires explicit package name (did you forget to declare "my %s"?)">
+
+This message has had '(did you forget to declare "my %s"?)' appended to it, to
+make it more helpful to new Perl programmers.
+L<[perl #121638]|https://rt.perl.org/Ticket/Display.html?id=121638>
+
+=item *
+
+L<\N{} in character class restricted to one character in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>|perldiag/"\N{} in inverted character class or as a range end-point is restricted to one character in regex; marked by S<<-- HERE> in m/%s/">
+
+This message has had 'character class' changed to 'inverted character class or
+as a range end-point is' to reflect improvements in C<qr/[\N{named sequence}]/>
+(see under L</Selected Bug Fixes>).
+
+=item *
+
+L<panic: frexp|perldiag/"panic: frexp: %f">
+
+This message has had ': %f' appended to it, to show what the offending floating
+point number is.
+
+=back
+
+=head2 Diagnostic Removals
+
+=over 4
+
+=item *
+
+"Constant is not a FOO reference"
+
+Compile-time checking of constant dereferencing (e.g., C<< my_constant->() >>)
+has been removed, since it was not taking overloading into account.
+L<[perl #69456]|https://rt.perl.org/Ticket/Display.html?id=69456>
+L<[perl #122607]|https://rt.perl.org/Ticket/Display.html?id=122607>
+
+=item *
+
+"Ambiguous use of -foo resolved as -&foo()"
+
+There is actually no ambiguity here, and this impedes the use of negated
+constants; e.g., C<-Inf>.
+
+=back
+
+=head1 Configuration and Compilation
+
+=over 4
+
+=item *
+
+For long doubles (to get more precision and range for floating point numbers)
+one can now use the GCC quadmath library which implements the quadruple
+precision floating point numbers in x86 and ia64 platforms. See F<INSTALL> for
+details.
+
+=back
+
+=head1 Testing
+
+=over 4
+
+=item *
+
+A new test script, F<op/infnan.t>, has been added to test if Inf and NaN are
+working correctly. See L</Infinity and NaN (not-a-number) handling improved>.
+
+=item *
+
+A new test script, F<re/rt122747.t>, has been added to test that the fix for
+L<perl #122747|https://rt.perl.org/Ticket/Display.html?id=122747> is working.
+
+=back
+
+=head1 Internal Changes
+
+=over 4
+
+=item *
+
+C<save_re_context> no longer does anything and has been moved to F<mathoms.c>.
+
+=item *
+
+C<cv_name> is a new API function that can be passed a CV or GV. It returns an
+SV containing the name of the subroutine for use in diagnostics.
+L<[perl #116735]|https://rt.perl.org/Ticket/Display.html?id=116735>
+L<[perl #120441]|https://rt.perl.org/Ticket/Display.html?id=120441>
+
+=item *
+
+C<cv_set_call_checker_flags> is a new API function that works like
+C<cv_set_call_checker>, except that it allows the caller to specify whether the
+call checker requires a full GV for reporting the subroutine's name, or whether
+it could be passed a CV instead. Whatever value is passed will be acceptable
+to C<cv_name>. C<cv_set_call_checker> guarantees there will be a GV, but it
+may have to create one on the fly, which is inefficient.
+L<[perl #116735]|https://rt.perl.org/Ticket/Display.html?id=116735>
+
+=item *
+
+C<CvGV> (which is not part of the API) is now a more complex macro, which may
+call a function and reify a GV. For those cases where is has been used as a
+boolean, C<CvHASGV> has been added, which will return true for CVs that
+notionally have GVs, but without reifying the GV. C<CvGV> also returns a GV
+now for lexical subs.
+L<[perl #120441]|https://rt.perl.org/Ticket/Display.html?id=120441>
+
+=item *
+
+Added L<perlapi/sync_locale>. Changing the program's locale should be avoided
+by XS code. Nevertheless, certain non-Perl libraries called from XS, such as
+C<Gtk> do so. When this happens, Perl needs to be told that the locale has
+changed. Use this function to do so, before returning to Perl.
+
+=item *
+
+The defines and labels for the flags in the C<op_private> field of OPs are now
+auto-generated from data in F<regen/op_private>. The noticeable effect of this
+is that some of the flag output of C<Concise> might differ slightly, and the
+flag output of C<perl -Dx> may differ considerably (they both use the same set
+of labels now). Also in debugging builds, there is a new assert in
+C<op_free()> that checks that the op doesn't have any unrecognized flags set in
+C<op_private>.
+
+=back
+
+=head1 Selected Bug Fixes
+
+=over 4
+
+=item *
+
+Constant dereferencing now works correctly for typeglob constants. Previously
+the glob was stringified and its name looked up. Now the glob itself is used.
+L<[perl #69456]|https://rt.perl.org/Ticket/Display.html?id=69456>
+
+=item *
+
+When parsing a funny character ($ @ % &) followed by braces, the parser no
+longer tries to guess whether it is a block or a hash constructor (causing a
+syntax error when it guesses the latter), since it can only be a block.
+
+=item *
+
+C<undef $reference> now frees the referent immediately, instead of hanging on
+to it until the next statement.
+L<[perl #122556]|https://rt.perl.org/Ticket/Display.html?id=122556>
+
+=item *
+
+Various cases where the name of a sub is used (autoload, overloading, error
+messages) used to crash for lexical subs, but have been fixed.
+
+=item *
+
+Bareword lookup now tries to avoid vivifying packages if it turns out the
+bareword is not going to be a subroutine name.
+
+=item *
+
+Compilation of anonymous constants (e.g., C<sub () { 3 }>) no longer deletes
+any subroutine named C<__ANON__> in the current package. Not only was
+C<*__ANON__{CODE}> cleared, but there was a memory leak, too. This bug goes
+back to Perl 5.8.0.
+
+=item *
+
+Stub declarations like C<sub f;> and C<sub f ();> no longer wipe out constants
+of the same name declared by C<use constant>. This bug was introduced in Perl
+5.10.0.
+
+=item *
+
+Under some conditions a warning raised in compilation of regular expression
+patterns could be displayed multiple times. This is now fixed.
+
+=item *
+
+C<qr/[\N{named sequence}]/> now works properly in many instances. Some names
+known to C<\N{...}> refer to a sequence of multiple characters, instead of the
+usual single character. Bracketed character classes generally only match
+single characters, but now special handling has been added so that they can
+match named sequences, but not if the class is inverted or the sequence is
+specified as the beginning or end of a range. In these cases, the only
+behavior change from before is a slight rewording of the fatal error message
+given when this class is part of a C<?[...])> construct. When the C<[...]>
+stands alone, the same non-fatal warning as before is raised, and only the
+first character in the sequence is used, again just as before.
+
+=item *
+
+Tainted constants evaluated at compile time no longer cause unrelated
+statements to become tainted.
+L<[perl #122669]|https://rt.perl.org/Ticket/Display.html?id=122669>
+
+=item *
+
+C<open $$fh, ...>, which vivifies a handle with a name like "main::_GEN_0", was
+not giving the handle the right reference count, so a double free could happen.
+
+=item *
+
+When deciding that a bareword was a method name, the parser would get confused
+if an "our" sub with the same name existed, and look up the method in the
+package of the "our" sub, instead of the package of the invocant.
+
+=item *
+
+The parser no longer gets confused by C<\U=> within a double-quoted string. It
+used to produce a syntax error, but now compiles it correctly.
+L<[perl #80368]|https://rt.perl.org/Ticket/Display.html?id=80368>
+
+=item *
+
+It has always been the intention for the C<-B> and C<-T> file test operators to
+treat UTF-8 encoded files as text. (L<perlfunc|perlfunc/-X FILEHANDLE> has
+been updated to say this.) Previously, it was possible for some files to be
+considered UTF-8 that actually weren't valid UTF-8. This is now fixed. The
+operators now work on EBCDIC platforms as well.
+
+=item *
+
+Under some conditions warning messages raised during regular expression pattern
+compilation were being output more than once. This has now been fixed.
+
+=item *
+
+A regression has been fixed that was introduced in Perl 5.20.0 (fixed in Perl
+5.20.1 as well as here) in which a UTF-8 encoded regular expression pattern
+that contains a single ASCII lowercase letter does not match its uppercase
+counterpart.
+L<[perl #122655]|https://rt.perl.org/Ticket/Display.html?id=122655>
+
+=item *
+
+Constant folding could incorrectly suppress warnings if lexical warnings (C<use
+warnings> or C<no warnings>) were not in effect and C<$^W> were false at
+compile time and true at run time.
+
+=item *
+
+Loading UTF8 tables during a regular expression match could cause assertion
+failures under debugging builds if the previous match used the very same
+regular expression.
+L<[perl #122747]|https://rt.perl.org/Ticket/Display.html?id=122747>
+
+=item *
+
+Thread cloning used to work incorrectly for lexical subs, possibly causing
+crashes or double frees on exit.
+
+=item *
+
+Since Perl 5.14.0, deleting C<$SomePackage::{__ANON__}> and then undefining an
+anonymous subroutine could corrupt things internally, resulting in
+L<Devel::Peek> crashing or L<B.pm|B> giving nonsensical data. This has been
+fixed.
+
+=item *
+
+C<(caller $n)[3]> now reports names of lexical subs, instead of treating them
+as "(unknown)".
+
+=item *
+
+C<sort subname LIST> now supports lexical subs for the comparison routine.
+
+=item *
+
+Aliasing (e.g., via C<*x = *y>) could confuse list assignments that mention the
+two names for the same variable on either side, causing wrong values to be
+assigned.
+L<[perl #15667]|https://rt.perl.org/Ticket/Display.html?id=15667>
+
+=item *
+
+Long here-doc terminators could cause a bad read on short lines of input. This
+has been fixed. It is doubtful that any crash could have occurred. This bug
+goes back to when here-docs were introduced in Perl 3.000 twenty-five years
+ago.
+
+=item *
+
+An optimization in C<split> to treat C<split/^/> like C<split/^/m> had the
+unfortunate side-effect of also treating C<split/\A/> like C<split/^/m>, which
+it should not. This has been fixed. (Note, however, that C<split/^x/> does
+not behave like C<split/^x/m>, which is also considered to be a bug and will be
+fixed in a future version.)
+L<[perl #122761]|https://rt.perl.org/Ticket/Display.html?id=122761>
+
+=item *
+
+The little-known C<my Class $var> syntax (see L<fields> and L<attributes>)
+could get confused in the scope of C<use utf8> if C<Class> were a constant
+whose value contained Latin-1 characters.
+
+=back
+
+=head1 Acknowledgements
+
+Perl 5.21.4 represents approximately 4 weeks of development since Perl 5.21.3
+and contains approximately 29,000 lines of changes across 520 files from 30
+authors.
+
+Excluding auto-generated files, documentation and release tools, there were
+approximately 15,000 lines of changes to 390 .pm, .t, .c and .h files.
+
+Perl continues to flourish into its third decade thanks to a vibrant community
+of users and developers. The following people are known to have contributed
+the improvements that became Perl 5.21.4:
+
+Alberto Simões, Alexandre (Midnite) Jousset, Andy Dougherty, Anthony Heading,
+Brian Fraser, Chris 'BinGOs' Williams, Craig A. Berry, Daniel Dragan, David
+Mitchell, Doug Bell, Father Chrysostomos, George Greer, H.Merijn Brand, James E
+Keenan, Jarkko Hietaniemi, Jerry D. Hedden, Karen Etheridge, Karl Williamson,
+Olivier Mengué, Peter Martini, Reini Urban, Ricardo Signes, Steffen Müller,
+Steve Hay, Sullivan Beck, syber, Tadeusz Sośnierz, Tony Cook, Yves Orton,
+Ævar Arnfjörð Bjarmason.
+
+The list above is almost certainly incomplete as it is automatically generated
+from version control history. In particular, it does not include the names of
+the (very much appreciated) contributors who reported issues to the Perl bug
+tracker.
+
+Many of the changes included in this version originated in the CPAN modules
+included in Perl's core. We're grateful to the entire CPAN community for
+helping Perl to flourish.
+
+For a more complete list of all of Perl's historical contributors, please see
+the F<AUTHORS> file in the Perl source distribution.
+
+=head1 Reporting Bugs
+
+If you find what you think is a bug, you might check the articles recently
+posted to the comp.lang.perl.misc newsgroup and the perl bug database at
+https://rt.perl.org/ . There may also be information at
+http://www.perl.org/ , the Perl Home Page.
+
+If you believe you have an unreported bug, please run the L<perlbug> program
+included with your release. Be sure to trim your bug down to a tiny but
+sufficient test case. Your bug report, along with the output of C<perl -V>,
+will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
+
+If the bug you are reporting has security implications, which make it
+inappropriate to send to a publicly archived mailing list, then please send it
+to perl5-security-report@perl.org. This points to a closed subscription
+unarchived mailing list, which includes all the core committers, who will be
+able to help assess the impact of issues, figure out a resolution, and help
+co-ordinate the release of patches to mitigate or fix the problem across all
+platforms on which Perl is supported. Please only use this address for
+security issues in the Perl core, not for modules independently distributed on
+CPAN.
+
+=head1 SEE ALSO
+
+The F<Changes> file for an explanation of how to view exhaustive details on
+what changed.
+
+The F<INSTALL> file for how to build Perl.
+
+The F<README> file for general stuff.
+
+The F<Artistic> and F<Copying> files for copyright information.
+
+=cut
diff --git a/pod/perldelta.pod b/pod/perldelta.pod
index c92f4f3e4b..194d62c80b 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -2,364 +2,163 @@
=head1 NAME
-perldelta - what is new for perl v5.21.4
+[ this is a template for a new perldelta file. Any text flagged as XXX needs
+to be processed before release. ]
+
+perldelta - what is new for perl v5.21.5
=head1 DESCRIPTION
-This document describes differences between the 5.21.3 release and the 5.21.4
+This document describes differences between the 5.21.4 release and the 5.21.5
release.
-If you are upgrading from an earlier release such as 5.21.2, first read
-L<perl5213delta>, which describes differences between 5.21.2 and 5.21.3.
-
-=head1 Core Enhancements
-
-=head2 Infinity and NaN (not-a-number) handling improved
-
-Floating point values are able to hold the special values infinity (also
--infinity), and NaN (not-a-number). Now we more robustly recognize and
-propagate the value in computations, and on output normalize them to C<Inf> and
-C<NaN>.
-
-See also the L<POSIX> enhancements.
-
-=head1 Incompatible Changes
-
-=head2 Changes to the C<*> prototype
-
-The C<*> character in a subroutine's prototype used to allow barewords to take
-precedence over most, but not all subroutines. It was never consistent and
-exhibited buggy behaviour.
-
-Now it has been changed, so subroutines always take precedence over barewords,
-which brings it into conformity with similarly prototyped built-in functions:
-
- sub splat($) { ... }
- sub foo { ... }
- splat(foo); # now always splat(foo())
- splat(bar); # still splat('bar') as before
- close(foo); # close(foo())
- close(bar); # close('bar')
-
-=head1 Performance Enhancements
-
-=over 4
-
-=item *
-
-Subroutines with an empty prototype and bodies containing just C<undef> are now
-eligible for inlining.
-L<[perl #122728]|https://rt.perl.org/Ticket/Display.html?id=122728>
-
-=item *
-
-Subroutines in packages no longer need to carry typeglobs around with them.
-Declaring a subroutine will now put a simple sub reference in the stash if
-possible, saving memory. The typeglobs still notionally exist, so accessing
-them will cause the subroutine reference to be upgraded to a typeglob. This
-optimization does not currently apply to XSUBs or exported subroutines, and
-method calls will undo it, since they cache things in typeglobs.
-L<[perl #120441]|https://rt.perl.org/Ticket/Display.html?id=120441>
-
-=back
-
-=head1 Modules and Pragmata
-
-=head2 New Modules and Pragmata
-
-=over 4
-
-=item *
-
-L<B::Op_private> provides detailed information about the flags used in the
-C<op_private> field of perl opcodes.
-
-=back
-
-=head2 Updated Modules and Pragmata
-
-=over 4
-
-=item *
-
-L<Archive::Tar> has been upgraded from version 2.00 to 2.02.
-
-Tests can now be run in parallel.
-
-=item *
-
-L<Attribute::Handlers> has been upgraded from version 0.96 to 0.97.
-
-Internal changes to account for the fact that subroutines in packages no longer
-need to carry typeglobs around with them (see under L</Performance
-Enhancements>).
-
-=item *
-
-L<attributes> has been upgraded from version 0.22 to 0.23.
-
-The usage of C<memEQs> in the XS has been corrected.
-L<[perl #122701]|https://rt.perl.org/Ticket/Display.html?id=122701>
-
-=item *
-
-L<B> has been upgraded from version 1.50 to 1.51.
-
-It provides a new C<B::safename> function, based on the existing
-C<< B::GV->SAFENAME >>, that converts "\cOPEN" to "^OPEN".
-
-=item *
-
-L<B::Concise> has been upgraded from version 0.992 to 0.993.
-
-Internal changes to account for the fact that the defines and labels for the
-flags in the C<op_private> field of OPs are now auto-generated (see under
-L</Internal Changes>).
-
-=item *
-
-L<B::Deparse> has been upgraded from version 1.27 to 1.28.
-
-It now deparses C<our(I<LIST>)> and typed lexical (C<my Dog $spot>) correctly.
-
-=item *
+If you are upgrading from an earlier release such as 5.21.3, first read
+L<perl5214delta>, which describes differences between 5.21.3 and 5.21.4.
-L<bignum> has been upgraded from version 0.37 to 0.38.
+=head1 Notice
-An C<eval BLOCK> rather than an C<eval EXPR> is now used to see if we can find
-Math::BigInt::Lite.
+XXX Any important notices here
-=item *
-
-L<constant> has been upgraded from version 1.31 to 1.32.
-
-It now accepts fully-qualified constant names, allowing constants to be defined
-in packages other than the caller.
-
-=item *
-
-L<CPAN::Meta::Requirements> has been upgraded from version 2.126 to 2.128.
-
-Works around limitations in version::vpp detecting v-string magic and adds
-support for forthcoming L<ExtUtils::MakeMaker> bootstrap F<version.pm> for
-Perls older than 5.10.0.
-
-=item *
-
-L<Data::Dumper> has been upgraded from version 2.152 to 2.154.
-
-Fixes CVE-2014-4330 by adding a configuration variable/option to limit
-recursion when dumping deep data structures.
-
-=item *
-
-L<experimental> has been upgraded from version 0.008 to 0.010.
-
-Hardcodes features for Perls older than 5.15.7.
-
-=item *
-
-L<ExtUtils::CBuilder> has been upgraded from version 0.280217 to 0.280219.
-
-Fixes a regression on Android.
-L<[perl #122675]|https://rt.perl.org/Ticket/Display.html?id=122675>
-
-=item *
-
-L<ExtUtils::Install> has been upgraded from version 1.68 to 2.04.
-
-No changes to installed files other than version bumps.
-
-=item *
-
-L<ExtUtils::Manifest> has been upgraded from version 1.65 to 1.68.
-
-Fixes a bug with C<maniread()>'s handling of quoted filenames and improves
-C<manifind()> to follow symlinks.
-L<[perl #122415]|https://rt.perl.org/Ticket/Display.html?id=122415>
-
-=item *
-
-L<File::Find> has been upgraded from version 1.27 to 1.28.
-
-C<find()> and C<finddepth()> will now warn if passed inappropriate or
-misspelled options.
-
-=item *
-
-L<Getopt::Std> has been upgraded from version 1.10 to 1.11.
-
-Corrects a typo in the documentation.
-
-=item *
-
-L<HTTP::Tiny> has been upgraded from version 0.047 to 0.049.
-
-C<keep_alive> is now fork-safe and thread-safe.
-
-=item *
-
-L<IO> has been upgraded from version 1.33 to 1.34.
-
-The XS implementation has been fixed for the sake of older Perls.
-
-=item *
-
-L<IO::Socket::IP> has been upgraded from version 0.31 to 0.32.
-
-Implements Timeout for C<connect()>.
-L<[cpan #92075]|https://rt.cpan.org/Ticket/Display.html?id=92075>
-
-=item *
-
-L<Locale::Codes> has been upgraded from version 3.31 to 3.32.
-
-New codes have been added.
-
-=item *
-
-L<Math::BigInt> has been upgraded from version 1.9996 to 1.9997.
-
-The documentation now gives test examples using L<Test::More> rather than
-L<Test>.
+=head1 Core Enhancements
-=item *
+XXX New core language features go here. Summarize user-visible core language
+enhancements. Particularly prominent performance optimisations could go
+here, but most should go in the L</Performance Enhancements> section.
-L<Module::CoreList> has been upgraded from version 5.021003 to 5.20140920.
+[ List each enhancement as a =head2 entry ]
-Updated to cover the latest releases of Perl.
+=head1 Security
-=item *
+XXX Any security-related notices go here. In particular, any security
+vulnerabilities closed should be noted here rather than in the
+L</Selected Bug Fixes> section.
-L<overload> has been upgraded from version 1.22 to 1.23.
+[ List each security issue as a =head2 entry ]
-A redundant C<ref $sub> check has been removed.
+=head1 Incompatible Changes
-=item *
+XXX For a release on a stable branch, this section aspires to be:
-PathTools has been upgraded from version 3.49 to 3.50.
+ There are no changes intentionally incompatible with 5.XXX.XXX
+ If any exist, they are bugs, and we request that you submit a
+ report. See L</Reporting Bugs> below.
-A warning from the B<gcc> compiler is now avoided when building the XS.
+[ List each incompatible change as a =head2 entry ]
-=item *
+=head1 Deprecations
-L<Pod::Perldoc> has been upgraded from version 3.23 to 3.24.
+XXX Any deprecated features, syntax, modules etc. should be listed here.
-Filehandles opened for reading or writing now have C<:encoding(UTF-8)> set.
-L<[cpan #98019]|https://rt.cpan.org/Ticket/Display.html?id=98019>
+=head2 Module removals
-=item *
+XXX Remove this section if inapplicable.
-L<POSIX> has been upgraded from version 1.42 to 1.43.
+The following modules will be removed from the core distribution in a
+future release, and will at that time need to be installed from CPAN.
+Distributions on CPAN which require these modules will need to list them as
+prerequisites.
-The C99 math functions and constants (for example acosh, isinf, isnan, round,
-trunc; M_E, M_SQRT2, M_PI) have been added.
+The core versions of these modules will now issue C<"deprecated">-category
+warnings to alert you to this fact. To silence these deprecation warnings,
+install the modules in question from CPAN.
-=item *
+Note that these are (with rare exceptions) fine modules that you are encouraged
+to continue to use. Their disinclusion from core primarily hinges on their
+necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
+not usually on concerns over their design.
-Scalar-List-Utils has been upgraded from version 1.39 to 1.41.
+=over
-A new module, L<Sub::Util>, has been added, containing functions related to
-CODE refs, including C<subname> (inspired by Sub::Identity) and C<set_subname>
-(copied and renamed from Sub::Name).
+=item XXX
-The use of C<GetMagic> in C<List::Util::reduce()> has also been fixed.
-L<[cpan #63211]|https://rt.cpan.org/Ticket/Display.html?id=63211>
+XXX Note that deprecated modules should be listed here even if they are listed
+as an updated module in the L</Modules and Pragmata> section.
-=item *
+=back
-L<Term::ReadLine> has been upgraded from version 1.14 to 1.15.
+[ List each other deprecation as a =head2 entry ]
-Faster checks are now made first in some if-statements.
+=head1 Performance Enhancements
-=item *
+XXX Changes which enhance performance without changing behaviour go here.
+There may well be none in a stable release.
-L<Test::Harness> has been upgraded from version 3.32 to 3.33.
+[ List each enhancement as a =item entry ]
-Various documentation fixes.
+=over 4
=item *
-L<Test::Simple> has been upgraded from version 1.001003 to 1.001006.
-
-Various documentation fixes.
+XXX
-=item *
+=back
-L<threads> has been upgraded from version 1.95 to 1.96.
+=head1 Modules and Pragmata
-No changes to installed files other than version bumps.
+XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
+go here. If Module::CoreList is updated, generate an initial draft of the
+following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
+for important changes should then be added by hand. In an ideal world,
+dual-life modules would have a F<Changes> file that could be cribbed.
-=item *
+[ Within each section, list entries as a =item entry ]
-L<Time::Piece> has been upgraded from version 1.27 to 1.29.
+=head2 New Modules and Pragmata
-When pretty printing negative Time::Seconds, the "minus" is no longer lost.
+=over 4
=item *
-L<version> has been upgraded from version 0.9908 to 0.9909.
-
-Numerous changes. See the F<Changes> file in the CPAN distribution for
-details.
+XXX
=back
-=head1 Documentation
-
-=head2 Changes to Existing Documentation
-
-=head3 L<perlfunc>
+=head2 Updated Modules and Pragmata
=over 4
=item *
-Calling C<delete> or C<exists> on array values is now described as "strongly
-discouraged" rather than "deprecated".
+L<XXX> has been upgraded from version A.xx to B.yy.
=back
-=head3 L<perlpolicy>
+=head2 Removed Modules and Pragmata
=over 4
=item *
-The conditions for marking an experimental feature as non-experimental are now
-set out.
+XXX
=back
-=head3 L<perlrecharclass>
-
-=over 4
-
-=item *
+=head1 Documentation
-The documentation of Bracketed Character Classes has been expanded to cover the
-improvements in C<qr/[\N{named sequence}]/> (see under L</Selected Bug Fixes>).
+XXX Changes to files in F<pod/> go here. Consider grouping entries by
+file and be sure to link to the appropriate page, e.g. L<perlfunc>.
-=back
+=head2 New Documentation
-=head3 L<perlsyn>
+XXX Changes which create B<new> files in F<pod/> go here.
-=over 4
+=head3 L<XXX>
-=item *
+XXX Description of the purpose of the new file here
-An ambiguity in the documentation of the Ellipsis statement has been corrected.
-L<[perl #122661]|https://rt.perl.org/Ticket/Display.html?id=122661>
+=head2 Changes to Existing Documentation
-=back
+XXX Changes which significantly change existing files in F<pod/> go here.
+However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
+section.
-=head3 L<perlxs>
+=head3 L<XXX>
=over 4
=item *
-Added a discussion of locale issues in XS code.
+XXX Description of the change here
=back
@@ -369,373 +168,217 @@ The following additions or changes have been made to diagnostic output,
including warnings and fatal error messages. For the complete list of
diagnostic messages, see L<perldiag>.
-=head2 New Diagnostics
-
-=head3 New Warnings
-
-=over 4
+XXX New or changed warnings emitted by the core's C<C> code go here. Also
+include any changes in L<perldiag> that reconcile it to the C<C> code.
-=item *
-
-L<Character in 'C' format overflow in pack|perldiag/"Character in 'C' format overflow in pack">
-
-(W pack) You tried converting an infinity or not-a-number to an unsigned
-character, which makes no sense. Perl behaved as if you tried to pack 0xFF.
+=head2 New Diagnostics
-=item *
+XXX Newly added diagnostic messages go under here, separated into New Errors
+and New Warnings
-L<Character in 'c' format overflow in pack|perldiag/"Character in 'c' format overflow in pack">
+=head3 New Errors
-(W pack) You tried converting an infinity or not-a-number to a signed
-character, which makes no sense. Perl behaved as if you tried to pack 0xFF.
+=over 4
=item *
-L<Invalid number (%f) in chr|perldiag/"Invalid number (%f) in chr">
-
-(W utf8) You passed an invalid number (like an infinity or not-a-number) to
-C<chr>. Those are not valid character numbers, so it returned the Unicode
-replacement character (U+FFFD).
+XXX L<message|perldiag/"message">
=back
-=head2 Changes to Existing Diagnostics
+=head3 New Warnings
=over 4
=item *
-L<Global symbol "%s" requires explicit package name|perldiag/"Global symbol "%s" requires explicit package name (did you forget to declare "my %s"?)">
+XXX L<message|perldiag/"message">
-This message has had '(did you forget to declare "my %s"?)' appended to it, to
-make it more helpful to new Perl programmers.
-L<[perl #121638]|https://rt.perl.org/Ticket/Display.html?id=121638>
+=back
-=item *
+=head2 Changes to Existing Diagnostics
-L<\N{} in character class restricted to one character in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>|perldiag/"\N{} in inverted character class or as a range end-point is restricted to one character in regex; marked by S<<-- HERE> in m/%s/">
+XXX Changes (i.e. rewording) of diagnostic messages go here
-This message has had 'character class' changed to 'inverted character class or
-as a range end-point is' to reflect improvements in C<qr/[\N{named sequence}]/>
-(see under L</Selected Bug Fixes>).
+=over 4
=item *
-L<panic: frexp|perldiag/"panic: frexp: %f">
-
-This message has had ': %f' appended to it, to show what the offending floating
-point number is.
+XXX Describe change here
=back
-=head2 Diagnostic Removals
+=head1 Utility Changes
-=over 4
+XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
+Most of these are built within the directory F<utils>.
-=item *
+[ List utility changes as a =head2 entry for each utility and =item
+entries for each change
+Use L<XXX> with program names to get proper documentation linking. ]
-"Constant is not a FOO reference"
+=head2 L<XXX>
-Compile-time checking of constant dereferencing (e.g., C<< my_constant->() >>)
-has been removed, since it was not taking overloading into account.
-L<[perl #69456]|https://rt.perl.org/Ticket/Display.html?id=69456>
-L<[perl #122607]|https://rt.perl.org/Ticket/Display.html?id=122607>
+=over 4
=item *
-"Ambiguous use of -foo resolved as -&foo()"
-
-There is actually no ambiguity here, and this impedes the use of negated
-constants; e.g., C<-Inf>.
+XXX
=back
=head1 Configuration and Compilation
-=over 4
-
-=item *
-
-For long doubles (to get more precision and range for floating point numbers)
-one can now use the GCC quadmath library which implements the quadruple
-precision floating point numbers in x86 and ia64 platforms. See F<INSTALL> for
-details.
-
-=back
+XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
+go here. Any other changes to the Perl build process should be listed here.
+However, any platform-specific changes should be listed in the
+L</Platform Support> section, instead.
-=head1 Testing
+[ List changes as a =item entry ].
=over 4
=item *
-A new test script, F<op/infnan.t>, has been added to test if Inf and NaN are
-working correctly. See L</Infinity and NaN (not-a-number) handling improved>.
-
-=item *
-
-A new test script, F<re/rt122747.t>, has been added to test that the fix for
-L<perl #122747|https://rt.perl.org/Ticket/Display.html?id=122747> is working.
+XXX
=back
-=head1 Internal Changes
-
-=over 4
-
-=item *
-
-C<save_re_context> no longer does anything and has been moved to F<mathoms.c>.
-
-=item *
-
-C<cv_name> is a new API function that can be passed a CV or GV. It returns an
-SV containing the name of the subroutine for use in diagnostics.
-L<[perl #116735]|https://rt.perl.org/Ticket/Display.html?id=116735>
-L<[perl #120441]|https://rt.perl.org/Ticket/Display.html?id=120441>
-
-=item *
-
-C<cv_set_call_checker_flags> is a new API function that works like
-C<cv_set_call_checker>, except that it allows the caller to specify whether the
-call checker requires a full GV for reporting the subroutine's name, or whether
-it could be passed a CV instead. Whatever value is passed will be acceptable
-to C<cv_name>. C<cv_set_call_checker> guarantees there will be a GV, but it
-may have to create one on the fly, which is inefficient.
-L<[perl #116735]|https://rt.perl.org/Ticket/Display.html?id=116735>
-
-=item *
-
-C<CvGV> (which is not part of the API) is now a more complex macro, which may
-call a function and reify a GV. For those cases where is has been used as a
-boolean, C<CvHASGV> has been added, which will return true for CVs that
-notionally have GVs, but without reifying the GV. C<CvGV> also returns a GV
-now for lexical subs.
-L<[perl #120441]|https://rt.perl.org/Ticket/Display.html?id=120441>
-
-=item *
-
-Added L<perlapi/sync_locale>. Changing the program's locale should be avoided
-by XS code. Nevertheless, certain non-Perl libraries called from XS, such as
-C<Gtk> do so. When this happens, Perl needs to be told that the locale has
-changed. Use this function to do so, before returning to Perl.
-
-=item *
-
-The defines and labels for the flags in the C<op_private> field of OPs are now
-auto-generated from data in F<regen/op_private>. The noticeable effect of this
-is that some of the flag output of C<Concise> might differ slightly, and the
-flag output of C<perl -Dx> may differ considerably (they both use the same set
-of labels now). Also in debugging builds, there is a new assert in
-C<op_free()> that checks that the op doesn't have any unrecognized flags set in
-C<op_private>.
+=head1 Testing
-=back
+XXX Any significant changes to the testing of a freshly built perl should be
+listed here. Changes which create B<new> files in F<t/> go here as do any
+large changes to the testing harness (e.g. when parallel testing was added).
+Changes to existing files in F<t/> aren't worth summarizing, although the bugs
+that they represent may be covered elsewhere.
-=head1 Selected Bug Fixes
+[ List each test improvement as a =item entry ]
=over 4
=item *
-Constant dereferencing now works correctly for typeglob constants. Previously
-the glob was stringified and its name looked up. Now the glob itself is used.
-L<[perl #69456]|https://rt.perl.org/Ticket/Display.html?id=69456>
+XXX
-=item *
+=back
-When parsing a funny character ($ @ % &) followed by braces, the parser no
-longer tries to guess whether it is a block or a hash constructor (causing a
-syntax error when it guesses the latter), since it can only be a block.
+=head1 Platform Support
-=item *
+XXX Any changes to platform support should be listed in the sections below.
-C<undef $reference> now frees the referent immediately, instead of hanging on
-to it until the next statement.
-L<[perl #122556]|https://rt.perl.org/Ticket/Display.html?id=122556>
+[ Within the sections, list each platform as a =item entry with specific
+changes as paragraphs below it. ]
-=item *
+=head2 New Platforms
-Various cases where the name of a sub is used (autoload, overloading, error
-messages) used to crash for lexical subs, but have been fixed.
+XXX List any platforms that this version of perl compiles on, that previous
+versions did not. These will either be enabled by new files in the F<hints/>
+directories, or new subdirectories and F<README> files at the top level of the
+source tree.
-=item *
+=over 4
-Bareword lookup now tries to avoid vivifying packages if it turns out the
-bareword is not going to be a subroutine name.
+=item XXX-some-platform
-=item *
+XXX
-Compilation of anonymous constants (e.g., C<sub () { 3 }>) no longer deletes
-any subroutine named C<__ANON__> in the current package. Not only was
-C<*__ANON__{CODE}> cleared, but there was a memory leak, too. This bug goes
-back to Perl 5.8.0.
+=back
-=item *
+=head2 Discontinued Platforms
-Stub declarations like C<sub f;> and C<sub f ();> no longer wipe out constants
-of the same name declared by C<use constant>. This bug was introduced in Perl
-5.10.0.
+XXX List any platforms that this version of perl no longer compiles on.
-=item *
+=over 4
-Under some conditions a warning raised in compilation of regular expression
-patterns could be displayed multiple times. This is now fixed.
+=item XXX-some-platform
-=item *
+XXX
-C<qr/[\N{named sequence}]/> now works properly in many instances. Some names
-known to C<\N{...}> refer to a sequence of multiple characters, instead of the
-usual single character. Bracketed character classes generally only match
-single characters, but now special handling has been added so that they can
-match named sequences, but not if the class is inverted or the sequence is
-specified as the beginning or end of a range. In these cases, the only
-behavior change from before is a slight rewording of the fatal error message
-given when this class is part of a C<?[...])> construct. When the C<[...]>
-stands alone, the same non-fatal warning as before is raised, and only the
-first character in the sequence is used, again just as before.
+=back
-=item *
+=head2 Platform-Specific Notes
-Tainted constants evaluated at compile time no longer cause unrelated
-statements to become tainted.
-L<[perl #122669]|https://rt.perl.org/Ticket/Display.html?id=122669>
+XXX List any changes for specific platforms. This could include configuration
+and compilation changes or changes in portability/compatibility. However,
+changes within modules for platforms should generally be listed in the
+L</Modules and Pragmata> section.
-=item *
+=over 4
-C<open $$fh, ...>, which vivifies a handle with a name like "main::_GEN_0", was
-not giving the handle the right reference count, so a double free could happen.
+=item XXX-some-platform
-=item *
+XXX
-When deciding that a bareword was a method name, the parser would get confused
-if an "our" sub with the same name existed, and look up the method in the
-package of the "our" sub, instead of the package of the invocant.
+=back
-=item *
+=head1 Internal Changes
-The parser no longer gets confused by C<\U=> within a double-quoted string. It
-used to produce a syntax error, but now compiles it correctly.
-L<[perl #80368]|https://rt.perl.org/Ticket/Display.html?id=80368>
+XXX Changes which affect the interface available to C<XS> code go here. Other
+significant internal changes for future core maintainers should be noted as
+well.
-=item *
+[ List each change as a =item entry ]
-It has always been the intention for the C<-B> and C<-T> file test operators to
-treat UTF-8 encoded files as text. (L<perlfunc|perlfunc/-X FILEHANDLE> has
-been updated to say this.) Previously, it was possible for some files to be
-considered UTF-8 that actually weren't valid UTF-8. This is now fixed. The
-operators now work on EBCDIC platforms as well.
+=over 4
=item *
-Under some conditions warning messages raised during regular expression pattern
-compilation were being output more than once. This has now been fixed.
-
-=item *
+XXX
-A regression has been fixed that was introduced in Perl 5.20.0 (fixed in Perl
-5.20.1 as well as here) in which a UTF-8 encoded regular expression pattern
-that contains a single ASCII lowercase letter does not match its uppercase
-counterpart.
-L<[perl #122655]|https://rt.perl.org/Ticket/Display.html?id=122655>
+=back
-=item *
+=head1 Selected Bug Fixes
-Constant folding could incorrectly suppress warnings if lexical warnings (C<use
-warnings> or C<no warnings>) were not in effect and C<$^W> were false at
-compile time and true at run time.
+XXX Important bug fixes in the core language are summarized here. Bug fixes in
+files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
-=item *
+[ List each fix as a =item entry ]
-Loading UTF8 tables during a regular expression match could cause assertion
-failures under debugging builds if the previous match used the very same
-regular expression.
-L<[perl #122747]|https://rt.perl.org/Ticket/Display.html?id=122747>
+=over 4
=item *
-Thread cloning used to work incorrectly for lexical subs, possibly causing
-crashes or double frees on exit.
+XXX
-=item *
-
-Since Perl 5.14.0, deleting C<$SomePackage::{__ANON__}> and then undefining an
-anonymous subroutine could corrupt things internally, resulting in
-L<Devel::Peek> crashing or L<B.pm|B> giving nonsensical data. This has been
-fixed.
+=back
-=item *
+=head1 Known Problems
-C<(caller $n)[3]> now reports names of lexical subs, instead of treating them
-as "(unknown)".
+XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
+tests that had to be C<TODO>ed for the release would be noted here. Unfixed
+platform specific bugs also go here.
-=item *
+[ List each fix as a =item entry ]
-C<sort subname LIST> now supports lexical subs for the comparison routine.
+=over 4
=item *
-Aliasing (e.g., via C<*x = *y>) could confuse list assignments that mention the
-two names for the same variable on either side, causing wrong values to be
-assigned.
-L<[perl #15667]|https://rt.perl.org/Ticket/Display.html?id=15667>
-
-=item *
+XXX
-Long here-doc terminators could cause a bad read on short lines of input. This
-has been fixed. It is doubtful that any crash could have occurred. This bug
-goes back to when here-docs were introduced in Perl 3.000 twenty-five years
-ago.
+=back
-=item *
+=head1 Errata From Previous Releases
-An optimization in C<split> to treat C<split/^/> like C<split/^/m> had the
-unfortunate side-effect of also treating C<split/\A/> like C<split/^/m>, which
-it should not. This has been fixed. (Note, however, that C<split/^x/> does
-not behave like C<split/^x/m>, which is also considered to be a bug and will be
-fixed in a future version.)
-L<[perl #122761]|https://rt.perl.org/Ticket/Display.html?id=122761>
+=over 4
=item *
-The little-known C<my Class $var> syntax (see L<fields> and L<attributes>)
-could get confused in the scope of C<use utf8> if C<Class> were a constant
-whose value contained Latin-1 characters.
+XXX Add anything here that we forgot to add, or were mistaken about, in
+the perldelta of a previous release.
=back
-=head1 Acknowledgements
-
-Perl 5.21.4 represents approximately 4 weeks of development since Perl 5.21.3
-and contains approximately 29,000 lines of changes across 520 files from 30
-authors.
-
-Excluding auto-generated files, documentation and release tools, there were
-approximately 15,000 lines of changes to 390 .pm, .t, .c and .h files.
+=head1 Obituary
-Perl continues to flourish into its third decade thanks to a vibrant community
-of users and developers. The following people are known to have contributed
-the improvements that became Perl 5.21.4:
+XXX If any significant core contributor has died, we've added a short obituary
+here.
-Alberto Simões, Alexandre (Midnite) Jousset, Andy Dougherty, Anthony Heading,
-Brian Fraser, Chris 'BinGOs' Williams, Craig A. Berry, Daniel Dragan, David
-Mitchell, Doug Bell, Father Chrysostomos, George Greer, H.Merijn Brand, James E
-Keenan, Jarkko Hietaniemi, Jerry D. Hedden, Karen Etheridge, Karl Williamson,
-Olivier Mengué, Peter Martini, Reini Urban, Ricardo Signes, Steffen Müller,
-Steve Hay, Sullivan Beck, syber, Tadeusz Sośnierz, Tony Cook, Yves Orton,
-Ævar Arnfjörð Bjarmason.
-
-The list above is almost certainly incomplete as it is automatically generated
-from version control history. In particular, it does not include the names of
-the (very much appreciated) contributors who reported issues to the Perl bug
-tracker.
+=head1 Acknowledgements
-Many of the changes included in this version originated in the CPAN modules
-included in Perl's core. We're grateful to the entire CPAN community for
-helping Perl to flourish.
+XXX Generate this with:
-For a more complete list of all of Perl's historical contributors, please see
-the F<AUTHORS> file in the Perl source distribution.
+ perl Porting/acknowledgements.pl v5.21.4..HEAD
=head1 Reporting Bugs
diff --git a/vms/descrip_mms.template b/vms/descrip_mms.template
index b665af8c99..2271826c65 100644
--- a/vms/descrip_mms.template
+++ b/vms/descrip_mms.template
@@ -307,7 +307,7 @@ utils : $(utils1) $(utils2) $(utils3) $(utils4) $(utils5)
extra.pods : miniperl
@ @extra_pods.com
-PERLDELTA_CURRENT = [.pod]perl5214delta.pod
+PERLDELTA_CURRENT = [.pod]perl5215delta.pod
$(PERLDELTA_CURRENT) : [.pod]perldelta.pod
Copy/NoConfirm/Log $(MMS$SOURCE) $(PERLDELTA_CURRENT)
diff --git a/win32/Makefile b/win32/Makefile
index 5ffe7da646..a7c251fdb6 100644
--- a/win32/Makefile
+++ b/win32/Makefile
@@ -1155,7 +1155,7 @@ utils: $(PERLEXE) ..\utils\Makefile
copy ..\README.tw ..\pod\perltw.pod
copy ..\README.vos ..\pod\perlvos.pod
copy ..\README.win32 ..\pod\perlwin32.pod
- copy ..\pod\perldelta.pod ..\pod\perl5214delta.pod
+ copy ..\pod\perldelta.pod ..\pod\perl5215delta.pod
cd ..\win32
$(PERLEXE) $(PL2BAT) $(UTILS)
$(MINIPERL) -I..\lib ..\autodoc.pl ..
@@ -1251,7 +1251,7 @@ distclean: realclean
-if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
-if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
-cd $(PODDIR) && del /f *.html *.bat roffitall \
- perl5214delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+ perl5215delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \
perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \
diff --git a/win32/makefile.mk b/win32/makefile.mk
index 235bf257af..b15fd96a9a 100644
--- a/win32/makefile.mk
+++ b/win32/makefile.mk
@@ -1347,7 +1347,7 @@ utils: $(PERLEXE) ..\utils\Makefile
copy ..\README.tw ..\pod\perltw.pod
copy ..\README.vos ..\pod\perlvos.pod
copy ..\README.win32 ..\pod\perlwin32.pod
- copy ..\pod\perldelta.pod ..\pod\perl5214delta.pod
+ copy ..\pod\perldelta.pod ..\pod\perl5215delta.pod
$(PERLEXE) $(PL2BAT) $(UTILS)
$(MINIPERL) -I..\lib ..\autodoc.pl ..
$(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q ..
@@ -1442,7 +1442,7 @@ distclean: realclean
-if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
-if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
-cd $(PODDIR) && del /f *.html *.bat roffitall \
- perl5214delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+ perl5215delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \
perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \
diff --git a/win32/pod.mak b/win32/pod.mak
index 04435b6596..5e45ce7031 100644
--- a/win32/pod.mak
+++ b/win32/pod.mak
@@ -42,6 +42,7 @@ POD = perl.pod \
perl5212delta.pod \
perl5213delta.pod \
perl5214delta.pod \
+ perl5215delta.pod \
perl561delta.pod \
perl56delta.pod \
perl581delta.pod \
@@ -177,6 +178,7 @@ MAN = perl.man \
perl5212delta.man \
perl5213delta.man \
perl5214delta.man \
+ perl5215delta.man \
perl561delta.man \
perl56delta.man \
perl581delta.man \
@@ -312,6 +314,7 @@ HTML = perl.html \
perl5212delta.html \
perl5213delta.html \
perl5214delta.html \
+ perl5215delta.html \
perl561delta.html \
perl56delta.html \
perl581delta.html \
@@ -447,6 +450,7 @@ TEX = perl.tex \
perl5212delta.tex \
perl5213delta.tex \
perl5214delta.tex \
+ perl5215delta.tex \
perl561delta.tex \
perl56delta.tex \
perl581delta.tex \