perldelta: add perl5250delta
authorRicardo Signes <rjbs@cpan.org>
Wed, 27 Apr 2016 00:03:18 +0000 (20:03 -0400)
committerRicardo Signes <rjbs@cpan.org>
Sun, 8 May 2016 13:46:08 +0000 (09:46 -0400)
MANIFEST
Makefile.SH
pod/.gitignore
pod/perl.pod
pod/perl5240delta.pod [new file with mode: 0644]
pod/perldelta.pod
vms/descrip_mms.template
win32/GNUmakefile
win32/Makefile
win32/makefile.mk
win32/pod.mak

index c847f60..ee12651 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -4645,6 +4645,7 @@ pod/perl5203delta.pod             Perl changes in version 5.20.3
 pod/perl5220delta.pod          Perl changes in version 5.22.0
 pod/perl5221delta.pod          Perl changes in version 5.22.1
 pod/perl5222delta.pod          Perl changes in version 5.22.2
+pod/perl5240delta.pod          Perl changes in version 5.24.0
 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
index 916b332..c0e8da9 100755 (executable)
@@ -522,7 +522,7 @@ miniperl_objs = $(miniperl_objs_nodt) $(DTRACE_MINI_O)
 perllib_objs  = $(perllib_objs_nodt) $(DTRACE_PERLLIB_O)
 perlmain_objs = perlmain$(OBJ_EXT) $(DTRACE_MAIN_O)
 
-perltoc_pod_prereqs = extra.pods pod/perl5240delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod
+perltoc_pod_prereqs = extra.pods pod/perl5250delta.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
 
@@ -1085,9 +1085,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/perl5240delta.pod: pod/perldelta.pod
-       $(RMS) pod/perl5240delta.pod
-       $(LNS) perldelta.pod pod/perl5240delta.pod
+pod/perl5250delta.pod: pod/perldelta.pod
+       $(RMS) pod/perl5250delta.pod
+       $(LNS) perldelta.pod pod/perl5250delta.pod
 
 extra.pods: $(MINIPERL_EXE)
        -@test ! -f extra.pods || rm -f `cat extra.pods`
index cd6539f..9bc8414 100644 (file)
@@ -53,7 +53,7 @@
 /roffitall
 
 # generated
-/perl5240delta.pod
+/perl5250delta.pod
 /perlapi.pod
 /perlintern.pod
 *.html
index 181e7ca..671044e 100644 (file)
@@ -180,6 +180,7 @@ aux c2ph h2ph h2xs perlbug pl2pm pod2html pod2man splain xsubpp
 
     perlhist           Perl history records
     perldelta          Perl changes since previous version
+    perl5240delta      Perl changes in version 5.24.0
     perl5222delta      Perl changes in version 5.22.2
     perl5221delta      Perl changes in version 5.22.1
     perl5220delta      Perl changes in version 5.22.0
