-=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 cannot
-escape 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$|', 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.
-
-=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 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 sysread(), syswrite(), recv() and send() are deprecated on
-:utf8 handles
-
-The sysread(), recv(), syswrite() and 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 sysread() and recv() currently use only the C<:utf8> flag for the
-stream, ignoring the actual layers. Since sysread() and recv() do no
-UTF-8 validation they can end up creating invalidly encoded scalars.
-
-Similarly, syswrite() and 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 sysread(), recv(), syswrite() or 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 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 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 created
-regardless of whether the perl debugger was being used or not, unlike for pure
-perl subs, and ignores that the perl debugger can not debug C code.
-
-=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 *
-
-L<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 EXTEND(SP, n) and PUSHs() instead of 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' prefix for 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">
-
-(F) Transliteration (C<tr///> and C<y///>) transliterates individual
-characters. But a named sequence by definition is more than an
-individual character, and hence doing this operation on it doesn't make
-sense.
-
-=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"">
-
-(F) A "my", "our" or "state" declaration was found within another declaration,
-such as C<my ($x, my($y), $z)> or C<our (my $x)>.
-
-=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.">
-
-(F) You supplied a number to the -C option that either has extra leading
-zeroes or overflows perl's unsigned integer representation.
-
-=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">
-
-(W deprecated) The sysread(), recv(), syswrite() and 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 sysread() and recv() currently use only the C<:utf8> flag for the
-stream, ignoring the actual layers. Since sysread() and recv() do no
-UTF-8 validation they can end up creating invalidly encoded scalars.
-
-Similarly, syswrite() and 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 sysread(), recv(), syswrite() or send()
-are called on handle with the C<:utf8> layer.
-
-=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.
-
-=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 fgetc() and 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
-setenv() function to update the environment.