diff --git a/pod/perl5240delta.pod b/pod/perl5240delta.pod
new file mode 100644 (file)
index 0000000..a1e065d
--- /dev/null
@@ -0,0 +1,2199 @@
+=encoding utf8
+
+=head1 NAME
+
+perl5240delta - what is new for perl v5.24.0
+
+=head1 DESCRIPTION
+
+This document describes the differences between the 5.22.0 release and the
+5.24.0 release.
+
+=head1 Core Enhancements
+
+=head2 Postfix dereferencing is no longer experimental
+
+Using the C<postderef> and C<postderef_qq> features no longer emits a
+warning. Existing code that disables the C<experimental::postderef> warning
+category that they previously used will continue to work. The C<postderef>
+feature has no effect; all Perl code can use postfix dereferencing,
+regardless of what feature declarations are in scope. The C<5.24> feature
+bundle now includes the C<postderef_qq> feature.
+
+=head2 Unicode 8.0 is now supported
+
+For details on what is in this release, see
+L<http://www.unicode.org/versions/Unicode8.0.0/>.
+
+=head2 perl will now croak when closing an in-place output file fails
+
+Until now, failure to close the output file for an in-place edit was not
+detected, meaning that the input file could be clobbered without the edit being
+successfully completed.  Now, when the output file cannot be closed
+successfully, an exception is raised.
+
+=head2 New C<\b{lb}> boundary in regular expressions
+
+C<lb> stands for Line Break.  It is a Unicode property
+that determines where a line of text is suitable to break (typically so
+that it can be output without overflowing the available horizontal
+space).  This capability has long been furnished by the
+L<Unicode::LineBreak> module, but now a light-weight, non-customizable
+version that is suitable for many purposes is in core Perl.
+
+=head2 C<qr/(?[ ])/> now works in UTF-8 locales
+
+L<Extended Bracketed Character Classes|perlrecharclass/Extended Bracketed Character Classes>
+now will successfully compile when S<C<use locale>> is in effect.  The compiled
+pattern will use standard Unicode rules.  If the runtime locale is not a
+UTF-8 one, a warning is raised and standard Unicode rules are used
+anyway.  No tainting is done since the outcome does not actually depend
+on the locale.
+
+=head2 Integer shift (C<< << >> and C<< >> >>) now more explicitly defined
+
+Negative shifts are reverse shifts: left shift becomes right shift,
+and right shift becomes left shift.
+
+Shifting by the number of bits in a native integer (or more) is zero,
+except when the "overshift" is right shifting a negative value under
+C<use integer>, in which case the result is -1 (arithmetic shift).
+
+Until now negative shifting and overshifting have been undefined
+because they have relied on whatever the C implementation happens
+to do.  For example, for the overshift a common C behavior is
+"modulo shift":
+
+  1 >> 64 == 1 >> (64 % 64) == 1 >> 0 == 1  # Common C behavior.
+
+  # And the same for <<, while Perl now produces 0 for both.
+
+Now these behaviors are well-defined under Perl, regardless of what
+the underlying C implementation does.  Note, however, that you are still
+constrained by the native integer width: you need to know how far left you
+can go.  You can use for example:
+
+  use Config;
+  my $wordbits = $Config{uvsize} * 8;  # Or $Config{uvsize} << 3.
+
+If you need a more bits on the left shift, you can use for example
+the C<bigint> pragma, or the C<Bit::Vector> module from CPAN.
+
+=head2 printf and sprintf now allow reordered precision arguments
+
+That is, C<< sprintf '|%.*2$d|', 2, 3 >> now returns C<|002|>. This extends
+the existing reordering mechanism (which allows reordering for arguments
+that are used as format fields, widths, and vector separators).
+
+=head2 More fields provided to C<sigaction> callback with C<SA_SIGINFO>
+
+When passing the C<SA_SIGINFO> flag to L<sigaction|POSIX/sigaction>, the
+C<errno>, C<status>, C<uid>, C<pid>, C<addr> and C<band> fields are now
+included in the hash passed to the handler, if supported by the
+platform.
+
+=head2 Hashbang redirection to Perl 6
+
+Previously perl would redirect to another interpreter if it found a
+hashbang path unless the path contains "perl" (see L<perlrun>). To improve
+compatability with Perl 6 this behavior has been extended to also redirect
+if "perl" is followed by "6".
+
+=head1 Security
+
+=head2 Set proper umask before calling C<mkstemp(3)>
+
+In 5.22 perl started setting umask to 0600 before calling C<mkstemp(3)>
+and restoring it afterwards. This wrongfully tells C<open(2)> to strip
+the owner read and write bits from the given mode before applying it,
+rather than the intended negation of leaving only those bits in place.
+
+Systems that use mode 0666 in C<mkstemp(3)> (like old versions of
+glibc) create a file with permissions 0066, leaving world read and
+write permissions regardless of current umask.
+
+This has been fixed by using umask 0177 instead. [perl #127322]
+
+=head2 Fix out of boundary access in Win32 path handling
+
+This is CVE-2015-8608.  For more information see
+L<[perl #126755]|https://rt.perl.org/Ticket/Display.html?id=126755>
+
+=head2 Fix loss of taint in canonpath
+
+This is CVE-2015-8607.  For more information see
+L<[perl #126862]|https://rt.perl.org/Ticket/Display.html?id=126862>
+
+=head2 Avoid accessing uninitialized memory in win32 C<crypt()>
+
+Added validation that will detect both a short salt and invalid characters
+in the salt.
+L<[perl #126922]|https://rt.perl.org/Ticket/Display.html?id=126922>
+
+=head2 Remove duplicate environment variables from C<environ>
+
+Previously, if an environment variable appeared more than once in
+C<environ[]>, C<%ENV> would contain the last entry for that name,
+while a typical C<getenv()> would return the first entry. We now
+make sure C<%ENV> contains the same as what C<getenv> returns.
+
+Second, we remove duplicates from C<environ[]>, so if a setting
+with that name is set in C<%ENV>, we won't pass an unsafe value
+to a child process.
+
+[CVE-2016-2381]
+
+=head1 Incompatible Changes
+
+=head2 The C<autoderef> feature has been removed
+
+The experimental C<autoderef> feature (which allowed calling C<push>,
+C<pop>, C<shift>, C<unshift>, C<splice>, C<keys>, C<values>, and C<each> on
+a scalar argument) has been deemed unsuccessful. It has now been removed;
+trying to use the feature (or to disable the C<experimental::autoderef>
+warning it previously triggered) now yields an exception.
+
+=head2 Lexical $_ has been removed
+
+C<my $_> was introduced in Perl 5.10, and subsequently caused much confusion
+with no obvious solution.  In Perl 5.18.0, it was made experimental on the
+theory that it would either be removed or redesigned in a less confusing (but
+backward-incompatible) way.  Over the following years, no alternatives were
+proposed.  The feature has now been removed and will fail to compile.
+
+=head2 C<qr/\b{wb}/> is now tailored to Perl expectations
+
+This is now more suited to be a drop-in replacement for plain C<\b>, but
+giving better results for parsing natural language.  Previously it
+strictly followed the current Unicode rules which calls for it to match
+between each white space character.  Now it doesn't generally match
+within spans of white space, behaving like C<\b> does.  See
+L<perlrebackslash/\b{wb}>
+
+=head2 Regular expression compilation errors
+
+Some regular expression patterns that had runtime errors now
+don't compile at all.
+
+Almost all Unicode properties using the C<\p{}> and C<\P{}> regular
+expression pattern constructs are now checked for validity at pattern
+compilation time, and invalid ones will cause the program to not
+compile.  In earlier releases, this check was often deferred until run
+time.  Whenever an error check is moved from run- to compile time,
+erroneous code is caught 100% of the time, whereas before it would only
+get caught if and when the offending portion actually gets executed,
+which for unreachable code might be never.
+
+=head2 C<qr/\N{}/> now disallowed under C<use re "strict">
+
+An empty C<\N{}> makes no sense, but for backwards compatibility is
+accepted as doing nothing, though a deprecation warning is raised by
+default.  But now this is a fatal error under the experimental feature
+L<re/'strict' mode>.
+
+=head2 Nested declarations are now disallowed
+
+A C<my>, C<our>, or C<state> declaration is no longer allowed inside
+of another C<my>, C<our>, or C<state> declaration.
+
+For example, these are now fatal:
+
+   my ($x, my($y));
+   our (my $x);
+
+L<[perl #125587]|https://rt.perl.org/Ticket/Display.html?id=125587>
+
+L<[perl #121058]|https://rt.perl.org/Ticket/Display.html?id=121058>
+
+=head2 The C</\C/> character class has been removed.
+
+This regular expression character class was deprecated in v5.20.0 and has
+produced a deprecation warning since v5.22.0. It is now a compile-time
+error. If you need to examine the individual bytes that make up a
+UTF8-encoded character, then use C<utf8::encode()> on the string (or a
+copy) first.
+
+=head2 C<chdir('')> no longer chdirs home
+
+Using C<chdir('')> or C<chdir(undef)> to chdir home has been deprecated since
+perl v5.8, and will now fail.  Use C<chdir()> instead.
+
+=head2 ASCII characters in variable names must now be all visible
+
+It was legal until now on ASCII platforms for variable names to contain
+non-graphical ASCII control characters (ordinals 0 through 31, and 127,
+which are the C0 controls and C<DELETE>).  This usage has been
+deprecated since v5.20, and as of now causes a syntax error.  The
+variables these names referred to are special, reserved by Perl for
+whatever use it may choose, now, or in the future.  Each such variable
+has an alternative way of spelling it.  Instead of the single
+non-graphic control character, a two character sequence beginning with a
+caret is used, like C<$^]> and C<${^GLOBAL_PHASE}>.  Details are at
+L<perlvar>.   It remains legal, though unwise and deprecated (raising a
+deprecation warning), to use certain non-graphic non-ASCII characters in
+variables names when not under S<C<use utf8>>.  No code should do this,
+as all such variables are reserved by Perl, and Perl doesn't currently
+define any of them (but could at any time, without notice).
+
+=head2 An off by one issue in C<$Carp::MaxArgNums> has been fixed
+
+C<$Carp::MaxArgNums> is supposed to be the number of arguments to display.
+Prior to this version, it was instead showing C<$Carp::MaxArgNums> + 1 arguments,
+contrary to the documentation.
+
+=head2 Only blanks and tabs are now allowed within C<[...]> within C<(?[...])>.
+
+The experimental Extended Bracketed Character Classes can contain regular
+bracketed character classes within them.  These differ from regular ones in
+that white space is generally ignored, unless escaped by preceding it with a
+backslash.  The white space that is ignored is now limited to just tab C<\t>
+and SPACE characters.  Previously, it was any white space.  See
+L<perlrecharclass/Extended Bracketed Character Classes>.
+
+=head1 Deprecations
+
+=head2 Using code points above the platform's C<IV_MAX> is now deprecated
+
+Unicode defines code points in the range C<0..0x10FFFF>.  Some standards
+at one time defined them up to 2**31 - 1, but Perl has allowed them to
+be as high as anything that will fit in a word on the platform being
+used.  However, use of those above the platform's C<IV_MAX> is broken in
+some constructs, notably C<tr///>, regular expression patterns involving
+quantifiers, and in some arithmetic and comparison operations, such as
+being the upper limit of a loop.  Now the use of such code points raises
+a deprecation warning, unless that warning category is turned off.
+C<IV_MAX> is typically 2**31 -1 on 32-bit platforms, and 2**63-1 on
+64-bit ones.
+
+=head2 Doing bitwise operations on strings containing code points above
+0xFF is deprecated
+
+The string bitwise operators treat their operands as strings of bytes,
+and values beyond 0xFF are nonsensical in this context.  To operate on
+encoded bytes, first encode the strings.  To operate on code points'
+numeric values, use C<split> and C<map ord>.  In the future, this
+warning will be replaced by an exception.
+
+=head2 C<sysread()>, C<syswrite()>, C<recv()> and C<send()> are deprecated on
+:utf8 handles
+
+The C<sysread()>, C<recv()>, C<syswrite()> and C<send()> operators
+are deprecated on handles that have the C<:utf8> layer, either
+explicitly, or implicitly, eg., with the C<:encoding(UTF-16LE)> layer.
+
+Both C<sysread()> and C<recv()> currently use only the C<:utf8> flag for the
+stream, ignoring the actual layers.  Since C<sysread()> and C<recv()> do no
+UTF-8 validation they can end up creating invalidly encoded scalars.
+
+Similarly, C<syswrite()> and C<send()> use only the C<:utf8> flag, otherwise
+ignoring any layers.  If the flag is set, both write the value UTF-8
+encoded, even if the layer is some different encoding, such as the
+example above.
+
+Ideally, all of these operators would completely ignore the C<:utf8>
+state, working only with bytes, but this would result in silently
+breaking existing code.  To avoid this a future version of perl will
+throw an exception when any of C<sysread()>, C<recv()>, C<syswrite()> or C<send()>
+are called on handle with the C<:utf8> layer.
+
+=head1 Performance Enhancements
+
+=over 4
+
+=item *
+
+The overhead of scope entry and exit has been considerably reduced, so
+for example subroutine calls, loops and basic blocks are all faster now.
+This empty function call now takes about a third less time to execute:
+
+    sub f{} f();
+
+=item *
+
+Many languages, such as Chinese, are caseless.  Perl now knows about
+most common ones, and skips much of the work when
+a program tries to change case in them (like C<ucfirst()>) or match
+caselessly (C<qr//i>).  This will speed up a program, such as a web
+server, that can operate on multiple languages, while it is operating on a
+caseless one.
+
+=item *
+
+C</fixed-substr/> has been made much faster.
+
+On platforms with a libc C<memchr()> implementation which makes good use of
+underlying hardware support, patterns which include fixed substrings will now
+often be much faster; for example with glibc on a recent x86_64 CPU, this:
+
+    $s = "a" x 1000 . "wxyz";
+    $s =~ /wxyz/ for 1..30000
+
+is now about 7 times faster.  On systems with slow C<memchr()>, e.g. 32-bit ARM
+Raspberry Pi, there will be a small or little speedup.  Conversely, some
+pathological cases, such as C<"ab" x 1000 =~ /aa/> will be slower now; up to 3
+times slower on the rPi, 1.5x slower on x86_64.
+
+=item *
+
+Faster addition, subtraction and multiplication.
+
+Since 5.8.0, arithmetic became slower due to the need to support
+64-bit integers. To deal with 64-bit integers, a lot more corner
+cases need to be checked, which adds time. We now detect common
+cases where there is no need to check for those corner cases,
+and special-case them.
+
+=item *
+
+Preincrement, predecrement, postincrement, and postdecrement have been
+made faster by internally splitting the functions which handled multiple
+cases into different functions.
+
+=item *
+
+Creating Perl debugger data structures (see L<perldebguts/"Debugger Internals">)
+for XSUBs and const subs has been removed.  This removed one glob/scalar combo
+for each unique C<.c> file that XSUBs and const subs came from.  On startup
+(C<perl -e"0">) about half a dozen glob/scalar debugger combos were created.
+Loading XS modules created more glob/scalar combos.  These things were
+being created regardless of whether the perl debugger was being used,
+and despite the fact that it can't debug C code anyway
+
+=item *
+
+On Win32, C<stat>ing or C<-X>ing a path, if the file or directory does not
+exist, is now 3.5x faster than before.
+
+=item *
+
+Single arguments in list assign are now slightly faster:
+
+  ($x) = (...);
+  (...) = ($x);
+
+=item *
+
+Less peak memory is now used when compiling regular expression patterns.
+
+=back
+
+=head1 Modules and Pragmata
+
+=head2 Updated Modules and Pragmata
+
+=over
+
+=item *
+
+L<arybase> has been upgraded from version 0.10 to 0.11.
+
+=item *
+
+L<Attribute::Handlers> has been upgraded from version 0.97 to 0.99.
+
+=item *
+
+L<autodie> has been upgraded from version 2.26 to 2.29.
+
+=item *
+
+L<autouse> has been upgraded from version 1.08 to 1.11.
+
+=item *
+
+L<B> has been upgraded from version 1.58 to 1.62.
+
+=item *
+
+L<B::Deparse> has been upgraded from version 1.35 to 1.37.
+
+=item *
+
+L<base> has been upgraded from version 2.22 to 2.23.
+
+=item *
+
+L<Benchmark> has been upgraded from version 1.2 to 1.22.
+
+=item *
+
+L<bignum> has been upgraded from version 0.39 to 0.42.
+
+=item *
+
+L<bytes> has been upgraded from version 1.04 to 1.05.
+
+=item *
+
+L<Carp> has been upgraded from version 1.36 to 1.40.
+
+=item *
+
+L<Compress::Raw::Bzip2> has been upgraded from version 2.068 to 2.069.
+
+=item *
+
+L<Compress::Raw::Zlib> has been upgraded from version 2.068 to 2.069.
+
+=item *
+
+L<Config::Perl::V> has been upgraded from version 0.24 to 0.25.
+
+=item *
+
+L<CPAN::Meta> has been upgraded from version 2.150001 to 2.150005.
+
+=item *
+
+L<CPAN::Meta::Requirements> has been upgraded from version 2.132 to 2.140.
+
+=item *
+
+L<CPAN::Meta::YAML> has been upgraded from version 0.012 to 0.018.
+
+=item *
+
+L<Data::Dumper> has been upgraded from version 2.158 to 2.160.
+
+=item *
+
+L<Devel::Peek> has been upgraded from version 1.22 to 1.23.
+
+=item *
+
+L<Devel::PPPort> has been upgraded from version 3.31 to 3.32.
+
+=item *
+
+L<Dumpvalue> has been upgraded from version 1.17 to 1.18.
+
+=item *
+
+L<DynaLoader> has been upgraded from version 1.32 to 1.38.
+
+=item *
+
+L<Encode> has been upgraded from version 2.72 to 2.80.
+
+=item *
+
+L<encoding> has been upgraded from version 2.14 to 2.17.
+
+=item *
+
+L<encoding::warnings> has been upgraded from version 0.11 to 0.12.
+
+=item *
+
+L<English> has been upgraded from version 1.09 to 1.10.
+
+=item *
+
+L<Errno> has been upgraded from version 1.23 to 1.25.
+
+=item *
+
+L<experimental> has been upgraded from version 0.013 to 0.016.
+
+=item *
+
+L<ExtUtils::CBuilder> has been upgraded from version 0.280221 to 0.280225.
+
+=item *
+
+L<ExtUtils::Embed> has been upgraded from version 1.32 to 1.33.
+
+=item *
+
+L<ExtUtils::MakeMaker> has been upgraded from version 7.04_01 to 7.10_01.
+
+=item *
+
+L<ExtUtils::ParseXS> has been upgraded from version 3.28 to 3.31.
+
+=item *
+
+L<ExtUtils::Typemaps> has been upgraded from version 3.28 to 3.31.
+
+=item *
+
+L<feature> has been upgraded from version 1.40 to 1.42.
+
+=item *
+
+L<fields> has been upgraded from version 2.17 to 2.23.
+
+=item *
+
+L<File::Find> has been upgraded from version 1.29 to 1.34.
+
+=item *
+
+L<File::Glob> has been upgraded from version 1.24 to 1.26.
+
+=item *
+
+L<File::Path> has been upgraded from version 2.09 to 2.12_01.
+
+=item *
+
+L<File::Spec> has been upgraded from version 3.56 to 3.63.
+
+=item *
+
+L<Filter::Util::Call> has been upgraded from version 1.54 to 1.55.
+
+=item *
+
+L<Getopt::Long> has been upgraded from version 2.45 to 2.48.
+
+=item *
+
+L<Hash::Util> has been upgraded from version 0.18 to 0.19.
+
+=item *
+
+L<Hash::Util::FieldHash> has been upgraded from version 1.15 to 1.19.
+
+=item *
+
+L<HTTP::Tiny> has been upgraded from version 0.054 to 0.056.
+
+=item *
+
+L<I18N::Langinfo> has been upgraded from version 0.12 to 0.13.
+
+=item *
+
+L<if> has been upgraded from version 0.0604 to 0.0606.
+
+=item *
+
+L<IO> has been upgraded from version 1.35 to 1.36.
+
+=item *
+
+IO-Compress has been upgraded from version 2.068 to 2.069.
+
+=item *
+
+L<IPC::Open3> has been upgraded from version 1.18 to 1.20.
+
+=item *
+
+L<IPC::SysV> has been upgraded from version 2.04 to 2.06_01.
+
+=item *
+
+L<List::Util> has been upgraded from version 1.41 to 1.42_02.
+
+=item *
+
+L<locale> has been upgraded from version 1.06 to 1.08.
+
+=item *
+
+L<Locale::Codes> has been upgraded from version 3.34 to 3.37.
+
+=item *
+
+L<Math::BigInt> has been upgraded from version 1.9997 to 1.999715.
+
+=item *
+
+L<Math::BigInt::FastCalc> has been upgraded from version 0.31 to 0.40.
+
+=item *
+
+L<Math::BigRat> has been upgraded from version 0.2608 to 0.260802.
+
+=item *
+
+L<Module::CoreList> has been upgraded from version 5.20150520 to 5.20160320.
+
+=item *
+
+L<Module::Metadata> has been upgraded from version 1.000026 to 1.000031.
+
+=item *
+
+L<mro> has been upgraded from version 1.17 to 1.18.
+
+=item *
+
+L<ODBM_File> has been upgraded from version 1.12 to 1.14.
+
+=item *
+
+L<Opcode> has been upgraded from version 1.32 to 1.34.
+
+=item *
+
+L<parent> has been upgraded from version 0.232 to 0.234.
+
+=item *
+
+L<Parse::CPAN::Meta> has been upgraded from version 1.4414 to 1.4417.
+
+=item *
+
+L<Perl::OSType> has been upgraded from version 1.008 to 1.009.
+
+=item *
+
+L<perlfaq> has been upgraded from version 5.021009 to 5.021010.
+
+=item *
+
+L<PerlIO::encoding> has been upgraded from version 0.21 to 0.24.
+
+=item *
+
+L<PerlIO::mmap> has been upgraded from version 0.014 to 0.016.
+
+=item *
+
+L<PerlIO::scalar> has been upgraded from version 0.22 to 0.24.
+
+=item *
+
+L<PerlIO::via> has been upgraded from version 0.15 to 0.16.
+
+=item *
+
+L<Pod::Functions> has been upgraded from version 1.09 to 1.10.
+
+=item *
+
+L<Pod::Perldoc> has been upgraded from version 3.25 to 3.25_02.
+
+=item *
+
+L<Pod::Simple> has been upgraded from version 3.29 to 3.32.
+
+=item *
+
+L<Pod::Usage> has been upgraded from version 1.64 to 1.68.
+
+=item *
+
+L<POSIX> has been upgraded from version 1.53 to 1.65.
+
+=item *
+
+L<Scalar::Util> has been upgraded from version 1.41 to 1.42_02.
+
+=item *
+
+L<SDBM_File> has been upgraded from version 1.13 to 1.14.
+
+=item *
+
+L<SelfLoader> has been upgraded from version 1.22 to 1.23.
+
+=item *
+
+L<Socket> has been upgraded from version 2.018 to 2.020_03.
+
+=item *
+
+L<Storable> has been upgraded from version 2.53 to 2.56.
+
+=item *
+
+L<strict> has been upgraded from version 1.09 to 1.11.
+
+=item *
+
+L<Term::ANSIColor> has been upgraded from version 4.03 to 4.04.
+
+=item *
+
+L<Term::Cap> has been upgraded from version 1.15 to 1.17.
+
+=item *
+
+L<Test> has been upgraded from version 1.26 to 1.28.
+
+=item *
+
+L<Test::Harness> has been upgraded from version 3.35 to 3.36.
+
+=item *
+
+L<Thread::Queue> has been upgraded from version 3.05 to 3.08.
+
+=item *
+
+L<threads> has been upgraded from version 2.01 to 2.06.
+
+=item *
+
+L<threads::shared> has been upgraded from version 1.48 to 1.50.
+
+=item *
+
+L<Tie::File> has been upgraded from version 1.01 to 1.02.
+
+=item *
+
+L<Tie::Scalar> has been upgraded from version 1.03 to 1.04.
+
+=item *
+
+L<Time::HiRes> has been upgraded from version 1.9726 to 1.9732.
+
+=item *
+
+L<Time::Piece> has been upgraded from version 1.29 to 1.31.
+
+=item *
+
+L<Unicode::Collate> has been upgraded from version 1.12 to 1.14.
+
+=item *
+
+L<Unicode::Normalize> has been upgraded from version 1.18 to 1.25.
+
+=item *
+
+L<Unicode::UCD> has been upgraded from version 0.61 to 0.64.
+
+=item *
+
+L<UNIVERSAL> has been upgraded from version 1.12 to 1.13.
+
+=item *
+
+L<utf8> has been upgraded from version 1.17 to 1.19.
+
+=item *
+
+L<version> has been upgraded from version 0.9909 to 0.9916.
+
+=item *
+
+L<warnings> has been upgraded from version 1.32 to 1.36.
+
+=item *
+
+L<Win32> has been upgraded from version 0.51 to 0.52.
+
+=item *
+
+L<Win32API::File> has been upgraded from version 0.1202 to 0.1203.
+
+=item *
+
+L<XS::Typemap> has been upgraded from version 0.13 to 0.14.
+
+=item *
+
+L<XSLoader> has been upgraded from version 0.20 to 0.21.
+
+=back
+
+=head1 Documentation
+
+=head2 Changes to Existing Documentation
+
+=head3 L<perlapi>
+
+=over 4
+
+=item *
+
+The process of using undocumented globals has been documented, namely, that one
+should send email to L<perl5-porters@perl.org|mailto:perl5-porters@perl.org>
+first to get the go-ahead for documenting and using an undocumented function or
+global variable.
+
+=back
+
+=head3 L<perlcall>
+
+=over 4
+
+=item *
+
+A number of cleanups have been made to perlcall, including:
+
+=over 4
+
+=item *
+
+use C<EXTEND(SP, n)> and C<PUSHs()> instead of C<XPUSHs()> where applicable
+and update prose to match
+
+=item *
+
+add POPu, POPul and POPpbytex to the "complete list of POP macros"
+and clarify the documentation for some of the existing entries, and
+a note about side-effects
+
+=item *
+
+add API documentation for POPu and POPul
+
+=item *
+
+use ERRSV more efficiently
+
+=item *
+
+approaches to thread-safety storage of SVs.
+
+=back
+
+=back
+
+=head3 L<perlfunc>
+
+=over 4
+
+=item *
+
+The documentation of C<hex> has been revised to clarify valid inputs.
+
+=item *
+
+Better explain meaning of negative PIDs in C<waitpid>.
+L<[perl #127080]|https://rt.perl.org/Ticket/Display.html?id=127080>
+
+=item *
+
+General cleanup: there's more consistency now (in POD usage, grammar, code
+examples), better practices in code examples (use of C<my>, removal of bareword
+filehandles, dropped usage of C<&> when calling subroutines, ...), etc.
+
+=back
+
+=head3 L<perlguts>
+
+=over 4
+
+=item *
+
+A new section has been added, L<perlguts/"Dynamic Scope and the Context
+Stack">, which explains how the perl context stack works.
+
+=back
+
+=head3 L<perllocale>
+
+=over 4
+
+=item *
+
+A stronger caution about using locales in threaded applications is
+given.  Locales are not thread-safe, and you can get wrong results or
+even segfaults if you use them there.
+
+=back
+
+=head3 L<perlmodlib>
+
+=over 4
+
+=item *
+
+We now recommend contacting the module-authors list or PAUSE in seeking
+guidance on the naming of modules.
+
+=back
+
+=head3 L<perlop>
+
+=over 4
+
+=item *
+
+The documentation of C<qx//> now describes how C<$?> is affected.
+
+=back
+
+=head3 L<perlpolicy>
+
+=over 4
+
+=item *
+
+This note has been added to perlpolicy:
+
+ While civility is required, kindness is encouraged; if you have any
+ doubt about whether you are being civil, simply ask yourself, "Am I
+ being kind?" and aspire to that.
+
+=back
+
+=head3 L<perlreftut>
+
+=over 4
+
+=item *
+
+Fix some examples to be L<strict> clean.
+
+=back
+
+=head3 L<perlrebackslash>
+
+=over 4
+
+=item *
+
+Clarify that in languages like Japanese and Thai, dictionary lookup
+is required to determine word boundaries.
+
+=back
+
+=head3 L<perlsub>
+
+=over 4
+
+=item *
+
+Updated to note that anonymous subroutines can have signatures.
+
+=back
+
+=head3 L<perlsyn>
+
+=over 4
+
+=item *
+
+Fixed a broken example where C<=> was used instead of
+C<==> in conditional in do/while example.
+
+=back
+
+=head3 L<perltie>
+
+=over 4
+
+=item *
+
+The usage of C<FIRSTKEY> and C<NEXTKEY> has been clarified.
+
+=back
+
+=head3 L<perlunicode>
+
+=over 4
+
+=item *
+
+Discourage use of 'In' as a prefix signifying the Unicode Block property.
+
+=back
+
+=head3 L<perlvar>
+
+=over 4
+
+=item *
+
+The documentation of C<$@> was reworded to clarify that it is not just for
+syntax errors in C<eval>.
+L<[perl #124034]|https://rt.perl.org/Ticket/Display.html?id=124034>
+
+=item *
+
+The specific true value of C<$!{E...}> is now documented, noting that it is
+subject to change and not guaranteed.
+
+=item *
+
+Use of C<$OLD_PERL_VERSION> is now discouraged.
+
+=back
+
+=head3 L<perlxs>
+
+=over 4
+
+=item *
+
+The documentation of C<PROTOTYPES> has been corrected; they are I<disabled>
+by default, not I<enabled>.
+
+=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 Errors
+
+=over 4
+
+=item *
+
+L<%s must not be a named sequence in transliteration operator|perldiag/"%s must not be a named sequence in transliteration operator">
+
+=item *
+
+L<Can't find Unicode property definition "%s" in regex;|perldiag/"Can't find Unicode property definition "%s" in regex; marked by <-- HERE in m/%s/">
+
+=item *
+
+L<Can't redeclare "%s" in "%s"|perldiag/"Can't redeclare "%s" in "%s"">
+
+=item *
+
+L<Character following \p must be '{' or a single-character Unicode property name in regex;|perldiag/"Character following \%c must be '{' or a single-character Unicode property name in regex; marked by <-- HERE in m/%s/">
+
+=item *
+
+L<Empty \%c in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>
+|perldiag/"Empty \%c in regex; marked by <-- HERE in mE<sol>%sE<sol>">
+
+=item *
+
+L<Illegal user-defined property name|perldiag/"Illegal user-defined property name">
+
+=item *
+
+L<Invalid number '%s' for -C option.|perldiag/"Invalid number '%s' for -C option.">
+
+=item *
+
+L<<< Sequence (?... not terminated in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>|perldiag/"Sequence (?... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>" >>>
+
+=item *
+
+L<<< Sequence (?PE<lt>... not terminated in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>
+|perldiag/"Sequence (?PE<lt>... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>" >>>
+
+=item *
+
+L<Sequence (?PE<gt>... not terminated in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>
+|perldiag/"Sequence (?PE<gt>... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>">
+
+=back
+
+=head3 New Warnings
+
+=over 4
+
+=item *
+
+L<Assuming NOT a POSIX class since %s in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>|
+perldiag/Assuming NOT a POSIX class since %s in regex; marked by <-- HERE in mE<sol>%sE<sol>>
+
+=item *
+
+L<%s() is deprecated on :utf8 handles|perldiag/"%s() is deprecated on :utf8 handles">
+
+=back
+
+=head2 Changes to Existing Diagnostics
+
+=over 4
+
+=item *
+
+Accessing the C<IO> part of a glob as C<FILEHANDLE> instead of C<IO> is no
+longer deprecated.  It is discouraged to encourage uniformity (so that, for
+example, one can grep more easily) but it will not be removed.
+L<[perl #127060]|https://rt.perl.org/Ticket/Display.html?id=127060>
+
+=item *
+
+The diagnostic C<< Hexadecimal float: internal error >> has been changed to
+C<< Hexadecimal float: internal error (%s) >> to include more information.
+
+=item *
+
+L<Can't modify non-lvalue subroutine call of &%s|perldiag/"Can't modify non-lvalue subroutine call of &%s">
+
+This error now reports the name of the non-lvalue subroutine you attempted to
+use as an lvalue.
+
+=item *
+
+When running out of memory during an attempt the increase the stack
+size, previously, perl would die using the cryptic message
+C<< panic: av_extend_guts() negative count (-9223372036854775681) >>.
+This has been fixed to show the prettier message:
+L<< Out of memory during stack extend|perldiag/"Out of memory during %s extend" >>
+
+=back
+
+=head1 Configuration and Compilation
+
+=over 4
+
+=item *
+
+C<Configure> now acts as if the C<-O> option is always passed, allowing command
+line options to override saved configuration.  This should eliminate confusion
+when command line options are ignored for no obvious reason.  C<-O> is now
+permitted, but ignored.
+
+=item *
+
+Bison 3.0 is now supported.
+
+=item *
+
+F<Configure> no longer probes for F<libnm> by default.  Originally
+this was the "New Math" library, but the name has been re-used by the
+GNOME NetworkManager.
+L<[perl #127131]|https://rt.perl.org/Ticket/Display.html?id=127131>
+
+=item *
+
+Added F<Configure> probes for C<newlocale>, C<freelocale>, and C<uselocale>.
+
+=item *
+
+C<< PPPort.so/PPPort.dll >> no longer get installed, as they are
+not used by C<< PPPort.pm >>, only by its test files.
+
+=item *
+
+It is now possible to specify which compilation date to show on
+C<< perl -V >> output, by setting the macro C<< PERL_BUILD_DATE >>.
+
+=item *
+
+Using the C<NO_HASH_SEED> define in combination with the default hash algorithm
+C<PERL_HASH_FUNC_ONE_AT_A_TIME_HARD> resulted in a fatal error while compiling
+the interpreter, since Perl 5.17.10.  This has been fixed.
+
+=item *
+
+F<Configure> should handle spaces in paths a little better.
+
+=item *
+
+No longer generate EBCDIC POSIX-BC tables.  We don't believe anyone is
+using Perl and POSIX-BC at this time, and by not generating these tables
+it saves time during development, and makes the resulting tar ball smaller.
+
+=item *
+
+The GNU Make makefile for Win32 now supports parallel builds.  [perl #126632]
+
+=item *
+
+You can now build perl with MSVC++ on Win32 using GNU Make.  [perl #126632]
+
+=item *
+
+The Win32 miniperl now has a real C<getcwd> which increases build performance
+resulting in C<getcwd()> being 605x faster in Win32 miniperl.
+
+=item *
+
+Configure now takes C<-Dusequadmath> into account when calculating the
+C<alignbytes> configuration variable.  Previously the mis-calculated
+C<alignbytes> could cause alignment errors on debugging builds. [perl
+#127894]
+
+=back
+
+=head1 Testing
+
+=over 4
+
+=item *
+
+A new test (F<t/op/aassign.t>) has been added to test the list assignment operator
+C<OP_AASSIGN>.
+
+=item *
+
+Parallel building has been added to the dmake C<makefile.mk> makefile. All
+Win32 compilers are supported.
+
+=back
+
+=head1 Platform Support
+
+=head2 Platform-Specific Notes
+
+=over 4
+
+=item AmigaOS
+
+=over 4
+
+=item *
+
+The AmigaOS port has been reintegrated into the main tree, based off of
+Perl 5.22.1.
+
+=back
+
+=item Cygwin
+
+=over 4
+
+=item *
+
+Tests are more robust against unusual cygdrive prefixes.
+L<[perl #126834]|https://rt.perl.org/Ticket/Display.html?id=126834>
+
+=back
+
+=item EBCDIC
+
+=over 4
+
+=item UTF-EBCDIC extended
+
+UTF-EBCDIC is like UTF-8, but for EBCDIC platforms.  It now has been
+extended so that it can represent code points up to 2 ** 64 - 1 on
+platforms with 64-bit words.  This brings it into parity with UTF-8.
+This enhancement requires an incompatible change to the representation
+of code points in the range 2 ** 30 to 2 ** 31 -1 (the latter was the
+previous maximum representable code point).  This means that a file that
+contains one of these code points, written out with previous versions of
+perl cannot be read in, without conversion, by a perl containing this
+change.  We do not believe any such files are in existence, but if you
+do have one, submit a ticket at L<perlbug@perl.org|mailto:perlbug@perl.org>,
+and we will write a conversion script for you.
+
+=item EBCDIC C<cmp()> and C<sort()> fixed for UTF-EBCDIC strings
+
+Comparing two strings that were both encoded in UTF-8 (or more
+precisely, UTF-EBCDIC) did not work properly until now.  Since C<sort()>
+uses C<cmp()>, this fixes that as well.
+
+=item EBCDIC C<tr///> and C<y///> fixed for C<\N{}>, and C<S<use utf8>> ranges
+
+Perl v5.22 introduced the concept of portable ranges to regular
+expression patterns.  A portable range matches the same set of
+characters no matter what platform is being run on.  This concept is now
+extended to C<tr///>.  See
+C<L<trE<sol>E<sol>E<sol>|perlop/trE<sol>SEARCHLISTE<sol>REPLACEMENTLISTE<sol>cdsr>>.
+
+There were also some problems with these operations under S<C<use
+utf8>>, which are now fixed
+
+=back
+
+=item FreeBSD
+
+=over 4
+
+=item *
+
+Use the C<fdclose()> function from FreeBSD if it is available.
+L<[perl #126847]|https://rt.perl.org/Ticket/Display.html?id=126847>
+
+=back
+
+=item IRIX
+
+=over 4
+
+=item *
+
+Under some circumstances IRIX stdio C<fgetc()> and C<fread()> set the errno to
+C<ENOENT>, which made no sense according to either IRIX or POSIX docs.  Errno
+is now cleared in such cases.
+L<[perl #123977]|https://rt.perl.org/Ticket/Display.html?id=123977>
+
+=item *
+
+Problems when multiplying long doubles by infinity have been fixed.
+L<[perl #126396]|https://rt.perl.org/Ticket/Display.html?id=126396>
+
+=back
+
+=item MacOS X
+
+=over 4
+
+=item *
+
+Until now OS X builds of perl have specified a link target of 10.3 (Panther,
+2003) but have not specified a compiler target.  From now on, builds of perl on
+OS X 10.6 or later (Snow Leopard, 2008) by default capture the current OS X
+version and specify that as the explicit build target in both compiler and
+linker flags, thus preserving binary compatibility for extensions built later
+regardless of changes in OS X, SDK, or compiler and linker versions.  To
+override the default value used in the build and preserved in the flags,
+specify C<export MACOSX_DEPLOYMENT_TARGET=10.N> before configuring and building
+perl, where 10.N is the version of OS X you wish to target.  In OS X 10.5 or
+earlier there is no change to the behavior present when those systems were
+current; the link target is still OS X 10.3 and there is no explicit compiler
+target.
+
+=item *
+
+Builds with both -DDEBUGGING and threading enabled would fail with a
+"panic: free from wrong pool" error when built or tested from Terminal
+on OS X.  This was caused by perl's internal management of the
+environment conflicting with an atfork handler using the libc
+C<setenv()> function to update the environment.
+
+Perl now uses C<setenv()>/C<unsetenv()> to update the environment on OS X.
+L<[perl #126240]|https://rt.perl.org/Ticket/Display.html?id=126240>
+
+=back
+
+=item Solaris
+
+=over 4
+
+=item *
+
+All Solaris variants now build a shared libperl
+
+Solaris and variants like OpenIndiana now always build with the shared
+Perl library (Configure -Duseshrplib).  This was required for the
+OpenIndiana builds, but this has also been the setting for Oracle/Sun
+Perl builds for several years.
+
+=back
+
+=item Tru64
+
+=over 4
+
+=item *
+
+Workaround where Tru64 balks when prototypes are listed as
+C<< PERL_STATIC_INLINE >>, but where the test is build with
+C<< -DPERL_NO_INLINE_FUNCTIONS >>.
+
+=back
+
+=item VMS
+
+=over 4
+
+=item *
+
+On VMS, the math function prototypes in C<math.h> are now visible under C++.
+Now building the POSIX extension with C++ will no longer crash.
+
+=item *
+
+VMS has had C<setenv>/C<unsetenv> since v7.0 (released in 1996),
+C<Perl_vmssetenv> now always uses C<setenv>/C<unsetenv>.
+
+=item *
+
+Perl now implements its own C<killpg> by scanning for processes in the
+specified process group, which may not mean exactly the same thing as a Unix
+process group, but allows us to send a signal to a parent (or master) process
+and all of its sub-processes.  At the perl level, this means we can now send a
+negative pid like so:
+
+    kill SIGKILL, -$pid;
+
+to signal all processes in the same group as C<$pid>.
+
+=item *
+
+For those C<%ENV> elements based on the CRTL environ array, we've always
+preserved case when setting them but did look-ups only after upcasing the
+key first, which made lower- or mixed-case entries go missing. This problem
+has been corrected by making C<%ENV> elements derived from the environ array
+case-sensitive on look-up as well as case-preserving on store.
+
+=item *
+
+Environment look-ups for C<PERL5LIB> and C<PERLLIB> previously only
+considered logical names, but now consider all sources of C<%ENV> as
+determined by C<PERL_ENV_TABLES> and as documented in L<perlvms/%ENV>.
+
+=item *
+
+The minimum supported version of VMS is now v7.3-2, released in 2003.  As a
+side effect of this change, VAX is no longer supported as the terminal
+release of OpenVMS VAX was v7.3 in 2001.
+
+=back
+
+=item Win32
+
+=over 4
+
+=item *
+
+A new build option C<USE_NO_REGISTRY> has been added to the makefiles.  This
+option is off by default, meaning the default is to do Windows registry
+lookups.  This option stops Perl from looking inside the registry for anything.
+For what values are looked up in the registry see L<perlwin32>.  Internally, in
+C, the name of this option is C<WIN32_NO_REGISTRY>.
+
+=item *
+
+The behavior of Perl using C<HKEY_CURRENT_USER\Software\Perl> and
+C<HKEY_LOCAL_MACHINE\Software\Perl> to lookup certain values, including C<%ENV>
+vars starting with C<PERL> has changed.  Previously, the 2 keys were checked
+for entries at all times through the perl process's life time even if
+they did not
+exist.  For performance reasons, now, if the root key (i.e.
+C<HKEY_CURRENT_USER\Software\Perl> or C<HKEY_LOCAL_MACHINE\Software\Perl>) does
+not exist at process start time, it will not be checked again for C<%ENV>
+override entries for the remainder of the perl process's life.  This more
+closely matches Unix behavior in that the environment is copied or inherited
+on startup and changing the variable in the parent process or another process
+or editing F<.bashrc> will not change the environmental variable in other
+existing, running, processes.
+
+=item *
+
+One glob fetch was removed for each C<-X> or C<stat> call whether done from
+Perl code or internally from Perl's C code.  The glob being looked up was
+C<${^WIN32_SLOPPY_STAT}> which is a special variable.  This makes C<-X> and
+C<stat> slightly faster.
+
+=item *
+
+During miniperl's process startup, during the build process, 4 to 8 IO calls
+related to the process starting F<.pl> and the F<buildcustomize.pl> file were
+removed from the code opening and executing the first 1 or 2 F<.pl> files.
+
+=item *
+
+Builds using Microsoft Visual C++ 2003 and earlier no longer produce
+an "INTERNAL COMPILER ERROR" message.  [perl #126045]
+
+=item *
+
+Visual C++ 2013 builds will now execute on XP and higher. Previously they would
+only execute on Vista and higher.
+
+=item *
+
+You can now build perl with GNU Make and GCC.  [perl #123440]
+
+=item *
+
+C<truncate($filename, $size)> now works for files over 4GB in size.
+[perl #125347]
+
+=item *
+
+Parallel building has been added to the dmake C<makefile.mk> makefile. All
+Win32 compilers are supported.
+
+=item *
+
+Building a 64-bit perl with a 64-bit GCC but a 32-bit gmake would
+result in an invalid C<$Config{archname}> for the resulting perl.
+[perl #127584]
+
+=item *
+
+Errors set by Winsock functions are now put directly into C<$^E>, and the
+relevant C<WSAE*> error codes are now exported from the L<Errno> and L<POSIX>
+modules for testing this against.
+
+The previous behavior of putting the errors (converted to POSIX-style C<E*>
+error codes since Perl 5.20.0) into C<$!> was buggy due to the non-equivalence
+of like-named Winsock and POSIX error constants, a relationship between which
+has unfortunately been established in one way or another since Perl 5.8.0.
+
+The new behavior provides a much more robust solution for checking Winsock
+errors in portable software without accidentally matching POSIX tests that were
+intended for other OSes and may have different meanings for Winsock.
+
+The old behavior is currently retained, warts and all, for backwards
+compatibility, but users are encouraged to change any code that tests C<$!>
+against C<E*> constants for Winsock errors to instead test C<$^E> against
+C<WSAE*> constants.  After a suitable deprecation period, the old behavior may
+be removed, leaving C<$!> unchanged after Winsock function calls, to avoid any
+possible confusion over which error variable to check.
+
+=back
+
+=item ppc64el
+
+=over 4
+
+=item floating point
+
+The floating point format of ppc64el (Debian naming for little-endian
+PowerPC) is now detected correctly.
+
+=back
+
+=back
+
+=head1 Internal Changes
+
+=over 4
+
+=item *
+
+The implementation of perl's context stack system, and its internal API,
+have been heavily reworked. Note that no significant changes have been
+made to any external APIs, but XS code which relies on such internal
+details may need to be fixed. The main changes are:
+
+=over 4
+
+=item *
+
+The C<PUSHBLOCK()>, C<POPSUB()> etc. macros have been replaced with static
+inline functions such as C<cx_pushblock()>, C<cx_popsub()> etc. These use
+function args rather than implicitly relying on local vars such as
+C<gimme> and C<newsp> being available. Also their functionality has
+changed: in particular, C<cx_popblock()> no longer decrements
+C<cxstack_ix>. The ordering of the steps in the C<pp_leave*> functions
+involving C<cx_popblock()>, C<cx_popsub()> etc. has changed. See the new
+documentation, L<perlguts/"Dynamic Scope and the Context Stack">, for
+details on how to use them.
+
+=item *
+
+Various macros, which now consistently have a CX_ prefix, have been added:
+
+  CX_CUR(), CX_LEAVE_SCOPE(), CX_POP()
+
+or renamed:
+
+  CX_POP_SAVEARRAY(), CX_DEBUG(), CX_PUSHSUBST(), CX_POPSUBST()
+
+=item *
+
+C<cx_pushblock()> now saves C<PL_savestack_ix> and C<PL_tmps_floor>, so
+C<pp_enter*> and C<pp_leave*> no longer do
+
+  ENTER; SAVETMPS; ....; LEAVE
+
+=item *
+
+C<cx_popblock()> now also restores C<PL_curpm>.
+
+=item *
+
+In C<dounwind()> for every context type, the current savestack frame is
+now processed before each context is popped; formerly this was only done
+for sub-like context frames. This action has been removed from
+C<cx_popsub()> and placed into its own macro, C<CX_LEAVE_SCOPE(cx)>, which
+must be called before C<cx_popsub()> etc.
+
+C<dounwind()> now also does a C<cx_popblock()> on the last popped frame
+(formerly it only did the C<cx_popsub()> etc. actions on each frame).
+
+=item *
+
+The temps stack is now freed on scope exit; previously, temps created
+during the last statement of a block wouldn't be freed until the next
+C<nextstate> following the block (apart from an existing hack that did
+this for recursive subs in scalar context); and in something like
+C<f(g())>, the temps created by the last statement in C<g()> would
+formerly not be freed until the statement following the return from
+C<f()>.
+
+=item *
+
+Most values that were saved on the savestack on scope entry are now
+saved in suitable new fields in the context struct, and saved and
+restored directly by C<cx_pushfoo()> and C<cx_popfoo()>, which is much
+faster.
+
+=item *
+
+Various context struct fields have been added, removed or modified.
+
+=item *
+
+The handling of C<@_> in C<cx_pushsub()> and C<cx_popsub()> has been
+considerably tidied up, including removing the C<argarray> field from the
+context struct, and extracting out some common (but rarely used) code into
+a separate function, C<clear_defarray()>. Also, useful subsets of
+C<cx_popsub()> which had been unrolled in places like C<pp_goto> have been
+gathered into the new functions C<cx_popsub_args()> and
+C<cx_popsub_common()>.
+
+=item *
+
+C<pp_leavesub> and C<pp_leavesublv> now use the same function as the rest
+of the C<pp_leave*>'s to process return args.
+
+=item *
+
+C<CXp_FOR_PAD> and C<CXp_FOR_GV> flags have been added, and
+C<CXt_LOOP_FOR> has been split into C<CXt_LOOP_LIST>, C<CXt_LOOP_ARY>.
+
+=item *
+
+Some variables formerly declared by C<dMULTICALL> (but not documented) have
+been removed.
+
+=back
+
+=item *
+
+The obscure C<PL_timesbuf> variable, effectively a vestige of Perl 1, has
+been removed. It was documented as deprecated in Perl 5.20, with a statement
+that it would be removed early in the 5.21.x series; that has now finally
+happened.
+L<[perl #121351]|https://rt.perl.org/Ticket/Display.html?id=121351>
+
+=item *
+
+An unwarranted assertion in C<Perl_newATTRSUB_x()> has been removed.  If
+a stub subroutine
+definition with a prototype has been seen, then any subsequent stub (or
+definition) of the same subroutine with an attribute was causing an assertion
+failure because of a null pointer.
+L<[perl #126845]|https://rt.perl.org/Ticket/Display.html?id=126845>
+
+=item *
+
+C<::> has been replaced by C<__> in C<ExtUtils::ParseXS>, like it's done for
+parameters/return values. This is more consistent, and simplifies writing XS
+code wrapping C++ classes into a nested Perl namespace (it requires only
+a typedef for C<Foo__Bar> rather than two, one for C<Foo_Bar> and the other
+for C<Foo::Bar>).
+
+=item *
+
+The C<to_utf8_case()> function is now deprecated.  Instead use
+C<toUPPER_utf8>, C<toTITLE_utf8>, C<toLOWER_utf8>, and C<toFOLD_utf8>.
+(See L<http://nntp.perl.org/group/perl.perl5.porters/233287>.)
+
+=item *
+
+Perl core code and the threads extension have been annotated so that,
+if Perl is configured to use threads, then during compile-time clang (3.6
+or later) will warn about suspicious uses of mutexes.
+See L<http://clang.llvm.org/docs/ThreadSafetyAnalysis.html> for more
+information.
+
+=item *
+
+The C<signbit()> emulation has been enhanced.  This will help older
+and/or more exotic platforms or configurations.
+
+
+=item *
+
+Most EBCDIC-specific code in the core has been unified with non-EBCDIC
+code, to avoid repetition and make maintenance easier.
+
+=item *
+
+MSWin32 code for C<$^X> has been moved out of the F<win32> directory to
+F<caretx.c>, where other operating systems set that variable.
+
+=item *
+
+C<< sv_ref() >> is now part of the API.
+
+=item *
+
+L<perlapi/sv_backoff> had its return type changed from C<int> to C<void>.  It
+previously has always returned C<0> since Perl 5.000 stable but that was
+undocumented.  Although C<sv_backoff> is marked as public API, XS code is not
+expected to be impacted since the proper API call would be through public API
+C<sv_setsv(sv, &PL_sv_undef)>, or quasi-public C<SvOOK_off>, or non-public
+C<SvOK_off> calls, and the return value of C<sv_backoff> was previously a
+meaningless constant that can be rewritten as C<(sv_backoff(sv),0)>.
+
+=item *
+
+The C<EXTEND> and C<MEXTEND> macros have been improved to avoid various issues
+with integer truncation and wrapping.  In particular, some casts formerly used
+within the macros have been removed.  This means for example that passing an
+unsigned C<nitems> argument is likely to raise a compiler warning now
+(it's always been documented to require a signed value; formerly int,
+lately SSize_t).
+
+=item *
+
+C<PL_sawalias> and C<GPf_ALIASED_SV> have been removed.
+
+=item *
+
+C<GvASSIGN_GENERATION> and C<GvASSIGN_GENERATION_set> have been removed.
+
+=back
+
+=head1 Selected Bug Fixes
+
+=over 4
+
+=item *
+
+It now works properly to specify a user-defined property, such as
+
+ qr/\p{mypkg1::IsMyProperty}/i
+
+with C</i> caseless matching, an explicit package name, and
+I<IsMyProperty> not defined at the time of the pattern compilation.
+
+=item *
+
+Perl's C<memcpy()>, C<memmove()>, C<memset()> and C<memcmp()> fallbacks are now
+more compatible with the originals.  [perl #127619]
+
+=item *
+
+Fixed the issue where a C<< s///r >>) with B<< -DPERL_NO_COW >> attempts
+to modify the source SV, resulting in the program dying. [perl #127635]
+
+=item *
+
+Fixed an EBCDIC-platform-only case where a pattern could fail to match. This
+occurred when matching characters from the set of C1 controls when the
+target matched string was in UTF-8.
+
+=item *
+
+Narrow the filename check in F<strict.pm> and F<warnings.pm>. Previously,
+it assumed that if the filename (without the F<.pmc?> extension) differed
+from the package name, if was a misspelled use statement (i.e. C<use Strict>
+instead of C<use strict>). We now check whether there's really a 
+miscapitalization happening, and not some other issue.
+
+=item *
+
+Turn an assertion into a more user friendly failure when parsing
+regexes. [perl #127599]
+
+=item *
+
+Correctly raise an error when trying to compile patterns with 
+unterminated character classes while there are trailing backslashes.
+[perl #126141].
+
+=item *
+
+Line numbers larger than 2**31-1 but less than 2**32 are no longer
+returned by C<caller()> as negative numbers.  [perl #126991]
+
+=item *
+
+C<< unless ( I<assignment> ) >> now properly warns when syntax
+warnings are enabled.  [perl #127122]
+
+=item *
+
+Setting an C<ISA> glob to an array reference now properly adds
+C<isaelem> magic to any existing elements.  Previously modifying such
+an element would not update the ISA cache, so method calls would call
+the wrong function.  Perl would also crash if the C<ISA> glob was
+destroyed, since new code added in 5.23.7 would try to release the
+C<isaelem> magic from the elements.  [perl #127351]
+
+=item *
+
+If a here-doc was found while parsing another operator, the parser had
+already read end of file, and the here-doc was not terminated, perl
+could produce an assertion or a segmentation fault.  This now reliably
+complains about the unterminated here-doc.  [perl #125540]
+
+=item *
+
+C<untie()> would sometimes return the last value returned by the C<UNTIE()>
+handler as well as it's normal value, messing up the stack.  [perl
+#126621]
+
+=item *
+
+Fixed an operator precedence problem when C< castflags & 2> is true.
+[perl #127474]
+
+=item *
+
+Caching of DESTROY methods could result in a non-pointer or a
+non-STASH stored in the C<SvSTASH()> slot of a stash, breaking the B
+C<STASH()> method.  The DESTROY method is now cached in the MRO metadata
+for the stash.  [perl #126410]
+
+=item *
+
+The AUTOLOAD method is now called when searching for a DESTROY method,
+and correctly sets C<$AUTOLOAD> too.  [perl #124387]  [perl #127494]
+
+=item *
+
+Avoid parsing beyond the end of the buffer when processing a C<#line>
+directive with no filename.  [perl #127334]
+
+=item *
+
+Perl now raises a warning when a regular expression pattern looks like
+it was supposed to contain a POSIX class, like C<qr/[[:alpha:]]/>, but
+there was some slight defect in its specification which causes it to
+instead be treated as a regular bracketed character class.  An example
+would be missing the second colon in the above like this:
+C<qr/[[:alpha]]/>.  This compiles to match a sequence of two characters.
+The second is C<"]">, and the first is any of: C<"[">, C<":">, C<"a">,
+C<"h">, C<"l">, or C<"p">.   This is unlikely to be the intended
+meaning, and now a warning is raised.  No warning is raised unless the
+specification is very close to one of the 14 legal POSIX classes.  (See
+L<perlrecharclass/POSIX Character Classes>.)
+[perl #8904]
+
+=item *
+
+Certain regex patterns involving a complemented POSIX class in an
+inverted bracketed character class, and matching something else
+optionally would improperly fail to match.  An example of one that could
+fail is C<qr/_?[^\Wbar]\x{100}/>.  This has been fixed.
+[perl #127537]
+
+=item *
+
+Perl 5.22 added support to the C99 hexadecimal floating point notation,
+but sometimes misparses hex floats. This has been fixed.
+[perl #127183]
+
+=item *
+
+A regression that allowed undeclared barewords in hash keys to work despite
+strictures has been fixed.
+L<[perl #126981]|https://rt.perl.org/Ticket/Display.html?id=126981>
+
+=item *
+
+Calls to the placeholder C<&PL_sv_yes> used internally when an C<import()>
+or C<unimport()> method isn't found now correctly handle scalar context.
+L<[perl #126042]|https://rt.perl.org/Ticket/Display.html?id=126042>
+
+=item *
+
+Report more context when we see an array where we expect to see an
+operator and avoid an assertion failure.
+L<[perl #123737]|https://rt.perl.org/Ticket/Display.html?id=123737>
+
+=item *
+
+Modifying an array that was previously a package C<@ISA> no longer
+causes assertion failures or crashes.
+L<[perl #123788]|https://rt.perl.org/Ticket/Display.html?id=123788>
+
+=item *
+
+Retain binary compatibility across plain and DEBUGGING perl builds.
+L<[perl #127212]|https://rt.perl.org/Ticket/Display.html?id=127212>
+
+=item *
+
+Avoid leaking memory when setting C<$ENV{foo}> on darwin.
+L<[perl #126240]|https://rt.perl.org/Ticket/Display.html?id=126240>
+
+=item *
+
+C</...\G/> no longer crashes on utf8 strings. When C<\G> is a fixed number
+of characters from the start of the regex, perl needs to count back that
+many characters from the current C<pos()> position and start matching from
+there. However, it was counting back bytes rather than characters, which
+could lead to panics on utf8 strings.
+
+=item *
+
+In some cases operators that return integers would return negative
+integers as large positive integers.
+L<[perl #126635]|https://rt.perl.org/Ticket/Display.html?id=126635>
+
+=item *
+
+The C<pipe()> operator would assert for DEBUGGING builds instead of
+producing the correct error message.  The condition asserted on is
+detected and reported on correctly without the assertions, so the
+assertions were removed.
+L<[perl #126480]|https://rt.perl.org/Ticket/Display.html?id=126480>
+
+=item *
+
+In some cases, failing to parse a here-doc would attempt to use freed
+memory.  This was caused by a pointer not being restored correctly.
+L<[perl #126443]|https://rt.perl.org/Ticket/Display.html?id=126443>
+
+=item *
+
+C<< @x = sort { *a = 0; $a <=> $b } 0 .. 1 >> no longer frees the GP
+for *a before restoring its SV slot.
+L<[perl #124097]|https://rt.perl.org/Ticket/Display.html?id=124097>
+
+=item *
+
+Multiple problems with the new hexadecimal floating point printf
+format C<%a> were fixed:
+L<[perl #126582]|https://rt.perl.org/Ticket/Display.html?id=126582>,
+L<[perl #126586]|https://rt.perl.org/Ticket/Display.html?id=126586>,
+L<[perl #126822]|https://rt.perl.org/Ticket/Display.html?id=126822>
+
+=item *
+
+Calling C<mg_set()> in C<leave_scope()> no longer leaks.
+
+=item *
+
+A regression from Perl v5.20 was fixed in which debugging output of regular
+expression compilation was wrong.  (The pattern was correctly compiled, but
+what got displayed for it was wrong.)
+
+=item *
+
+C<\b{sb}> works much better.  In Perl v5.22.0, this new construct didn't
+seem to give the expected results, yet passed all the tests in the
+extensive suite furnished by Unicode.  It turns out that it was because
+these were short input strings, and the failures had to do with longer
+inputs.
+
+=item *
+
+Certain syntax errors in
+L<perlrecharclass/Extended Bracketed Character Classes> caused panics
+instead of the proper error message.  This has now been fixed. [perl
+#126481]
+
+=item *
+
+Perl 5.20 added a message when a quantifier in a regular
+expression was useless, but then caused the parser to skip it;
+this caused the surplus quantifier to be silently ignored, instead
+of throwing an error. This is now fixed. [perl #126253]
+
+=item *
+
+The switch to building non-XS modules last in win32/makefile.mk (introduced
+by design as part of the changes to enable parallel building) caused the
+build of POSIX to break due to problems with the version module. This
+is now fixed.
+
+=item *
+
+Improved parsing of hex float constants.
+
+=item *
+
+Fixed an issue with C<< pack >> where C<< pack "H" >> (and C<< pack "h" >>)
+could read past the source when given a non-utf8 source, and a utf8 target.
+[perl #126325]
+
+=item *
+
+Fixed several cases where perl would abort due to a segmentation fault,
+or a C-level assert. [perl #126615], [perl #126602], [perl #126193].
+
+=item *
+
+There were places in regular expression patterns where comments (C<(?#...)>)
+weren't allowed, but should have been.  This is now fixed.
+L<[perl #116639]|https://rt.perl.org/Ticket/Display.html?id=116639>
+
+=item *
+
+Some regressions from Perl 5.20 have been fixed, in which some syntax errors in
+L<C<(?[...])>|perlrecharclass/Extended Bracketed Character Classes> constructs
+within regular expression patterns could cause a segfault instead of a proper
+error message.
+L<[perl #126180]|https://rt.perl.org/Ticket/Display.html?id=126180>
+L<[perl #126404]|https://rt.perl.org/Ticket/Display.html?id=126404>
+
+=item *
+
+Another problem with
+L<C<(?[...])>|perlrecharclass/Extended Bracketed Character Classes>
+constructs has been fixed wherein things like C<\c]> could cause panics.
+L<[perl #126181]|https://rt.perl.org/Ticket/Display.html?id=126181>
+
+=item *
+
+Some problems with attempting to extend the perl stack to around 2G or 4G
+entries have been fixed.  This was particularly an issue on 32-bit perls built
+to use 64-bit integers, and was easily noticeable with the list repetition
+operator, e.g.
+
+    @a = (1) x $big_number
+
+Formerly perl may have crashed, depending on the exact value of C<$big_number>;
+now it will typically raise an exception.
+L<[perl #125937]|https://rt.perl.org/Ticket/Display.html?id=125937>
+
+=item *
+
+In a regex conditional expression C<(?(condition)yes-pattern|no-pattern)>, if
+the condition is C<(?!)> then perl failed the match outright instead of
+matching the no-pattern.  This has been fixed.
+L<[perl #126222]|https://rt.perl.org/Ticket/Display.html?id=126222>
+
+=item *
+
+The special backtracking control verbs C<(*VERB:ARG)> now all allow an optional
+argument and set C<REGERROR>/C<REGMARK> appropriately as well.
+L<[perl #126186]|https://rt.perl.org/Ticket/Display.html?id=126186>
+
+=item *
+
+Several bugs, including a segmentation fault, have been fixed with the boundary
+checking constructs (introduced in Perl 5.22) C<\b{gcb}>, C<\b{sb}>, C<\b{wb}>,
+C<\B{gcb}>, C<\B{sb}>, and C<\B{wb}>.  All the C<\B{}> ones now match an empty
+string; none of the C<\b{}> ones do.
+L<[perl #126319]|https://rt.perl.org/Ticket/Display.html?id=126319>
+
+=item *
+
+Duplicating a closed file handle for write no longer creates a
+filename of the form F<GLOB(0xXXXXXXXX)>.  [perl #125115]
+
+=item *
+
+Warning fatality is now ignored when rewinding the stack.  This
+prevents infinite recursion when the now fatal error also causes
+rewinding of the stack.  [perl #123398]
+
+=item * 
+
+In perl v5.22.0, the logic changed when parsing a numeric parameter to the -C
+option, such that the successfully parsed number was not saved as the option
+value if it parsed to the end of the argument.  [perl #125381]
+
+=item *
+
+The PadlistNAMES macro is an lvalue again.
+
+=item *
+
+Zero -DPERL_TRACE_OPS memory for sub-threads.
+
+C<perl_clone_using()> was missing Zero init of PL_op_exec_cnt[].  This
+caused sub-threads in threaded -DPERL_TRACE_OPS builds to spew exceedingly
+large op-counts at destruct.  These counts would print %x as "ABABABAB",
+clearly a mem-poison value.
+
+=item *
+
+A leak in the XS typemap caused one scalar to be leaked each time a C<FILE *>
+or a C<PerlIO *> was C<OUTPUT:>ed or imported to Perl, since perl 5.000. These
+particular typemap entries are thought to be extremely rarely used by XS
+modules. [perl #124181]
+
+=item *
+
+C<alarm()> and C<sleep()> will now warn if the argument is a negative number
+and return undef. Previously they would pass the negative value to the
+underlying C function which may have set up a timer with a surprising value.
+
+=item *
+
+Perl can again be compiled with any Unicode version.  This used to
+(mostly) work, but was lost in v5.18 through v5.20.  The property
+C<Name_Alias> did not exist prior to Unicode 5.0.  L<Unicode::UCD>
+incorrectly said it did.  This has been fixed.
+
+=item *
+
+Very large code-points (beyond Unicode) in regular expressions no
+longer cause a buffer overflow in some cases when converted to UTF-8.
+L<[perl #125826]|https://rt.perl.org/Ticket/Display.html?id=125826>
+
+=item *
+
+The integer overflow check for the range operator (...) in list
+context now correctly handles the case where the size of the range is
+larger than the address space.  This could happen on 32-bits with
+-Duse64bitint.
+L<[perl #125781]|https://rt.perl.org/Ticket/Display.html?id=125781>
+
+=item *
+
+A crash with C<< %::=(); J->${\"::"} >> has been fixed.
+L<[perl #125541]|https://rt.perl.org/Ticket/Display.html?id=125541>
+
+=item *
+
+C<qr/(?[ () ])/> no longer segfaults, giving a syntax error message instead.
+[perl #125805]
+
+=item *
+
+Regular expression possessive quantifier v5.20 regression now fixed.
+C<qr/>I<PAT>C<{>I<min>,I<max>C<}+>C</> is supposed to behave identically
+to C<qr/(?E<gt>>I<PAT>C<{>I<min>,I<max>C<})/>.  Since v5.20, this didn't
+work if I<min> and I<max> were equal.  [perl #125825]
+
+=item *
+
+C<< BEGIN <> >> no longer segfaults and properly produces an error
+message.  [perl #125341]
+
+=item *
+
+In C<tr///> an illegal backwards range like C<tr/\x{101}-\x{100}//> was
+not always detected, giving incorrect results.  This is now fixed.
+
+=back
+
+=head1 Acknowledgements
+
+Perl 5.24.0 represents approximately 11 months of development since Perl 5.24.0
+and contains approximately 360,000 lines of changes across 1,800 files from 75
+authors.
+
+Excluding auto-generated files, documentation and release tools, there were
+approximately 250,000 lines of changes to 1,200 .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.24.0:
+
+Aaron Crane, Aaron Priven, Abigail, Achim Gratz, Alexander D'Archangel, Alex
+Vandiver, Andreas König, Andy Broad, Andy Dougherty, Aristotle Pagaltzis,
+Chase Whitener, Chas. Owens, Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn
+Ilmari Mannsåker, Dan Collins, Daniel Dragan, David Golden, David Mitchell,
+Doug Bell, Dr.Ruud, Ed Avis, Ed J, Father Chrysostomos, Herbert Breunung,
+H.Merijn Brand, Hugo van der Sanden, Ivan Pozdeev, James E Keenan, Jan Dubois,
+Jarkko Hietaniemi, Jerry D. Hedden, Jim Cromie, John Peacock, John SJ Anderson,
+Karen Etheridge, Karl Williamson, kmx, Leon Timmermans, Ludovic E. R.
+Tolhurst-Cleaver, Lukas Mai, Martijn Lievaart, Matthew Horsfall, Mattia Barbon,
+Max Maischein, Mohammed El-Afifi, Nicholas Clark, Nicolas R., Niko Tyni, Peter
+John Acklam, Peter Martini, Peter Rabbitson, Pip Cet, Rafael Garcia-Suarez,
+Reini Urban, Ricardo Signes, Sawyer X, Shlomi Fish, Sisyphus, Stanislaw Pusep,
+Steffen Müller, Stevan Little, Steve Hay, Sullivan Beck, Thomas Sibley, Todd
+Rinaldo, Tom Hukins, Tony Cook, Unicode Consortium, Victor Adam, Vincent Pit,
+Vladimir Timofeev, Yves Orton, Zachary Storer, Zefram.
+
+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 see
+L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
+for details of how to report the issue.
+
+=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
index 9a86066..1f3e01a 100644 (file)
 
 =head1 NAME
 
-perldelta - what is new for perl v5.24.0
+perldelta - what is new for perl v5.25.0
 
 =head1 DESCRIPTION
 
-This document describes the differences between the 5.22.0 release and the
-5.24.0 release.
+This document describes differences between the 5.24.0 release and the 5.25.0
+release.
 
-=head1 Core Enhancements
+=head1 Changes Since v5.24.0
 
-=head2 Postfix dereferencing is no longer experimental
-
-Using the C<postderef> and C<postderef_qq> features no longer emits a
-warning. Existing code that disables the C<experimental::postderef> warning
-category that they previously used will continue to work. The C<postderef>
-feature has no effect; all Perl code can use postfix dereferencing,
-regardless of what feature declarations are in scope. The C<5.24> feature
-bundle now includes the C<postderef_qq> feature.
-
-=head2 Unicode 8.0 is now supported
-
-For details on what is in this release, see
-L<http://www.unicode.org/versions/Unicode8.0.0/>.
-
-=head2 perl will now croak when closing an in-place output file fails
-
-Until now, failure to close the output file for an in-place edit was not
-detected, meaning that the input file could be clobbered without the edit being
-successfully completed.  Now, when the output file cannot be closed
-successfully, an exception is raised.
-
-=head2 New C<\b{lb}> boundary in regular expressions
-
-C<lb> stands for Line Break.  It is a Unicode property
-that determines where a line of text is suitable to break (typically so
-that it can be output without overflowing the available horizontal
-space).  This capability has long been furnished by the
-L<Unicode::LineBreak> module, but now a light-weight, non-customizable
-version that is suitable for many purposes is in core Perl.
-
-=head2 C<qr/(?[ ])/> now works in UTF-8 locales
-
-L<Extended Bracketed Character Classes|perlrecharclass/Extended Bracketed Character Classes>
-now will successfully compile when S<C<use locale>> is in effect.  The compiled
-pattern will use standard Unicode rules.  If the runtime locale is not a
-UTF-8 one, a warning is raised and standard Unicode rules are used
-anyway.  No tainting is done since the outcome does not actually depend
-on the locale.
-
-=head2 Integer shift (C<< << >> and C<< >> >>) now more explicitly defined
-
-Negative shifts are reverse shifts: left shift becomes right shift,
-and right shift becomes left shift.
-
-Shifting by the number of bits in a native integer (or more) is zero,
-except when the "overshift" is right shifting a negative value under
-C<use integer>, in which case the result is -1 (arithmetic shift).
-
-Until now negative shifting and overshifting have been undefined
-because they have relied on whatever the C implementation happens
-to do.  For example, for the overshift a common C behavior is
-"modulo shift":
-
-  1 >> 64 == 1 >> (64 % 64) == 1 >> 0 == 1  # Common C behavior.
-
-  # And the same for <<, while Perl now produces 0 for both.
-
-Now these behaviors are well-defined under Perl, regardless of what
-the underlying C implementation does.  Note, however, that you are still
-constrained by the native integer width: you need to know how far left you
-can go.  You can use for example:
-
-  use Config;
-  my $wordbits = $Config{uvsize} * 8;  # Or $Config{uvsize} << 3.
-
-If you need a more bits on the left shift, you can use for example
-the C<bigint> pragma, or the C<Bit::Vector> module from CPAN.
-
-=head2 printf and sprintf now allow reordered precision arguments
-
-That is, C<< sprintf '|%.*2$d|', 2, 3 >> now returns C<|002|>. This extends
-the existing reordering mechanism (which allows reordering for arguments
-that are used as format fields, widths, and vector separators).
-
-=head2 More fields provided to C<sigaction> callback with C<SA_SIGINFO>
-
-When passing the C<SA_SIGINFO> flag to L<sigaction|POSIX/sigaction>, the
-C<errno>, C<status>, C<uid>, C<pid>, C<addr> and C<band> fields are now
-included in the hash passed to the handler, if supported by the
-platform.
-
-=head2 Hashbang redirection to Perl 6
-
-Previously perl would redirect to another interpreter if it found a
-hashbang path unless the path contains "perl" (see L<perlrun>). To improve
-compatability with Perl 6 this behavior has been extended to also redirect
-if "perl" is followed by "6".
-
-=head1 Security
-
-=head2 Set proper umask before calling C<mkstemp(3)>
-
-In 5.22 perl started setting umask to 0600 before calling C<mkstemp(3)>
-and restoring it afterwards. This wrongfully tells C<open(2)> to strip
-the owner read and write bits from the given mode before applying it,
-rather than the intended negation of leaving only those bits in place.
-
-Systems that use mode 0666 in C<mkstemp(3)> (like old versions of
-glibc) create a file with permissions 0066, leaving world read and
-write permissions regardless of current umask.
-
-This has been fixed by using umask 0177 instead. [perl #127322]
-
-=head2 Fix out of boundary access in Win32 path handling
-
-This is CVE-2015-8608.  For more information see
-L<[perl #126755]|https://rt.perl.org/Ticket/Display.html?id=126755>
-
-=head2 Fix loss of taint in canonpath
-
-This is CVE-2015-8607.  For more information see
-L<[perl #126862]|https://rt.perl.org/Ticket/Display.html?id=126862>
-
-=head2 Avoid accessing uninitialized memory in win32 C<crypt()>
-
-Added validation that will detect both a short salt and invalid characters
-in the salt.
-L<[perl #126922]|https://rt.perl.org/Ticket/Display.html?id=126922>
-
-=head2 Remove duplicate environment variables from C<environ>
-
-Previously, if an environment variable appeared more than once in
-C<environ[]>, C<%ENV> would contain the last entry for that name,
-while a typical C<getenv()> would return the first entry. We now
-make sure C<%ENV> contains the same as what C<getenv> returns.
-
-Second, we remove duplicates from C<environ[]>, so if a setting
-with that name is set in C<%ENV>, we won't pass an unsafe value
-to a child process.
-
-[CVE-2016-2381]
-
-=head1 Incompatible Changes
-
-=head2 The C<autoderef> feature has been removed
-
-The experimental C<autoderef> feature (which allowed calling C<push>,
-C<pop>, C<shift>, C<unshift>, C<splice>, C<keys>, C<values>, and C<each> on
-a scalar argument) has been deemed unsuccessful. It has now been removed;
-trying to use the feature (or to disable the C<experimental::autoderef>
-warning it previously triggered) now yields an exception.
-
-=head2 Lexical $_ has been removed
-
-C<my $_> was introduced in Perl 5.10, and subsequently caused much confusion
-with no obvious solution.  In Perl 5.18.0, it was made experimental on the
-theory that it would either be removed or redesigned in a less confusing (but
-backward-incompatible) way.  Over the following years, no alternatives were
-proposed.  The feature has now been removed and will fail to compile.
-
-=head2 C<qr/\b{wb}/> is now tailored to Perl expectations
-
-This is now more suited to be a drop-in replacement for plain C<\b>, but
-giving better results for parsing natural language.  Previously it
-strictly followed the current Unicode rules which calls for it to match
-between each white space character.  Now it doesn't generally match
-within spans of white space, behaving like C<\b> does.  See
-L<perlrebackslash/\b{wb}>
-
-=head2 Regular expression compilation errors
-
-Some regular expression patterns that had runtime errors now
-don't compile at all.
-
-Almost all Unicode properties using the C<\p{}> and C<\P{}> regular
-expression pattern constructs are now checked for validity at pattern
-compilation time, and invalid ones will cause the program to not
-compile.  In earlier releases, this check was often deferred until run
-time.  Whenever an error check is moved from run- to compile time,
-erroneous code is caught 100% of the time, whereas before it would only
-get caught if and when the offending portion actually gets executed,
-which for unreachable code might be never.
-
-=head2 C<qr/\N{}/> now disallowed under C<use re "strict">
-
-An empty C<\N{}> makes no sense, but for backwards compatibility is
-accepted as doing nothing, though a deprecation warning is raised by
-default.  But now this is a fatal error under the experimental feature
-L<re/'strict' mode>.
-
-=head2 Nested declarations are now disallowed
-
-A C<my>, C<our>, or C<state> declaration is no longer allowed inside
-of another C<my>, C<our>, or C<state> declaration.
-
-For example, these are now fatal:
-
-   my ($x, my($y));
-   our (my $x);
-
-L<[perl #125587]|https://rt.perl.org/Ticket/Display.html?id=125587>
-
-L<[perl #121058]|https://rt.perl.org/Ticket/Display.html?id=121058>
-
-=head2 The C</\C/> character class has been removed.
-
-This regular expression character class was deprecated in v5.20.0 and has
-produced a deprecation warning since v5.22.0. It is now a compile-time
-error. If you need to examine the individual bytes that make up a
-UTF8-encoded character, then use C<utf8::encode()> on the string (or a
-copy) first.
-
-=head2 C<chdir('')> no longer chdirs home
-
-Using C<chdir('')> or C<chdir(undef)> to chdir home has been deprecated since
-perl v5.8, and will now fail.  Use C<chdir()> instead.
-
-=head2 ASCII characters in variable names must now be all visible
-
-It was legal until now on ASCII platforms for variable names to contain
-non-graphical ASCII control characters (ordinals 0 through 31, and 127,
-which are the C0 controls and C<DELETE>).  This usage has been
-deprecated since v5.20, and as of now causes a syntax error.  The
-variables these names referred to are special, reserved by Perl for
-whatever use it may choose, now, or in the future.  Each such variable
-has an alternative way of spelling it.  Instead of the single
-non-graphic control character, a two character sequence beginning with a
-caret is used, like C<$^]> and C<${^GLOBAL_PHASE}>.  Details are at
-L<perlvar>.   It remains legal, though unwise and deprecated (raising a
-deprecation warning), to use certain non-graphic non-ASCII characters in
-variables names when not under S<C<use utf8>>.  No code should do this,
-as all such variables are reserved by Perl, and Perl doesn't currently
-define any of them (but could at any time, without notice).
-
-=head2 An off by one issue in C<$Carp::MaxArgNums> has been fixed
-
-C<$Carp::MaxArgNums> is supposed to be the number of arguments to display.
-Prior to this version, it was instead showing C<$Carp::MaxArgNums> + 1 arguments,
-contrary to the documentation.
-
-=head2 Only blanks and tabs are now allowed within C<[...]> within C<(?[...])>.
-
-The experimental Extended Bracketed Character Classes can contain regular
-bracketed character classes within them.  These differ from regular ones in
-that white space is generally ignored, unless escaped by preceding it with a
-backslash.  The white space that is ignored is now limited to just tab C<\t>
-and SPACE characters.  Previously, it was any white space.  See
-L<perlrecharclass/Extended Bracketed Character Classes>.
-
-=head1 Deprecations
-
-=head2 Using code points above the platform's C<IV_MAX> is now deprecated
-
-Unicode defines code points in the range C<0..0x10FFFF>.  Some standards
-at one time defined them up to 2**31 - 1, but Perl has allowed them to
-be as high as anything that will fit in a word on the platform being
-used.  However, use of those above the platform's C<IV_MAX> is broken in
-some constructs, notably C<tr///>, regular expression patterns involving
-quantifiers, and in some arithmetic and comparison operations, such as
-being the upper limit of a loop.  Now the use of such code points raises
-a deprecation warning, unless that warning category is turned off.
-C<IV_MAX> is typically 2**31 -1 on 32-bit platforms, and 2**63-1 on
-64-bit ones.
-
-=head2 Doing bitwise operations on strings containing code points above
-0xFF is deprecated
-
-The string bitwise operators treat their operands as strings of bytes,
-and values beyond 0xFF are nonsensical in this context.  To operate on
-encoded bytes, first encode the strings.  To operate on code points'
-numeric values, use C<split> and C<map ord>.  In the future, this
-warning will be replaced by an exception.
-
-=head2 C<sysread()>, C<syswrite()>, C<recv()> and C<send()> are deprecated on
-:utf8 handles
-
-The C<sysread()>, C<recv()>, C<syswrite()> and C<send()> operators
-are deprecated on handles that have the C<:utf8> layer, either
-explicitly, or implicitly, eg., with the C<:encoding(UTF-16LE)> layer.
-
-Both C<sysread()> and C<recv()> currently use only the C<:utf8> flag for the
-stream, ignoring the actual layers.  Since C<sysread()> and C<recv()> do no
-UTF-8 validation they can end up creating invalidly encoded scalars.
-
-Similarly, C<syswrite()> and C<send()> use only the C<:utf8> flag, otherwise
-ignoring any layers.  If the flag is set, both write the value UTF-8
-encoded, even if the layer is some different encoding, such as the
-example above.
-
-Ideally, all of these operators would completely ignore the C<:utf8>
-state, working only with bytes, but this would result in silently
-breaking existing code.  To avoid this a future version of perl will
-throw an exception when any of C<sysread()>, C<recv()>, C<syswrite()> or C<send()>
-are called on handle with the C<:utf8> layer.
-
-=head1 Performance Enhancements
-
-=over 4
-
-=item *
-
-The overhead of scope entry and exit has been considerably reduced, so
-for example subroutine calls, loops and basic blocks are all faster now.
-This empty function call now takes about a third less time to execute:
-
-    sub f{} f();
-
-=item *
-
-Many languages, such as Chinese, are caseless.  Perl now knows about
-most common ones, and skips much of the work when
-a program tries to change case in them (like C<ucfirst()>) or match
-caselessly (C<qr//i>).  This will speed up a program, such as a web
-server, that can operate on multiple languages, while it is operating on a
-caseless one.
-
-=item *
-
-C</fixed-substr/> has been made much faster.
-
-On platforms with a libc C<memchr()> implementation which makes good use of
-underlying hardware support, patterns which include fixed substrings will now
-often be much faster; for example with glibc on a recent x86_64 CPU, this:
-
-    $s = "a" x 1000 . "wxyz";
-    $s =~ /wxyz/ for 1..30000
-
-is now about 7 times faster.  On systems with slow C<memchr()>, e.g. 32-bit ARM
-Raspberry Pi, there will be a small or little speedup.  Conversely, some
-pathological cases, such as C<"ab" x 1000 =~ /aa/> will be slower now; up to 3
-times slower on the rPi, 1.5x slower on x86_64.
-
-=item *
-
-Faster addition, subtraction and multiplication.
-
-Since 5.8.0, arithmetic became slower due to the need to support
-64-bit integers. To deal with 64-bit integers, a lot more corner
-cases need to be checked, which adds time. We now detect common
-cases where there is no need to check for those corner cases,
-and special-case them.
-
-=item *
-
-Preincrement, predecrement, postincrement, and postdecrement have been
-made faster by internally splitting the functions which handled multiple
-cases into different functions.
-
-=item *
-
-Creating Perl debugger data structures (see L<perldebguts/"Debugger Internals">)
-for XSUBs and const subs has been removed.  This removed one glob/scalar combo
-for each unique C<.c> file that XSUBs and const subs came from.  On startup
-(C<perl -e"0">) about half a dozen glob/scalar debugger combos were created.
-Loading XS modules created more glob/scalar combos.  These things were
-being created regardless of whether the perl debugger was being used,
-and despite the fact that it can't debug C code anyway
-
-=item *
-
-On Win32, C<stat>ing or C<-X>ing a path, if the file or directory does not
-exist, is now 3.5x faster than before.
-
-=item *
-
-Single arguments in list assign are now slightly faster:
-
-  ($x) = (...);
-  (...) = ($x);
-
-=item *
-
-Less peak memory is now used when compiling regular expression patterns.
-
-=back
-
-=head1 Modules and Pragmata
-
-=head2 Updated Modules and Pragmata
-
-=over
-
-=item *
-
-L<arybase> has been upgraded from version 0.10 to 0.11.
-
-=item *
-
-L<Attribute::Handlers> has been upgraded from version 0.97 to 0.99.
-
-=item *
-
-L<autodie> has been upgraded from version 2.26 to 2.29.
-
-=item *
-
-L<autouse> has been upgraded from version 1.08 to 1.11.
-
-=item *
-
-L<B> has been upgraded from version 1.58 to 1.62.
-
-=item *
-
-L<B::Deparse> has been upgraded from version 1.35 to 1.37.
-
-=item *
-
-L<base> has been upgraded from version 2.22 to 2.23.
-
-=item *
-
-L<Benchmark> has been upgraded from version 1.2 to 1.22.
-
-=item *
-
-L<bignum> has been upgraded from version 0.39 to 0.42.
-
-=item *
-
-L<bytes> has been upgraded from version 1.04 to 1.05.
-
-=item *
-
-L<Carp> has been upgraded from version 1.36 to 1.40.
-
-=item *
-
-L<Compress::Raw::Bzip2> has been upgraded from version 2.068 to 2.069.
-
-=item *
-
-L<Compress::Raw::Zlib> has been upgraded from version 2.068 to 2.069.
-
-=item *
-
-L<Config::Perl::V> has been upgraded from version 0.24 to 0.25.
-
-=item *
-
-L<CPAN::Meta> has been upgraded from version 2.150001 to 2.150005.
-
-=item *
-
-L<CPAN::Meta::Requirements> has been upgraded from version 2.132 to 2.140.
-
-=item *
-
-L<CPAN::Meta::YAML> has been upgraded from version 0.012 to 0.018.
-
-=item *
-
-L<Data::Dumper> has been upgraded from version 2.158 to 2.160.
-
-=item *
-
-L<Devel::Peek> has been upgraded from version 1.22 to 1.23.
-
-=item *
-
-L<Devel::PPPort> has been upgraded from version 3.31 to 3.32.
-
-=item *
-
-L<Dumpvalue> has been upgraded from version 1.17 to 1.18.
-
-=item *
-
-L<DynaLoader> has been upgraded from version 1.32 to 1.38.
-
-=item *
-
-L<Encode> has been upgraded from version 2.72 to 2.80.
-
-=item *
-
-L<encoding> has been upgraded from version 2.14 to 2.17.
-
-=item *
-
-L<encoding::warnings> has been upgraded from version 0.11 to 0.12.
-
-=item *
-
-L<English> has been upgraded from version 1.09 to 1.10.
-
-=item *
-
-L<Errno> has been upgraded from version 1.23 to 1.25.
-
-=item *
-
-L<experimental> has been upgraded from version 0.013 to 0.016.
-
-=item *
-
-L<ExtUtils::CBuilder> has been upgraded from version 0.280221 to 0.280225.
-
-=item *
-
-L<ExtUtils::Embed> has been upgraded from version 1.32 to 1.33.
-
-=item *
-
-L<ExtUtils::MakeMaker> has been upgraded from version 7.04_01 to 7.10_01.
-
-=item *
-
-L<ExtUtils::ParseXS> has been upgraded from version 3.28 to 3.31.
-
-=item *
-
-L<ExtUtils::Typemaps> has been upgraded from version 3.28 to 3.31.
-
-=item *
-
-L<feature> has been upgraded from version 1.40 to 1.42.
-
-=item *
-
-L<fields> has been upgraded from version 2.17 to 2.23.
-
-=item *
-
-L<File::Copy> has been upgraded from version 2.30 to 2.31.
-
-=item *
-
-L<File::Find> has been upgraded from version 1.29 to 1.34.
-
-=item *
-
-L<File::Glob> has been upgraded from version 1.24 to 1.26.
-
-=item *
-
-L<File::Path> has been upgraded from version 2.09 to 2.12_01.
-
-=item *
-
-L<File::Spec> has been upgraded from version 3.56 to 3.63.
-
-=item *
-
-L<Filter::Util::Call> has been upgraded from version 1.54 to 1.55.
-
-=item *
-
-L<Getopt::Long> has been upgraded from version 2.45 to 2.48.
-
-=item *
-
-L<Hash::Util> has been upgraded from version 0.18 to 0.19.
-
-=item *
-
-L<Hash::Util::FieldHash> has been upgraded from version 1.15 to 1.19.
-
-=item *
-
-L<HTTP::Tiny> has been upgraded from version 0.054 to 0.056.
-
-=item *
-
-L<I18N::Langinfo> has been upgraded from version 0.12 to 0.13.
-
-=item *
-
-L<if> has been upgraded from version 0.0604 to 0.0606.
-
-=item *
-
-L<IO> has been upgraded from version 1.35 to 1.36.
-
-=item *
-
-IO-Compress has been upgraded from version 2.068 to 2.069.
-
-=item *
-
-L<IPC::Open3> has been upgraded from version 1.18 to 1.20.
-
-=item *
-
-L<IPC::SysV> has been upgraded from version 2.04 to 2.06_01.
-
-=item *
-
-L<List::Util> has been upgraded from version 1.41 to 1.42_02.
-
-=item *
-
-L<locale> has been upgraded from version 1.06 to 1.08.
-
-=item *
-
-L<Locale::Codes> has been upgraded from version 3.34 to 3.37.
-
-=item *
-
-L<Math::BigInt> has been upgraded from version 1.9997 to 1.999715.
-
-=item *
-
-L<Math::BigInt::FastCalc> has been upgraded from version 0.31 to 0.40.
-
-=item *
-
-L<Math::BigRat> has been upgraded from version 0.2608 to 0.260802.
-
-=item *
-
-L<Module::CoreList> has been upgraded from version 5.20150520 to 5.20160506.
-
-=item *
-
-L<Module::Metadata> has been upgraded from version 1.000026 to 1.000031.
-
-=item *
-
-L<mro> has been upgraded from version 1.17 to 1.18.
-
-=item *
-
-L<ODBM_File> has been upgraded from version 1.12 to 1.14.
-
-=item *
-
-L<Opcode> has been upgraded from version 1.32 to 1.34.
-
-=item *
-
-L<parent> has been upgraded from version 0.232 to 0.234.
-
-=item *
-
-L<Parse::CPAN::Meta> has been upgraded from version 1.4414 to 1.4417.
-
-=item *
-
-L<Perl::OSType> has been upgraded from version 1.008 to 1.009.
-
-=item *
-
-L<perlfaq> has been upgraded from version 5.021009 to 5.021010.
-
-=item *
-
-L<PerlIO::encoding> has been upgraded from version 0.21 to 0.24.
-
-=item *
-
-L<PerlIO::mmap> has been upgraded from version 0.014 to 0.016.
-
-=item *
-
-L<PerlIO::scalar> has been upgraded from version 0.22 to 0.24.
-
-=item *
-
-L<PerlIO::via> has been upgraded from version 0.15 to 0.16.
-
-=item *
-
-podlators has been upgraded from version 2.28 to 4.07.
-
-=item *
-
-L<Pod::Functions> has been upgraded from version 1.09 to 1.10.
-
-=item *
-
-L<Pod::Perldoc> has been upgraded from version 3.25 to 3.25_02.
-
-=item *
-
-L<Pod::Simple> has been upgraded from version 3.29 to 3.32.
-
-=item *
-
-L<Pod::Usage> has been upgraded from version 1.64 to 1.68.
-
-=item *
-
-L<POSIX> has been upgraded from version 1.53 to 1.65.
-
-=item *
-
-L<Scalar::Util> has been upgraded from version 1.41 to 1.42_02.
-
-=item *
-
-L<SDBM_File> has been upgraded from version 1.13 to 1.14.
-
-=item *
-
-L<SelfLoader> has been upgraded from version 1.22 to 1.23.
-
-=item *
-
-L<Socket> has been upgraded from version 2.018 to 2.020_03.
-
-=item *
-
-L<Storable> has been upgraded from version 2.53 to 2.56.
-
-=item *
-
-L<strict> has been upgraded from version 1.09 to 1.11.
-
-=item *
-
-L<Term::ANSIColor> has been upgraded from version 4.03 to 4.04.
-
-=item *
-
-L<Term::Cap> has been upgraded from version 1.15 to 1.17.
-
-=item *
-
-L<Test> has been upgraded from version 1.26 to 1.28.
-
-=item *
-
-L<Test::Harness> has been upgraded from version 3.35 to 3.36.
-
-=item *
-
-L<Thread::Queue> has been upgraded from version 3.05 to 3.09.
-
-=item *
-
-L<threads> has been upgraded from version 2.01 to 2.07.
-
-=item *
-
-L<threads::shared> has been upgraded from version 1.48 to 1.51.
-
-=item *
-
-L<Tie::File> has been upgraded from version 1.01 to 1.02.
-
-=item *
-
-L<Tie::Scalar> has been upgraded from version 1.03 to 1.04.
-
-=item *
-
-L<Time::HiRes> has been upgraded from version 1.9726 to 1.9733.
-
-=item *
-
-L<Time::Piece> has been upgraded from version 1.29 to 1.31.
-
-=item *
-
-L<Unicode::Collate> has been upgraded from version 1.12 to 1.14.
-
-=item *
-
-L<Unicode::Normalize> has been upgraded from version 1.18 to 1.25.
-
-=item *
-
-L<Unicode::UCD> has been upgraded from version 0.61 to 0.64.
-
-=item *
-
-L<UNIVERSAL> has been upgraded from version 1.12 to 1.13.
-
-=item *
-
-L<utf8> has been upgraded from version 1.17 to 1.19.
-
-=item *
-
-L<version> has been upgraded from version 0.9909 to 0.9916.
-
-=item *
-
-L<warnings> has been upgraded from version 1.32 to 1.36.
-
-=item *
-
-L<Win32> has been upgraded from version 0.51 to 0.52.
-
-=item *
-
-L<Win32API::File> has been upgraded from version 0.1202 to 0.1203.
-
-=item *
-
-L<XS::Typemap> has been upgraded from version 0.13 to 0.14.
-
-=item *
-
-L<XSLoader> has been upgraded from version 0.20 to 0.21.
-
-=back
-
-=head1 Documentation
-
-=head2 Changes to Existing Documentation
-
-=head3 L<perlapi>
-
-=over 4
-
-=item *
-
-The process of using undocumented globals has been documented, namely, that one
-should send email to L<perl5-porters@perl.org|mailto:perl5-porters@perl.org>
-first to get the go-ahead for documenting and using an undocumented function or
-global variable.
-
-=back
-
-=head3 L<perlcall>
-
-=over 4
-
-=item *
-
-A number of cleanups have been made to perlcall, including:
-
-=over 4
-
-=item *
-
-use C<EXTEND(SP, n)> and C<PUSHs()> instead of C<XPUSHs()> where applicable
-and update prose to match
-
-=item *
-
-add POPu, POPul and POPpbytex to the "complete list of POP macros"
-and clarify the documentation for some of the existing entries, and
-a note about side-effects
-
-=item *
-
-add API documentation for POPu and POPul
-
-=item *
-
-use ERRSV more efficiently
-
-=item *
-
-approaches to thread-safety storage of SVs.
-
-=back
-
-=back
-
-=head3 L<perlfunc>
-
-=over 4
-
-=item *
-
-The documentation of C<hex> has been revised to clarify valid inputs.
-
-=item *
-
-Better explain meaning of negative PIDs in C<waitpid>.
-L<[perl #127080]|https://rt.perl.org/Ticket/Display.html?id=127080>
-
-=item *
-
-General cleanup: there's more consistency now (in POD usage, grammar, code
-examples), better practices in code examples (use of C<my>, removal of bareword
-filehandles, dropped usage of C<&> when calling subroutines, ...), etc.
-
-=back
-
-=head3 L<perlguts>
-
-=over 4
-
-=item *
-
-A new section has been added, L<perlguts/"Dynamic Scope and the Context
-Stack">, which explains how the perl context stack works.
-
-=back
-
-=head3 L<perllocale>
-
-=over 4
-
-=item *
-
-A stronger caution about using locales in threaded applications is
-given.  Locales are not thread-safe, and you can get wrong results or
-even segfaults if you use them there.
-
-=back
-
-=head3 L<perlmodlib>
-
-=over 4
-
-=item *
-
-We now recommend contacting the module-authors list or PAUSE in seeking
-guidance on the naming of modules.
-
-=back
-
-=head3 L<perlop>
-
-=over 4
-
-=item *
-
-The documentation of C<qx//> now describes how C<$?> is affected.
-
-=back
-
-=head3 L<perlpolicy>
-
-=over 4
-
-=item *
-
-This note has been added to perlpolicy:
-
- While civility is required, kindness is encouraged; if you have any
- doubt about whether you are being civil, simply ask yourself, "Am I
- being kind?" and aspire to that.
-
-=back
-
-=head3 L<perlreftut>
-
-=over 4
-
-=item *
-
-Fix some examples to be L<strict> clean.
-
-=back
-
-=head3 L<perlrebackslash>
-
-=over 4
-
-=item *
-
-Clarify that in languages like Japanese and Thai, dictionary lookup
-is required to determine word boundaries.
-
-=back
-
-=head3 L<perlsub>
-
-=over 4
-
-=item *
-
-Updated to note that anonymous subroutines can have signatures.
-
-=back
-
-=head3 L<perlsyn>
-
-=over 4
-
-=item *
-
-Fixed a broken example where C<=> was used instead of
-C<==> in conditional in do/while example.
-
-=back
-
-=head3 L<perltie>
-
-=over 4
-
-=item *
-
-The usage of C<FIRSTKEY> and C<NEXTKEY> has been clarified.
-
-=back
-
-=head3 L<perlunicode>
-
-=over 4
-
-=item *
-
-Discourage use of 'In' as a prefix signifying the Unicode Block property.
-
-=back
-
-=head3 L<perlvar>
-
-=over 4
-
-=item *
-
-The documentation of C<$@> was reworded to clarify that it is not just for
-syntax errors in C<eval>.
-L<[perl #124034]|https://rt.perl.org/Ticket/Display.html?id=124034>
-
-=item *
-
-The specific true value of C<$!{E...}> is now documented, noting that it is
-subject to change and not guaranteed.
-
-=item *
-
-Use of C<$OLD_PERL_VERSION> is now discouraged.
-
-=back
-
-=head3 L<perlxs>
-
-=over 4
-
-=item *
-
-The documentation of C<PROTOTYPES> has been corrected; they are I<disabled>
-by default, not I<enabled>.
-
-=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 Errors
-
-=over 4
-
-=item *
-
-L<%s must not be a named sequence in transliteration operator|perldiag/"%s must not be a named sequence in transliteration operator">
-
-=item *
-
-L<Can't find Unicode property definition "%s" in regex;|perldiag/"Can't find Unicode property definition "%s" in regex; marked by <-- HERE in m/%s/">
-
-=item *
-
-L<Can't redeclare "%s" in "%s"|perldiag/"Can't redeclare "%s" in "%s"">
-
-=item *
-
-L<Character following \p must be '{' or a single-character Unicode property name in regex;|perldiag/"Character following \%c must be '{' or a single-character Unicode property name in regex; marked by <-- HERE in m/%s/">
-
-=item *
-
-L<Empty \%c in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>
-|perldiag/"Empty \%c in regex; marked by <-- HERE in mE<sol>%sE<sol>">
-
-=item *
-
-L<Illegal user-defined property name|perldiag/"Illegal user-defined property name">
-
-=item *
-
-L<Invalid number '%s' for -C option.|perldiag/"Invalid number '%s' for -C option.">
-
-=item *
-
-L<<< Sequence (?... not terminated in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>|perldiag/"Sequence (?... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>" >>>
-
-=item *
-
-L<<< Sequence (?PE<lt>... not terminated in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>
-|perldiag/"Sequence (?PE<lt>... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>" >>>
-
-=item *
-
-L<Sequence (?PE<gt>... not terminated in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>
-|perldiag/"Sequence (?PE<gt>... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>">
-
-=back
-
-=head3 New Warnings
-
-=over 4
-
-=item *
-
-L<Assuming NOT a POSIX class since %s in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>|
-perldiag/Assuming NOT a POSIX class since %s in regex; marked by <-- HERE in mE<sol>%sE<sol>>
-
-=item *
-
-L<%s() is deprecated on :utf8 handles|perldiag/"%s() is deprecated on :utf8 handles">
-
-=back
-
-=head2 Changes to Existing Diagnostics
-
-=over 4
-
-=item *
-
-Accessing the C<IO> part of a glob as C<FILEHANDLE> instead of C<IO> is no
-longer deprecated.  It is discouraged to encourage uniformity (so that, for
-example, one can grep more easily) but it will not be removed.
-L<[perl #127060]|https://rt.perl.org/Ticket/Display.html?id=127060>
-
-=item *
-
-The diagnostic C<< Hexadecimal float: internal error >> has been changed to
-C<< Hexadecimal float: internal error (%s) >> to include more information.
-
-=item *
-
-L<Can't modify non-lvalue subroutine call of &%s|perldiag/"Can't modify non-lvalue subroutine call of &%s">
-
-This error now reports the name of the non-lvalue subroutine you attempted to
-use as an lvalue.
-
-=item *
-
-When running out of memory during an attempt the increase the stack
-size, previously, perl would die using the cryptic message
-C<< panic: av_extend_guts() negative count (-9223372036854775681) >>.
-This has been fixed to show the prettier message:
-L<< Out of memory during stack extend|perldiag/"Out of memory during %s extend" >>
-
-=back
-
-=head1 Configuration and Compilation
-
-=over 4
-
-=item *
-
-C<Configure> now acts as if the C<-O> option is always passed, allowing command
-line options to override saved configuration.  This should eliminate confusion
-when command line options are ignored for no obvious reason.  C<-O> is now
-permitted, but ignored.
-
-=item *
-
-Bison 3.0 is now supported.
-
-=item *
-
-F<Configure> no longer probes for F<libnm> by default.  Originally
-this was the "New Math" library, but the name has been re-used by the
-GNOME NetworkManager.
-L<[perl #127131]|https://rt.perl.org/Ticket/Display.html?id=127131>
-
-=item *
-
-Added F<Configure> probes for C<newlocale>, C<freelocale>, and C<uselocale>.
-
-=item *
-
-C<< PPPort.so/PPPort.dll >> no longer get installed, as they are
-not used by C<< PPPort.pm >>, only by its test files.
-
-=item *
-
-It is now possible to specify which compilation date to show on
-C<< perl -V >> output, by setting the macro C<< PERL_BUILD_DATE >>.
-
-=item *
-
-Using the C<NO_HASH_SEED> define in combination with the default hash algorithm
-C<PERL_HASH_FUNC_ONE_AT_A_TIME_HARD> resulted in a fatal error while compiling
-the interpreter, since Perl 5.17.10.  This has been fixed.
-
-=item *
-
-F<Configure> should handle spaces in paths a little better.
-
-=item *
-
-No longer generate EBCDIC POSIX-BC tables.  We don't believe anyone is
-using Perl and POSIX-BC at this time, and by not generating these tables
-it saves time during development, and makes the resulting tar ball smaller.
-
-=item *
-
-The GNU Make makefile for Win32 now supports parallel builds.  [perl #126632]
-
-=item *
-
-You can now build perl with MSVC++ on Win32 using GNU Make.  [perl #126632]
-
-=item *
-
-The Win32 miniperl now has a real C<getcwd> which increases build performance
-resulting in C<getcwd()> being 605x faster in Win32 miniperl.
-
-=item *
-
-Configure now takes C<-Dusequadmath> into account when calculating the
-C<alignbytes> configuration variable.  Previously the mis-calculated
-C<alignbytes> could cause alignment errors on debugging builds. [perl
-#127894]
-
-=back
-
-=head1 Testing
-
-=over 4
-
-=item *
-
-A new test (F<t/op/aassign.t>) has been added to test the list assignment operator
-C<OP_AASSIGN>.
-
-=item *
-
-Parallel building has been added to the dmake C<makefile.mk> makefile. All
-Win32 compilers are supported.
-
-=back
-
-=head1 Platform Support
-
-=head2 Platform-Specific Notes
-
-=over 4
-
-=item AmigaOS
-
-=over 4
-
-=item *
-
-The AmigaOS port has been reintegrated into the main tree, based off of
-Perl 5.22.1.
-
-=back
-
-=item Cygwin
-
-=over 4
-
-=item *
-
-Tests are more robust against unusual cygdrive prefixes.
-L<[perl #126834]|https://rt.perl.org/Ticket/Display.html?id=126834>
-
-=back
-
-=item EBCDIC
-
-=over 4
-
-=item UTF-EBCDIC extended
-
-UTF-EBCDIC is like UTF-8, but for EBCDIC platforms.  It now has been
-extended so that it can represent code points up to 2 ** 64 - 1 on
-platforms with 64-bit words.  This brings it into parity with UTF-8.
-This enhancement requires an incompatible change to the representation
-of code points in the range 2 ** 30 to 2 ** 31 -1 (the latter was the
-previous maximum representable code point).  This means that a file that
-contains one of these code points, written out with previous versions of
-perl cannot be read in, without conversion, by a perl containing this
-change.  We do not believe any such files are in existence, but if you
-do have one, submit a ticket at L<perlbug@perl.org|mailto:perlbug@perl.org>,
-and we will write a conversion script for you.
-
-=item EBCDIC C<cmp()> and C<sort()> fixed for UTF-EBCDIC strings
-
-Comparing two strings that were both encoded in UTF-8 (or more
-precisely, UTF-EBCDIC) did not work properly until now.  Since C<sort()>
-uses C<cmp()>, this fixes that as well.
-
-=item EBCDIC C<tr///> and C<y///> fixed for C<\N{}>, and C<S<use utf8>> ranges
-
-Perl v5.22 introduced the concept of portable ranges to regular
-expression patterns.  A portable range matches the same set of
-characters no matter what platform is being run on.  This concept is now
-extended to C<tr///>.  See
-C<L<trE<sol>E<sol>E<sol>|perlop/trE<sol>SEARCHLISTE<sol>REPLACEMENTLISTE<sol>cdsr>>.
-
-There were also some problems with these operations under S<C<use
-utf8>>, which are now fixed
-
-=back
-
-=item FreeBSD
-
-=over 4
-
-=item *
-
-Use the C<fdclose()> function from FreeBSD if it is available.
-L<[perl #126847]|https://rt.perl.org/Ticket/Display.html?id=126847>
-
-=back
-
-=item IRIX
-
-=over 4
-
-=item *
-
-Under some circumstances IRIX stdio C<fgetc()> and C<fread()> set the errno to
-C<ENOENT>, which made no sense according to either IRIX or POSIX docs.  Errno
-is now cleared in such cases.
-L<[perl #123977]|https://rt.perl.org/Ticket/Display.html?id=123977>
-
-=item *
-
-Problems when multiplying long doubles by infinity have been fixed.
-L<[perl #126396]|https://rt.perl.org/Ticket/Display.html?id=126396>
-
-=back
-
-=item MacOS X
-
-=over 4
-
-=item *
-
-Until now OS X builds of perl have specified a link target of 10.3 (Panther,
-2003) but have not specified a compiler target.  From now on, builds of perl on
-OS X 10.6 or later (Snow Leopard, 2008) by default capture the current OS X
-version and specify that as the explicit build target in both compiler and
-linker flags, thus preserving binary compatibility for extensions built later
-regardless of changes in OS X, SDK, or compiler and linker versions.  To
-override the default value used in the build and preserved in the flags,
-specify C<export MACOSX_DEPLOYMENT_TARGET=10.N> before configuring and building
-perl, where 10.N is the version of OS X you wish to target.  In OS X 10.5 or
-earlier there is no change to the behavior present when those systems were
-current; the link target is still OS X 10.3 and there is no explicit compiler
-target.
-
-=item *
-
-Builds with both -DDEBUGGING and threading enabled would fail with a
-"panic: free from wrong pool" error when built or tested from Terminal
-on OS X.  This was caused by perl's internal management of the
-environment conflicting with an atfork handler using the libc
-C<setenv()> function to update the environment.
-
-Perl now uses C<setenv()>/C<unsetenv()> to update the environment on OS X.
-L<[perl #126240]|https://rt.perl.org/Ticket/Display.html?id=126240>
-
-=back
-
-=item Solaris
-
-=over 4
-
-=item *
-
-All Solaris variants now build a shared libperl
-
-Solaris and variants like OpenIndiana now always build with the shared
-Perl library (Configure -Duseshrplib).  This was required for the
-OpenIndiana builds, but this has also been the setting for Oracle/Sun
-Perl builds for several years.
-
-=back
-
-=item Tru64
-
-=over 4
-
-=item *
-
-Workaround where Tru64 balks when prototypes are listed as
-C<< PERL_STATIC_INLINE >>, but where the test is build with
-C<< -DPERL_NO_INLINE_FUNCTIONS >>.
-
-=back
-
-=item VMS
-
-=over 4
-
-=item *
-
-On VMS, the math function prototypes in C<math.h> are now visible under C++.
-Now building the POSIX extension with C++ will no longer crash.
-
-=item *
-
-VMS has had C<setenv>/C<unsetenv> since v7.0 (released in 1996),
-C<Perl_vmssetenv> now always uses C<setenv>/C<unsetenv>.
-
-=item *
-
-Perl now implements its own C<killpg> by scanning for processes in the
-specified process group, which may not mean exactly the same thing as a Unix
-process group, but allows us to send a signal to a parent (or master) process
-and all of its sub-processes.  At the perl level, this means we can now send a
-negative pid like so:
-
-    kill SIGKILL, -$pid;
-
-to signal all processes in the same group as C<$pid>.
-
-=item *
-
-For those C<%ENV> elements based on the CRTL environ array, we've always
-preserved case when setting them but did look-ups only after upcasing the
-key first, which made lower- or mixed-case entries go missing. This problem
-has been corrected by making C<%ENV> elements derived from the environ array
-case-sensitive on look-up as well as case-preserving on store.
-
-=item *
-
-Environment look-ups for C<PERL5LIB> and C<PERLLIB> previously only
-considered logical names, but now consider all sources of C<%ENV> as
-determined by C<PERL_ENV_TABLES> and as documented in L<perlvms/%ENV>.
-
-=item *
-
-The minimum supported version of VMS is now v7.3-2, released in 2003.  As a
-side effect of this change, VAX is no longer supported as the terminal
-release of OpenVMS VAX was v7.3 in 2001.
-
-=back
-
-=item Win32
-
-=over 4
-
-=item *
-
-A new build option C<USE_NO_REGISTRY> has been added to the makefiles.  This
-option is off by default, meaning the default is to do Windows registry
-lookups.  This option stops Perl from looking inside the registry for anything.
-For what values are looked up in the registry see L<perlwin32>.  Internally, in
-C, the name of this option is C<WIN32_NO_REGISTRY>.
-
-=item *
-
-The behavior of Perl using C<HKEY_CURRENT_USER\Software\Perl> and
-C<HKEY_LOCAL_MACHINE\Software\Perl> to lookup certain values, including C<%ENV>
-vars starting with C<PERL> has changed.  Previously, the 2 keys were checked
-for entries at all times through the perl process's life time even if
-they did not
-exist.  For performance reasons, now, if the root key (i.e.
-C<HKEY_CURRENT_USER\Software\Perl> or C<HKEY_LOCAL_MACHINE\Software\Perl>) does
-not exist at process start time, it will not be checked again for C<%ENV>
-override entries for the remainder of the perl process's life.  This more
-closely matches Unix behavior in that the environment is copied or inherited
-on startup and changing the variable in the parent process or another process
-or editing F<.bashrc> will not change the environmental variable in other
-existing, running, processes.
-
-=item *
-
-One glob fetch was removed for each C<-X> or C<stat> call whether done from
-Perl code or internally from Perl's C code.  The glob being looked up was
-C<${^WIN32_SLOPPY_STAT}> which is a special variable.  This makes C<-X> and
-C<stat> slightly faster.
-
-=item *
-
-During miniperl's process startup, during the build process, 4 to 8 IO calls
-related to the process starting F<.pl> and the F<buildcustomize.pl> file were
-removed from the code opening and executing the first 1 or 2 F<.pl> files.
-
-=item *
-
-Builds using Microsoft Visual C++ 2003 and earlier no longer produce
-an "INTERNAL COMPILER ERROR" message.  [perl #126045]
-
-=item *
-
-Visual C++ 2013 builds will now execute on XP and higher. Previously they would
-only execute on Vista and higher.
-
-=item *
-
-You can now build perl with GNU Make and GCC.  [perl #123440]
-
-=item *
-
-C<truncate($filename, $size)> now works for files over 4GB in size.
-[perl #125347]
-
-=item *
-
-Parallel building has been added to the dmake C<makefile.mk> makefile. All
-Win32 compilers are supported.
-
-=item *
-
-Building a 64-bit perl with a 64-bit GCC but a 32-bit gmake would
-result in an invalid C<$Config{archname}> for the resulting perl.
-[perl #127584]
-
-=item *
-
-Errors set by Winsock functions are now put directly into C<$^E>, and the
-relevant C<WSAE*> error codes are now exported from the L<Errno> and L<POSIX>
-modules for testing this against.
-
-The previous behavior of putting the errors (converted to POSIX-style C<E*>
-error codes since Perl 5.20.0) into C<$!> was buggy due to the non-equivalence
-of like-named Winsock and POSIX error constants, a relationship between which
-has unfortunately been established in one way or another since Perl 5.8.0.
-
-The new behavior provides a much more robust solution for checking Winsock
-errors in portable software without accidentally matching POSIX tests that were
-intended for other OSes and may have different meanings for Winsock.
-
-The old behavior is currently retained, warts and all, for backwards
-compatibility, but users are encouraged to change any code that tests C<$!>
-against C<E*> constants for Winsock errors to instead test C<$^E> against
-C<WSAE*> constants.  After a suitable deprecation period, the old behavior may
-be removed, leaving C<$!> unchanged after Winsock function calls, to avoid any
-possible confusion over which error variable to check.
-
-=back
-
-=item ppc64el
-
-=over 4
-
-=item floating point
-
-The floating point format of ppc64el (Debian naming for little-endian
-PowerPC) is now detected correctly.
-
-=back
-
-=back
-
-=head1 Internal Changes
-
-=over 4
-
-=item *
-
-The implementation of perl's context stack system, and its internal API,
-have been heavily reworked. Note that no significant changes have been
-made to any external APIs, but XS code which relies on such internal
-details may need to be fixed. The main changes are:
-
-=over 4
-
-=item *
-
-The C<PUSHBLOCK()>, C<POPSUB()> etc. macros have been replaced with static
-inline functions such as C<cx_pushblock()>, C<cx_popsub()> etc. These use
-function args rather than implicitly relying on local vars such as
-C<gimme> and C<newsp> being available. Also their functionality has
-changed: in particular, C<cx_popblock()> no longer decrements
-C<cxstack_ix>. The ordering of the steps in the C<pp_leave*> functions
-involving C<cx_popblock()>, C<cx_popsub()> etc. has changed. See the new
-documentation, L<perlguts/"Dynamic Scope and the Context Stack">, for
-details on how to use them.
-
-=item *
-
-Various macros, which now consistently have a CX_ prefix, have been added:
-
-  CX_CUR(), CX_LEAVE_SCOPE(), CX_POP()
-
-or renamed:
-
-  CX_POP_SAVEARRAY(), CX_DEBUG(), CX_PUSHSUBST(), CX_POPSUBST()
-
-=item *
-
-C<cx_pushblock()> now saves C<PL_savestack_ix> and C<PL_tmps_floor>, so
-C<pp_enter*> and C<pp_leave*> no longer do
-
-  ENTER; SAVETMPS; ....; LEAVE
-
-=item *
-
-C<cx_popblock()> now also restores C<PL_curpm>.
-
-=item *
-
-In C<dounwind()> for every context type, the current savestack frame is
-now processed before each context is popped; formerly this was only done
-for sub-like context frames. This action has been removed from
-C<cx_popsub()> and placed into its own macro, C<CX_LEAVE_SCOPE(cx)>, which
-must be called before C<cx_popsub()> etc.
-
-C<dounwind()> now also does a C<cx_popblock()> on the last popped frame
-(formerly it only did the C<cx_popsub()> etc. actions on each frame).
-
-=item *
-
-The temps stack is now freed on scope exit; previously, temps created
-during the last statement of a block wouldn't be freed until the next
-C<nextstate> following the block (apart from an existing hack that did
-this for recursive subs in scalar context); and in something like
-C<f(g())>, the temps created by the last statement in C<g()> would
-formerly not be freed until the statement following the return from
-C<f()>.
-
-=item *
-
-Most values that were saved on the savestack on scope entry are now
-saved in suitable new fields in the context struct, and saved and
-restored directly by C<cx_pushfoo()> and C<cx_popfoo()>, which is much
-faster.
-
-=item *
-
-Various context struct fields have been added, removed or modified.
-
-=item *
-
-The handling of C<@_> in C<cx_pushsub()> and C<cx_popsub()> has been
-considerably tidied up, including removing the C<argarray> field from the
-context struct, and extracting out some common (but rarely used) code into
-a separate function, C<clear_defarray()>. Also, useful subsets of
-C<cx_popsub()> which had been unrolled in places like C<pp_goto> have been
-gathered into the new functions C<cx_popsub_args()> and
-C<cx_popsub_common()>.
-
-=item *
-
-C<pp_leavesub> and C<pp_leavesublv> now use the same function as the rest
-of the C<pp_leave*>'s to process return args.
-
-=item *
-
-C<CXp_FOR_PAD> and C<CXp_FOR_GV> flags have been added, and
-C<CXt_LOOP_FOR> has been split into C<CXt_LOOP_LIST>, C<CXt_LOOP_ARY>.
-
-=item *
-
-Some variables formerly declared by C<dMULTICALL> (but not documented) have
-been removed.
-
-=back
-
-=item *
-
-The obscure C<PL_timesbuf> variable, effectively a vestige of Perl 1, has
-been removed. It was documented as deprecated in Perl 5.20, with a statement
-that it would be removed early in the 5.21.x series; that has now finally
-happened.
-L<[perl #121351]|https://rt.perl.org/Ticket/Display.html?id=121351>
-
-=item *
-
-An unwarranted assertion in C<Perl_newATTRSUB_x()> has been removed.  If
-a stub subroutine
-definition with a prototype has been seen, then any subsequent stub (or
-definition) of the same subroutine with an attribute was causing an assertion
-failure because of a null pointer.
-L<[perl #126845]|https://rt.perl.org/Ticket/Display.html?id=126845>
-
-=item *
-
-C<::> has been replaced by C<__> in C<ExtUtils::ParseXS>, like it's done for
-parameters/return values. This is more consistent, and simplifies writing XS
-code wrapping C++ classes into a nested Perl namespace (it requires only
-a typedef for C<Foo__Bar> rather than two, one for C<Foo_Bar> and the other
-for C<Foo::Bar>).
-
-=item *
-
-The C<to_utf8_case()> function is now deprecated.  Instead use
-C<toUPPER_utf8>, C<toTITLE_utf8>, C<toLOWER_utf8>, and C<toFOLD_utf8>.
-(See L<http://nntp.perl.org/group/perl.perl5.porters/233287>.)
-
-=item *
-
-Perl core code and the threads extension have been annotated so that,
-if Perl is configured to use threads, then during compile-time clang (3.6
-or later) will warn about suspicious uses of mutexes.
-See L<http://clang.llvm.org/docs/ThreadSafetyAnalysis.html> for more
-information.
-
-=item *
-
-The C<signbit()> emulation has been enhanced.  This will help older
-and/or more exotic platforms or configurations.
-
-
-=item *
-
-Most EBCDIC-specific code in the core has been unified with non-EBCDIC
-code, to avoid repetition and make maintenance easier.
-
-=item *
-
-MSWin32 code for C<$^X> has been moved out of the F<win32> directory to
-F<caretx.c>, where other operating systems set that variable.
-
-=item *
-
-C<< sv_ref() >> is now part of the API.
-
-=item *
-
-L<perlapi/sv_backoff> had its return type changed from C<int> to C<void>.  It
-previously has always returned C<0> since Perl 5.000 stable but that was
-undocumented.  Although C<sv_backoff> is marked as public API, XS code is not
-expected to be impacted since the proper API call would be through public API
-C<sv_setsv(sv, &PL_sv_undef)>, or quasi-public C<SvOOK_off>, or non-public
-C<SvOK_off> calls, and the return value of C<sv_backoff> was previously a
-meaningless constant that can be rewritten as C<(sv_backoff(sv),0)>.
-
-=item *
-
-The C<EXTEND> and C<MEXTEND> macros have been improved to avoid various issues
-with integer truncation and wrapping.  In particular, some casts formerly used
-within the macros have been removed.  This means for example that passing an
-unsigned C<nitems> argument is likely to raise a compiler warning now
-(it's always been documented to require a signed value; formerly int,
-lately SSize_t).
-
-=item *
-
-C<PL_sawalias> and C<GPf_ALIASED_SV> have been removed.
-
-=item *
-
-C<GvASSIGN_GENERATION> and C<GvASSIGN_GENERATION_set> have been removed.
-
-=back
-
-=head1 Selected Bug Fixes
-
-=over 4
-
-=item *
-
-It now works properly to specify a user-defined property, such as
-
- qr/\p{mypkg1::IsMyProperty}/i
-
-with C</i> caseless matching, an explicit package name, and
-I<IsMyProperty> not defined at the time of the pattern compilation.
-
-=item *
-
-Perl's C<memcpy()>, C<memmove()>, C<memset()> and C<memcmp()> fallbacks are now
-more compatible with the originals.  [perl #127619]
-
-=item *
-
-Fixed the issue where a C<< s///r >>) with B<< -DPERL_NO_COW >> attempts
-to modify the source SV, resulting in the program dying. [perl #127635]
-
-=item *
-
-Fixed an EBCDIC-platform-only case where a pattern could fail to match. This
-occurred when matching characters from the set of C1 controls when the
-target matched string was in UTF-8.
-
-=item *
-
-Narrow the filename check in F<strict.pm> and F<warnings.pm>. Previously,
-it assumed that if the filename (without the F<.pmc?> extension) differed
-from the package name, if was a misspelled use statement (i.e. C<use Strict>
-instead of C<use strict>). We now check whether there's really a 
-miscapitalization happening, and not some other issue.
-
-=item *
-
-Turn an assertion into a more user friendly failure when parsing
-regexes. [perl #127599]
-
-=item *
-
-Correctly raise an error when trying to compile patterns with 
-unterminated character classes while there are trailing backslashes.
-[perl #126141].
-
-=item *
-
-Line numbers larger than 2**31-1 but less than 2**32 are no longer
-returned by C<caller()> as negative numbers.  [perl #126991]
-
-=item *
-
-C<< unless ( I<assignment> ) >> now properly warns when syntax
-warnings are enabled.  [perl #127122]
-
-=item *
-
-Setting an C<ISA> glob to an array reference now properly adds
-C<isaelem> magic to any existing elements.  Previously modifying such
-an element would not update the ISA cache, so method calls would call
-the wrong function.  Perl would also crash if the C<ISA> glob was
-destroyed, since new code added in 5.23.7 would try to release the
-C<isaelem> magic from the elements.  [perl #127351]
-
-=item *
-
-If a here-doc was found while parsing another operator, the parser had
-already read end of file, and the here-doc was not terminated, perl
-could produce an assertion or a segmentation fault.  This now reliably
-complains about the unterminated here-doc.  [perl #125540]
-
-=item *
-
-C<untie()> would sometimes return the last value returned by the C<UNTIE()>
-handler as well as it's normal value, messing up the stack.  [perl
-#126621]
-
-=item *
-
-Fixed an operator precedence problem when C< castflags & 2> is true.
-[perl #127474]
-
-=item *
-
-Caching of DESTROY methods could result in a non-pointer or a
-non-STASH stored in the C<SvSTASH()> slot of a stash, breaking the B
-C<STASH()> method.  The DESTROY method is now cached in the MRO metadata
-for the stash.  [perl #126410]
-
-=item *
-
-The AUTOLOAD method is now called when searching for a DESTROY method,
-and correctly sets C<$AUTOLOAD> too.  [perl #124387]  [perl #127494]
-
-=item *
-
-Avoid parsing beyond the end of the buffer when processing a C<#line>
-directive with no filename.  [perl #127334]
-
-=item *
-
-Perl now raises a warning when a regular expression pattern looks like
-it was supposed to contain a POSIX class, like C<qr/[[:alpha:]]/>, but
-there was some slight defect in its specification which causes it to
-instead be treated as a regular bracketed character class.  An example
-would be missing the second colon in the above like this:
-C<qr/[[:alpha]]/>.  This compiles to match a sequence of two characters.
-The second is C<"]">, and the first is any of: C<"[">, C<":">, C<"a">,
-C<"h">, C<"l">, or C<"p">.   This is unlikely to be the intended
-meaning, and now a warning is raised.  No warning is raised unless the
-specification is very close to one of the 14 legal POSIX classes.  (See
-L<perlrecharclass/POSIX Character Classes>.)
-[perl #8904]
-
-=item *
-
-Certain regex patterns involving a complemented POSIX class in an
-inverted bracketed character class, and matching something else
-optionally would improperly fail to match.  An example of one that could
-fail is C<qr/_?[^\Wbar]\x{100}/>.  This has been fixed.
-[perl #127537]
-
-=item *
-
-Perl 5.22 added support to the C99 hexadecimal floating point notation,
-but sometimes misparses hex floats. This has been fixed.
-[perl #127183]
-
-=item *
-
-A regression that allowed undeclared barewords in hash keys to work despite
-strictures has been fixed.
-L<[perl #126981]|https://rt.perl.org/Ticket/Display.html?id=126981>
-
-=item *
-
-Calls to the placeholder C<&PL_sv_yes> used internally when an C<import()>
-or C<unimport()> method isn't found now correctly handle scalar context.
-L<[perl #126042]|https://rt.perl.org/Ticket/Display.html?id=126042>
-
-=item *
-
-Report more context when we see an array where we expect to see an
-operator and avoid an assertion failure.
-L<[perl #123737]|https://rt.perl.org/Ticket/Display.html?id=123737>
-
-=item *
-
-Modifying an array that was previously a package C<@ISA> no longer
-causes assertion failures or crashes.
-L<[perl #123788]|https://rt.perl.org/Ticket/Display.html?id=123788>
-
-=item *
-
-Retain binary compatibility across plain and DEBUGGING perl builds.
-L<[perl #127212]|https://rt.perl.org/Ticket/Display.html?id=127212>
-
-=item *
-
-Avoid leaking memory when setting C<$ENV{foo}> on darwin.
-L<[perl #126240]|https://rt.perl.org/Ticket/Display.html?id=126240>
-
-=item *
-
-C</...\G/> no longer crashes on utf8 strings. When C<\G> is a fixed number
-of characters from the start of the regex, perl needs to count back that
-many characters from the current C<pos()> position and start matching from
-there. However, it was counting back bytes rather than characters, which
-could lead to panics on utf8 strings.
-
-=item *
-
-In some cases operators that return integers would return negative
-integers as large positive integers.
-L<[perl #126635]|https://rt.perl.org/Ticket/Display.html?id=126635>
-
-=item *
-
-The C<pipe()> operator would assert for DEBUGGING builds instead of
-producing the correct error message.  The condition asserted on is
-detected and reported on correctly without the assertions, so the
-assertions were removed.
-L<[perl #126480]|https://rt.perl.org/Ticket/Display.html?id=126480>
-
-=item *
-
-In some cases, failing to parse a here-doc would attempt to use freed
-memory.  This was caused by a pointer not being restored correctly.
-L<[perl #126443]|https://rt.perl.org/Ticket/Display.html?id=126443>
-
-=item *
-
-C<< @x = sort { *a = 0; $a <=> $b } 0 .. 1 >> no longer frees the GP
-for *a before restoring its SV slot.
-L<[perl #124097]|https://rt.perl.org/Ticket/Display.html?id=124097>
-
-=item *
-
-Multiple problems with the new hexadecimal floating point printf
-format C<%a> were fixed:
-L<[perl #126582]|https://rt.perl.org/Ticket/Display.html?id=126582>,
-L<[perl #126586]|https://rt.perl.org/Ticket/Display.html?id=126586>,
-L<[perl #126822]|https://rt.perl.org/Ticket/Display.html?id=126822>
-
-=item *
-
-Calling C<mg_set()> in C<leave_scope()> no longer leaks.
-
-=item *
-
-A regression from Perl v5.20 was fixed in which debugging output of regular
-expression compilation was wrong.  (The pattern was correctly compiled, but
-what got displayed for it was wrong.)
-
-=item *
-
-C<\b{sb}> works much better.  In Perl v5.22.0, this new construct didn't
-seem to give the expected results, yet passed all the tests in the
-extensive suite furnished by Unicode.  It turns out that it was because
-these were short input strings, and the failures had to do with longer
-inputs.
-
-=item *
-
-Certain syntax errors in
-L<perlrecharclass/Extended Bracketed Character Classes> caused panics
-instead of the proper error message.  This has now been fixed. [perl
-#126481]
-
-=item *
-
-Perl 5.20 added a message when a quantifier in a regular
-expression was useless, but then caused the parser to skip it;
-this caused the surplus quantifier to be silently ignored, instead
-of throwing an error. This is now fixed. [perl #126253]
-
-=item *
-
-The switch to building non-XS modules last in win32/makefile.mk (introduced
-by design as part of the changes to enable parallel building) caused the
-build of POSIX to break due to problems with the version module. This
-is now fixed.
-
-=item *
-
-Improved parsing of hex float constants.
-
-=item *
-
-Fixed an issue with C<< pack >> where C<< pack "H" >> (and C<< pack "h" >>)
-could read past the source when given a non-utf8 source, and a utf8 target.
-[perl #126325]
-
-=item *
-
-Fixed several cases where perl would abort due to a segmentation fault,
-or a C-level assert. [perl #126615], [perl #126602], [perl #126193].
-
-=item *
-
-There were places in regular expression patterns where comments (C<(?#...)>)
-weren't allowed, but should have been.  This is now fixed.
-L<[perl #116639]|https://rt.perl.org/Ticket/Display.html?id=116639>
-
-=item *
-
-Some regressions from Perl 5.20 have been fixed, in which some syntax errors in
-L<C<(?[...])>|perlrecharclass/Extended Bracketed Character Classes> constructs
-within regular expression patterns could cause a segfault instead of a proper
-error message.
-L<[perl #126180]|https://rt.perl.org/Ticket/Display.html?id=126180>
-L<[perl #126404]|https://rt.perl.org/Ticket/Display.html?id=126404>
-
-=item *
-
-Another problem with
-L<C<(?[...])>|perlrecharclass/Extended Bracketed Character Classes>
-constructs has been fixed wherein things like C<\c]> could cause panics.
-L<[perl #126181]|https://rt.perl.org/Ticket/Display.html?id=126181>
-
-=item *
-
-Some problems with attempting to extend the perl stack to around 2G or 4G
-entries have been fixed.  This was particularly an issue on 32-bit perls built
-to use 64-bit integers, and was easily noticeable with the list repetition
-operator, e.g.
-
-    @a = (1) x $big_number
-
-Formerly perl may have crashed, depending on the exact value of C<$big_number>;
-now it will typically raise an exception.
-L<[perl #125937]|https://rt.perl.org/Ticket/Display.html?id=125937>
-
-=item *
-
-In a regex conditional expression C<(?(condition)yes-pattern|no-pattern)>, if
-the condition is C<(?!)> then perl failed the match outright instead of
-matching the no-pattern.  This has been fixed.
-L<[perl #126222]|https://rt.perl.org/Ticket/Display.html?id=126222>
-
-=item *
-
-The special backtracking control verbs C<(*VERB:ARG)> now all allow an optional
-argument and set C<REGERROR>/C<REGMARK> appropriately as well.
-L<[perl #126186]|https://rt.perl.org/Ticket/Display.html?id=126186>
-
-=item *
-
-Several bugs, including a segmentation fault, have been fixed with the boundary
-checking constructs (introduced in Perl 5.22) C<\b{gcb}>, C<\b{sb}>, C<\b{wb}>,
-C<\B{gcb}>, C<\B{sb}>, and C<\B{wb}>.  All the C<\B{}> ones now match an empty
-string; none of the C<\b{}> ones do.
-L<[perl #126319]|https://rt.perl.org/Ticket/Display.html?id=126319>
-
-=item *
-
-Duplicating a closed file handle for write no longer creates a
-filename of the form F<GLOB(0xXXXXXXXX)>.  [perl #125115]
-
-=item *
-
-Warning fatality is now ignored when rewinding the stack.  This
-prevents infinite recursion when the now fatal error also causes
-rewinding of the stack.  [perl #123398]
-
-=item * 
-
-In perl v5.22.0, the logic changed when parsing a numeric parameter to the -C
-option, such that the successfully parsed number was not saved as the option
-value if it parsed to the end of the argument.  [perl #125381]
-
-=item *
-
-The PadlistNAMES macro is an lvalue again.
-
-=item *
-
-Zero -DPERL_TRACE_OPS memory for sub-threads.
-
-C<perl_clone_using()> was missing Zero init of PL_op_exec_cnt[].  This
-caused sub-threads in threaded -DPERL_TRACE_OPS builds to spew exceedingly
-large op-counts at destruct.  These counts would print %x as "ABABABAB",
-clearly a mem-poison value.
-
-=item *
-
-A leak in the XS typemap caused one scalar to be leaked each time a C<FILE *>
-or a C<PerlIO *> was C<OUTPUT:>ed or imported to Perl, since perl 5.000. These
-particular typemap entries are thought to be extremely rarely used by XS
-modules. [perl #124181]
-
-=item *
-
-C<alarm()> and C<sleep()> will now warn if the argument is a negative number
-and return undef. Previously they would pass the negative value to the
-underlying C function which may have set up a timer with a surprising value.
-
-=item *
-
-Perl can again be compiled with any Unicode version.  This used to
-(mostly) work, but was lost in v5.18 through v5.20.  The property
-C<Name_Alias> did not exist prior to Unicode 5.0.  L<Unicode::UCD>
-incorrectly said it did.  This has been fixed.
-
-=item *
-
-Very large code-points (beyond Unicode) in regular expressions no
-longer cause a buffer overflow in some cases when converted to UTF-8.
-L<[perl #125826]|https://rt.perl.org/Ticket/Display.html?id=125826>
-
-=item *
-
-The integer overflow check for the range operator (...) in list
-context now correctly handles the case where the size of the range is
-larger than the address space.  This could happen on 32-bits with
--Duse64bitint.
-L<[perl #125781]|https://rt.perl.org/Ticket/Display.html?id=125781>
-
-=item *
-
-A crash with C<< %::=(); J->${\"::"} >> has been fixed.
-L<[perl #125541]|https://rt.perl.org/Ticket/Display.html?id=125541>
-
-=item *
-
-C<qr/(?[ () ])/> no longer segfaults, giving a syntax error message instead.
-[perl #125805]
-
-=item *
-
-Regular expression possessive quantifier v5.20 regression now fixed.
-C<qr/>I<PAT>C<{>I<min>,I<max>C<}+>C</> is supposed to behave identically
-to C<qr/(?E<gt>>I<PAT>C<{>I<min>,I<max>C<})/>.  Since v5.20, this didn't
-work if I<min> and I<max> were equal.  [perl #125825]
-
-=item *
-
-C<< BEGIN <> >> no longer segfaults and properly produces an error
-message.  [perl #125341]
-
-=item *
-
-In C<tr///> an illegal backwards range like C<tr/\x{101}-\x{100}//> was
-not always detected, giving incorrect results.  This is now fixed.
-
-=back
-
-=head1 Known Problems
-
-=over 4
-
-=item *
-
-Some modules have been broken by the L<context stack rework|/Internal Changes>.
-These modules were relying on non-guaranteed implementation details in perl.
-Their maintainers have been informed, and should contact perl5-porters for
-advice if needed.  Below is a subset of these modules:
-
-=over 4
-
-=item L<Algorithm::Permute>
-
-=item L<Coro>
-
-L<Coro> and perl v5.22.0 were already incompatible due to a change in the perl,
-and the reworking on the perl context stack creates a further incompatibility.
-perl5-porters has L<discussed the issue on the mailing
-list|http://www.nntp.perl.org/group/perl.perl5.porters/2016/05/msg236174.html>.
-
-=item L<Data::Alias>
-
-=item L<RPerl>
-
-=item L<Scope::Upper>
-
-=item L<TryCatch>
-
-=back
-
-=item *
-
-The module L<lexical::underscore> no longer works on perl v5.24.0, because perl
-no longer has a lexical C<$_>!
-
-=item *
-
-C<mod_perl> has been patched for compatibility for v5.22.0 and later but no
-release has been made.  The relevant patch (and other changes) can be found in
-their source code repository, L<mirrored at
-GitHub|https://github.com/apache/mod_perl/commit/82827132efd3c2e25cc413c85af61bb63375da6e>.
-
-=back
+None, really.  The version number is a little bit higher, though.
 
 =head1 Acknowledgements
 
-Perl 5.24.0 represents approximately 11 months of development since Perl 5.22.0
-and contains approximately 360,000 lines of changes across 1,800 files from 77
-authors.
+Perl 5.25.0 represents about an hour or two of work since Perl 5.24.0 and
+contains approximately 4,900 lines of changes across 42 files from 1 author,
+who mostly just ran code-updating tools.
 
 Excluding auto-generated files, documentation and release tools, there were
-approximately 250,000 lines of changes to 1,200 .pm, .t, .c and .h files.
+approximately 66 lines of changes to 7 .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.24.0:
-
-Aaron Crane, Aaron Priven, Abigail, Achim Gratz, Alexander D'Archangel, Alex
-Vandiver, Andreas König, Andy Broad, Andy Dougherty, Aristotle Pagaltzis,
-Chase Whitener, Chas. Owens, Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn
-Ilmari Mannsåker, Dan Collins, Daniel Dragan, David Golden, David Mitchell,
-Dominic Hargreaves, Doug Bell, Dr.Ruud, Ed Avis, Ed J, Father Chrysostomos,
-Herbert Breunung, H.Merijn Brand, Hugo van der Sanden, Ivan Pozdeev, James E
-Keenan, Jan Dubois, Jarkko Hietaniemi, Jerry D. Hedden, Jim Cromie, John
-Peacock, John SJ Anderson, Karen Etheridge, Karl Williamson, kmx, Leon
-Timmermans, Ludovic E. R. Tolhurst-Cleaver, Lukas Mai, Martijn Lievaart,
-Matthew Horsfall, Mattia Barbon, Max Maischein, Mohammed El-Afifi, Nicholas
-Clark, Nicolas R., Niko Tyni, Peter John Acklam, Peter Martini, Peter
-Rabbitson, Pip Cet, Rafael Garcia-Suarez, Reini Urban, Renee Baecker, Ricardo
-Signes, Sawyer X, Shlomi Fish, Sisyphus, Stanislaw Pusep, Steffen Müller,
-Stevan Little, Steve Hay, Sullivan Beck, Thomas Sibley, Todd Rinaldo, Tom
-Hukins, Tony Cook, Unicode Consortium, Victor Adam, Vincent Pit, Vladimir
-Timofeev, Yves Orton, Zachary Storer, Zefram.
-
-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.
+improvements that became Perl 5.25.0:
 
-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.
+Ricardo Signes
 
 For a more complete list of all of Perl's historical contributors, please see
 the F<AUTHORS> file in the Perl source distribution.
@@ -2227,8 +35,8 @@ the F<AUTHORS> file in the Perl source distribution.
 
 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.
+L<https://rt.perl.org/> .  There may also be information at
+L<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
index 620eec9..73ceabc 100644 (file)
@@ -307,7 +307,7 @@ utils : $(utils1) $(utils2) $(utils3) $(utils4) $(utils5)
 extra.pods : miniperl
        @ @extra_pods.com
 
-PERLDELTA_CURRENT = [.pod]perl5240delta.pod
+PERLDELTA_CURRENT = [.pod]perl5250delta.pod
 
 $(PERLDELTA_CURRENT) : [.pod]perldelta.pod
        Copy/NoConfirm/Log $(MMS$SOURCE) $(PERLDELTA_CURRENT)
index 3820d74..0aa1f8d 100644 (file)
@@ -1544,7 +1544,7 @@ utils: $(HAVEMINIPERL) ..\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\perl5240delta.pod
+       copy ..\pod\perldelta.pod ..\pod\perl5250delta.pod
        $(MINIPERL) -I..\lib $(PL2BAT) $(UTILS)
        $(MINIPERL) -I..\lib ..\autodoc.pl ..
        $(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q ..
@@ -1640,7 +1640,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 \
-           perl5240delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+           perl5250delta.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 \
index 07de550..4d077c7 100644 (file)
@@ -1215,7 +1215,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\perl5240delta.pod
+       copy ..\pod\perldelta.pod ..\pod\perl5250delta.pod
        cd ..\win32
        $(PERLEXE) $(PL2BAT) $(UTILS)
        $(MINIPERL) -I..\lib ..\autodoc.pl ..
@@ -1313,7 +1313,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 \
-           perl5240delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+           perl5250delta.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 \
index 2fd9091..12e5e48 100644 (file)
@@ -1511,7 +1511,7 @@ utils: $(HAVEMINIPERL) ..\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\perl5240delta.pod
+       copy ..\pod\perldelta.pod ..\pod\perl5250delta.pod
        $(MINIPERL) -I..\lib $(PL2BAT) $(UTILS)
        $(MINIPERL) -I..\lib ..\autodoc.pl ..
        $(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q ..
@@ -1608,7 +1608,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 \
-           perl5240delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+           perl5250delta.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 \
index d143a52..29a9ed3 100644 (file)
@@ -44,6 +44,7 @@ POD = perl.pod        \
        perl5221delta.pod       \
        perl5222delta.pod       \
        perl5240delta.pod       \
+       perl5250delta.pod       \
        perl561delta.pod        \
        perl56delta.pod \
        perl581delta.pod        \
@@ -182,6 +183,7 @@ MAN = perl.man      \
        perl5221delta.man       \
        perl5222delta.man       \
        perl5240delta.man       \
+       perl5250delta.man       \
        perl561delta.man        \
        perl56delta.man \
        perl581delta.man        \
@@ -320,6 +322,7 @@ HTML = perl.html    \
        perl5221delta.html      \
        perl5222delta.html      \
        perl5240delta.html      \
+       perl5250delta.html      \
        perl561delta.html       \
        perl56delta.html        \
        perl581delta.html       \
@@ -458,6 +461,7 @@ TEX = perl.tex      \
        perl5221delta.tex       \
        perl5222delta.tex       \
        perl5240delta.tex       \
+       perl5250delta.tex       \
        perl561delta.tex        \
        perl56delta.tex \
        perl581delta.tex        \