This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
initialisation of simple aggregate state variables
[perl5.git] / pod / perldelta.pod
index 06dcd1d..e1e608c 100644 (file)
 
 =head1 NAME
 
-perldelta - what is new for perl v5.26.0
+[ this is a template for a new perldelta file.  Any text flagged as XXX needs
+to be processed before release. ]
 
-=head1 DESCRIPTION
-
-This document describes the differences between the 5.24.0 release and the
-5.26.0 release.
-
-=head1 Notice
-
-This release includes three updates with widespread effects:
-
-=over 4
-
-=item * C<"."> no longer in C<@INC>
+perldelta - what is new for perl v5.27.6
 
-For security reasons, the current directory (C<".">) is no longer included
-by default at the end of the module search path (C<@INC>). This may have
-widespread implications for the building, testing and installing of
-modules, and for the execution of scripts.  See the section
-L<< Removal of the current directory (C<".">) from C<@INC> >>
-for the full details.
-
-=item * C<do> may now warn
+=head1 DESCRIPTION
 
-C<do> now gives a deprecation warning when it fails to load a file which
-it would have loaded had C<"."> been in C<@INC>.
+This document describes differences between the 5.27.5 release and the 5.27.6
+release.
 
-=item * In regular expression patterns, a literal left brace C<"{">
-should be escaped
+If you are upgrading from an earlier release such as 5.27.4, first read
+L<perl5275delta>, which describes differences between 5.27.4 and 5.27.5.
 
-See L</Unescaped literal C<"{"> characters in regular expression patterns are no longer permissible>.
+=head1 Notice
 
-=back
+XXX Any important notices here
 
 =head1 Core Enhancements
 
-=head2 Lexical subroutines are no longer experimental
-
-Using the C<lexical_subs> feature introduced in v5.18 no longer emits a warning.  Existing
-code that disables the C<experimental::lexical_subs> warning category
-that the feature previously used will continue to work.  The
-C<lexical_subs> feature has no effect; all Perl code can use lexical
-subroutines, regardless of what feature declarations are in scope.
-
-=head2 Indented Here-documents
-
-This adds a new modifier C<"~"> to here-docs that tells the parser
-that it should look for C</^\s*$DELIM\n/> as the closing delimiter.
-
-These syntaxes are all supported:
-
-    <<~EOF;
-    <<~\EOF;
-    <<~'EOF';
-    <<~"EOF";
-    <<~`EOF`;
-    <<~ 'EOF';
-    <<~ "EOF";
-    <<~ `EOF`;
-
-The C<"~"> modifier will strip, from each line in the here-doc, the
-same whitespace that appears before the delimiter.
-
-Newlines will be copied as-is, and lines that don't include the
-proper beginning whitespace will cause perl to croak.
-
-For example:
-
-    if (1) {
-      print <<~EOF;
-        Hello there
-        EOF
-    }
-
-prints "Hello there\n" with no leading whitespace.
-
-=head2 New regular expression modifier C</xx>
-
-Specifying two C<"x"> characters to modify a regular expression pattern
-does everything that a single one does, but additionally TAB and SPACE
-characters within a bracketed character class are generally ignored and
-can be added to improve readability, like
-S<C</[ ^ A-Z d-f p-x ]/xx>>.  Details are at
-L<perlre/E<sol>x and E<sol>xx>.
-
-=head2 C<@{^CAPTURE}>, C<%{^CAPTURE}>, and C<%{^CAPTURE_ALL}>
-
-C<@{^CAPTURE}> exposes the capture buffers of the last match as an
-array.  So C<$1> is C<${^CAPTURE}[0]>.  This is a more efficient equivalent
-to code like C<substr($matched_string,$-[0],$+[0]-$-[0])>, and you don't
-have to keep track of the C<$matched_string> either.  This variable has no
-single character equivalent.  Note that, like the other regex magic variables,
-the contents of this variable is dynamic; if you wish to store it beyond
-the lifetime of the match you must copy it to another array.
-
-C<%{^CAPTURE}> is equivalent to C<%+> (I<i.e.>, named captures).  Other than
-being more self-documenting there is no difference between the two forms.
-
-C<%{^CAPTURE_ALL}> is equivalent to C<%-> (I<i.e.>, all named captures).
-Other than being more self-documenting there is no difference between the
-two forms.
-
-=head2 Declaring a reference to a variable
-
-As an experimental feature, Perl now allows the referencing operator to come
-after L<C<my()>|perlfunc/my>, L<C<state()>|perlfunc/state>,
-L<C<our()>|perlfunc/our>, or L<C<local()>|perlfunc/local>.  This syntax must
-be enabled with C<use feature 'declared_refs'>.  It is experimental, and will
-warn by default unless C<no warnings 'experimental::refaliasing'> is in effect.
-It is intended mainly for use in assignments to references.  For example:
+XXX New core language features go here.  Summarize user-visible core language
+enhancements.  Particularly prominent performance optimisations could go
+here, but most should go in the L</Performance Enhancements> section.
 
-    use experimental 'refaliasing', 'declared_refs';
-    my \$a = \$b;
+[ List each enhancement as a =head2 entry ]
 
-See L<perlref/Assigning to References> for more details.
+=head2 Initialisation of aggregate state variables
 
-=head2 Unicode 9.0 is now supported
-
-A list of changes is at L<http://www.unicode.org/versions/Unicode9.0.0/>.
-Modules that are shipped with core Perl but not maintained by p5p do not
-necessarily support Unicode 9.0.  L<Unicode::Normalize> does work on 9.0.
-
-=head2 Use of C<\p{I<script>}> uses the improved Script_Extensions property
-
-Unicode 6.0 introduced an improved form of the Script (C<sc>) property, and
-called it Script_Extensions (C<scx>).  Perl now uses this improved
-version when a property is specified as just C<\p{I<script>}>.  This
-should make programs more accurate when determining if a character is
-used in a given script, but there is a slight chance of breakage for
-programs that very specifically needed the old behavior.  The meaning of
-compound forms, like C<\p{sc=I<script>}> are unchanged.  See
-L<perlunicode/Scripts>.
-
-=head2 Perl can now do default collation in UTF-8 locales on platforms
-that support it
-
-Some platforms natively do a reasonable job of collating and sorting in
-UTF-8 locales.  Perl now works with those.  For portability and full
-control, L<Unicode::Collate> is still recommended, but now you may
-not need to do anything special to get good-enough results, depending on
-your application.  See
-L<perllocale/Category C<LC_COLLATE>: Collation: Text Comparisons and Sorting>.
-
-=head2 Better locale collation of strings containing embedded C<NUL>
-characters
-
-In locales that have multi-level character weights, C<NUL>s are now
-ignored at the higher priority ones.  There are still some gotchas in
-some strings, though.  See
-L<perllocale/Collation of strings containing embedded C<NUL> characters>.
-
-=head2 C<CORE> subroutines for hash and array functions callable via
-reference
-
-The hash and array functions in the C<CORE> namespace (C<keys>, C<each>,
-C<values>, C<push>, C<pop>, C<shift>, C<unshift> and C<splice>) can now
-be called with ampersand syntax (C<&CORE::keys(\%hash>) and via reference
-(C<< my $k = \&CORE::keys; $k-E<gt>(\%hash) >>).  Previously they could only be
-used when inlined.
-
-=head2 New Hash Function For 64-bit Builds
-
-We have switched to a hybrid hash function to better balance
-performance for short and long keys.
-
-For short keys, 16 bytes and under, we use an optimised variant of
-One At A Time Hard, and for longer keys we use Siphash 1-3.  For very
-long keys this is a big improvement in performance.  For shorter keys
-there is a modest improvement.
+A persistent lexical array or hash variable can now be initialized,
+by an expression such as C<state @a = qw(x y z)>.  Initialization of a
+list of persistent lexical variables is still not possible.
 
 =head1 Security
 
-=head2 Removal of the current directory (C<".">) from C<@INC>
+XXX Any security-related notices go here.  In particular, any security
+vulnerabilities closed should be noted here rather than in the
+L</Selected Bug Fixes> section.
 
-The perl binary includes a default set of paths in C<@INC>.  Historically
-it has also included the current directory (C<".">) as the final entry,
-unless run with taint mode enabled (C<perl -T>).  While convenient, this has
-security implications: for example, where a script attempts to load an
-optional module when its current directory is untrusted (such as F</tmp>),
-it could load and execute code from under that directory.
+[ List each security issue as a =head2 entry ]
 
-Starting with v5.26, C<"."> is always removed by default, not just under
-tainting.  This has major implications for installing modules and executing
-scripts.
-
-The following new features have been added to help ameliorate these
-issues.
+=head1 Incompatible Changes
 
-=over
+XXX For a release on a stable branch, this section aspires to be:
 
-=item * F<Configure -Udefault_inc_excludes_dot>
+    There are no changes intentionally incompatible with 5.XXX.XXX
+    If any exist, they are bugs, and we request that you submit a
+    report.  See L</Reporting Bugs> below.
 
-There is a new F<Configure> option, C<default_inc_excludes_dot> (enabled
-by default) which builds a perl executable without C<".">; unsetting this
-option using C<-U> reverts perl to the old behaviour.  This may fix your
-path issues but will reintroduce all the security concerns, so don't
-build a perl executable like this unless you're I<really> confident that
-such issues are not a concern in your environment.
+[ List each incompatible change as a =head2 entry ]
 
-=item * C<PERL_USE_UNSAFE_INC>
+=head1 Deprecations
 
-There is a new environment variable recognised by the perl interpreter.
-If this variable has the value 1 when the perl interpreter starts up,
-then C<"."> will be automatically appended to C<@INC> (except under tainting).
+XXX Any deprecated features, syntax, modules etc. should be listed here.
 
-This allows you restore the old perl interpreter behaviour on a
-case-by-case basis.  But note that this is intended to be a temporary crutch,
-and this feature will likely be removed in some future perl version.
-It is currently set by the C<cpan> utility and C<Test::Harness> to
-ease installation of CPAN modules which have not been updated to handle the
-lack of dot.  Once again, don't use this unless you are sure that this
-will not reintroduce any security concerns.
+=head2 Module removals
 
-=item * A new deprecation warning issued by C<do>.
+XXX Remove this section if inapplicable.
 
-While it is well-known that C<use> and C<require> use C<@INC> to search
-for the file to load, many people don't realise that C<do "file"> also
-searches C<@INC> if the file is a relative path.  With the removal of C<".">,
-a simple C<do "file.pl"> will fail to read in and execute C<file.pl> from
-the current directory.  Since this is commonly expected behaviour, a new
-deprecation warning is now issued whenever C<do> fails to load a file which
-it otherwise would have found if a dot had been in C<@INC>.
+The following modules will be removed from the core distribution in a
+future release, and will at that time need to be installed from CPAN.
+Distributions on CPAN which require these modules will need to list them as
+prerequisites.
 
-=back
+The core versions of these modules will now issue C<"deprecated">-category
+warnings to alert you to this fact.  To silence these deprecation warnings,
+install the modules in question from CPAN.
 
-Here are some things script and module authors may need to do to make
-their software work in the new regime.
+Note that these are (with rare exceptions) fine modules that you are encouraged
+to continue to use.  Their disinclusion from core primarily hinges on their
+necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
+not usually on concerns over their design.
 
 =over
 
-=item * Script authors
-
-If the issue is within your own code (rather than within included
-modules), then you have two main options.  Firstly, if you are confident
-that your script will only be run within a trusted directory (under which
-you expect to find trusted files and modules), then add C<"."> back into the
-path; I<e.g.>:
-
-    BEGIN {
-        my $dir = "/some/trusted/directory";
-        chdir $dir or die "Can't chdir to $dir: $!\n";
-        # safe now
-        push @INC, '.';
-    }
-
-    use "Foo::Bar"; # may load /some/trusted/directory/Foo/Bar.pm
-    do "config.pl"; # may load /some/trusted/directory/config.pl
-
-On the other hand, if your script is intended to be run from within
-untrusted directories (such as F</tmp>), then your script suddenly failing
-to load files may be indicative of a security issue.  You most likely want
-to replace any relative paths with full paths; for example,
-
-    do "foo_config.pl"
-
-might become
-
-    do "$ENV{HOME}/foo_config.pl"
-
-If you are absolutely certain that you want your script to load and
-execute a file from the current directory, then use a C<./> prefix; for
-example:
-
-    do "./foo_config.pl"
-
-=item * Installing and using CPAN modules
-
-If you install a CPAN module using an automatic tool like C<cpan>, then
-this tool will itself set the C<PERL_USE_UNSAFE_INC> environment variable
-while building and testing the module, which may be sufficient to install
-a distribution which hasn't been updated to be dot-aware.  If you want to
-install such a module manually, then you'll need to replace the
-traditional invocation:
-
-    perl Makefile.PL && make && make test && make install
-
-with something like
-
-    (export PERL_USE_UNSAFE_INC=1; \
-     perl Makefile.PL && make && make test && make install)
+=item XXX
 
-Note that this only helps build and install an unfixed module.  It's
-possible for the tests to pass (since they were run under
-C<PERL_USE_UNSAFE_INC=1>), but for the module itself to fail to perform
-correctly in production.  In this case, you may have to temporarily modify
-your script until a fixed version of the module is released.
-For example:
-
-    use Foo::Bar;
-    {
-        local @INC = (@INC, '.');
-        # assuming read_config() needs '.' in @INC
-        $config = Foo::Bar->read_config();
-    }
-
-This is only rarely expected to be necessary.  Again, if doing this,
-assess the resultant risks first.
-
-=item * Module Authors
-
-If you maintain a CPAN distribution, it may need updating to run in
-a dotless environment.  Although C<cpan> and other such tools will
-currently set the C<PERL_USE_UNSAFE_INC> during module build, this is a
-temporary workaround for the set of modules which rely on C<"."> being in
-C<@INC> for installation and testing, and this may mask deeper issues.  It
-could result in a module which passes tests and installs, but which
-fails at run time.
-
-During build, test, and install, it will normally be the case that any perl
-processes will be executing directly within the root directory of the
-untarred distribution, or a known subdirectory of that, such as F<t/>.  It
-may well be that F<Makefile.PL> or F<t/foo.t> will attempt to include
-local modules and configuration files using their direct relative
-filenames, which will now fail.
-
-However, as described above, automatic tools like F<cpan> will (for now)
-set the C<PERL_USE_UNSAFE_INC> environment variable, which introduces
-dot during a build.
-
-This makes it likely that your existing build and test code will work, but
-this may mask issues with your code which only manifest when used after
-install.  It is prudent to try and run your build process with that
-variable explicitly disabled:
-
-    (export PERL_USE_UNSAFE_INC=0; \
-     perl Makefile.PL && make && make test && make install)
-
-This is more likely to show up any potential problems with your module's
-build process, or even with the module itself.  Fixing such issues will
-ensure both that your module can again be installed manually, and that
-it will still build once the C<PERL_USE_UNSAFE_INC> crutch goes away.
-
-When fixing issues in tests due to the removal of dot from C<@INC>,
-reinsertion of dot into C<@INC> should be performed with caution, for this
-too may suppress real errors in your runtime code.  You are encouraged
-wherever possible to apply the aforementioned approaches with explicit
-absolute/relative paths, or to relocate your needed files into a
-subdirectory and insert that subdirectory into C<@INC> instead.
-
-If your runtime code has problems under the dotless C<@INC>, then the comments
-above on how to fix for script authors will mostly apply here too.  Bear in
-mind though that it is considered bad form for a module to globally add a dot to
-C<@INC>, since it introduces both a security risk and hides issues of
-accidentally requiring dot in C<@INC>, as explained above.
+XXX Note that deprecated modules should be listed here even if they are listed
+as an updated module in the L</Modules and Pragmata> section.
 
 =back
 
-=head2 Escaped colons and relative paths in PATH
-
-On Unix systems, Perl treats any relative paths in the C<PATH> environment
-variable as tainted when starting a new process.  Previously, it was
-allowing a backslash to escape a colon (unlike the OS), consequently
-allowing relative paths to be considered safe if the PATH was set to
-something like C</\:.>.  The check has been fixed to treat C<"."> as tainted
-in that example.
-
-=head2 New C<-Di> switch is now required for PerlIO debugging output
-
-This is used for debugging of code within PerlIO to avoid recursive
-calls.  Previously this output would be sent to the file specified
-by the C<PERLIO_DEBUG> environment variable if perl wasn't running
-setuid and the C<-T> or C<-t> switches hadn't been parsed yet.
-
-If perl performed output at a point where it hadn't yet parsed its
-switches this could result in perl creating or overwriting the file
-named by C<PERLIO_DEBUG> even when the C<-T> switch had been supplied.
-
-Perl now requires the C<-Di> switch to be present before it will produce
-PerlIO debugging
-output.  By default this is written to C<stderr>, but can optionally
-be redirected to a file by setting the C<PERLIO_DEBUG> environment
-variable.
-
-If perl is running setuid or the C<-T> switch was supplied,
-C<PERLIO_DEBUG> is ignored and the debugging output is sent to
-C<stderr> as for any other C<-D> switch.
-
-=head1 Incompatible Changes
-
-=head2 Unescaped literal C<"{"> characters in regular expression
-patterns are no longer permissible
-
-You have to now say something like C<"\{"> or C<"[{]"> to specify to
-match a LEFT CURLY BRACKET; otherwise, it is a fatal pattern compilation
-error.  This change will allow future extensions to the language.
-
-These have been deprecated since v5.16, with a deprecation message
-raised for some uses starting in v5.22.  Unfortunately, the code added
-to raise the message was buggy and failed to warn in some cases where
-it should have.  Therefore, enforcement of this ban for these cases is
-deferred until Perl 5.30, but the code has been fixed to raise a
-default-on deprecation message for them in the meantime.
-
-Some uses of literal C<"{"> occur in contexts where we do not foresee
-the meaning ever being anything but the literal, such as the very first
-character in the pattern, or after a C<"|"> meaning alternation.  Thus
-
- qr/{fee|{fie/
-
-matches either of the strings C<{fee> or C<{fie>.  To avoid forcing
-unnecessary code changes, these uses do not need to be escaped, and no
-warning is raised about them, and there are no current plans to change this.
-
-But it is always correct to escape C<"{">, and the simple rule to
-remember is to always do so.
-
-See L<Unescaped left brace in regex is illegal here|perldiag/Unescaped left brace in regex is illegal here in regex; marked by S<E<lt>-- HERE> in mE<sol>%sE<sol>>.
-
-=head2 C<scalar(%hash)> return signature changed
-
-The value returned for C<scalar(%hash)> will no longer show information about
-the buckets allocated in the hash.  It will simply return the count of used
-keys.  It is thus equivalent to C<0+keys(%hash)>.
-
-A form of backward compatibility is provided via
-L<C<Hash::Util::bucket_ratio()>|Hash::Util/bucket_ratio> which provides
-the same behavior as
-C<scalar(%hash)> provided in Perl 5.24 and earlier.
-
-=head2 C<keys> returned from an lvalue subroutine
-
-C<keys> returned from an lvalue subroutine can no longer be assigned
-to in list context.
-
-    sub foo : lvalue { keys(%INC) }
-    (foo) = 3; # death
-    sub bar : lvalue { keys(@_) }
-    (bar) = 3; # also an error
-
-This makes the lvalue sub case consistent with C<(keys %hash) = ...> and
-C<(keys @_) = ...>, which are also errors.
-L<[perl #128187]|https://rt.perl.org/Public/Bug/Display.html?id=128187>
-
-=head2 The C<${^ENCODING}> facility has been removed
-
-The special behaviour associated with assigning a value to this variable
-has been removed.  As a consequence, the L<encoding> pragma's default mode
-is no longer supported.  If
-you still need to write your source code in encodings other than UTF-8, use a
-source filter such as L<Filter::Encoding> on CPAN or L<encoding>'s C<Filter>
-option.
-
-=head2 C<POSIX::tmpnam()> has been removed
-
-The fundamentally unsafe C<tmpnam()> interface was deprecated in
-Perl 5.22 and has now been removed.  In its place, you can use,
-for example, the L<File::Temp> interfaces.
-
-=head2 require ::Foo::Bar is now illegal.
-
-Formerly, C<require ::Foo::Bar> would try to read F</Foo/Bar.pm>.  Now any
-bareword require which starts with a double colon dies instead.
-
-=head2 Literal control character variable names are no longer permissible
-
-A variable name may no longer contain a literal control character under
-any circumstances.  These previously were allowed in single-character
-names on ASCII platforms, but have been deprecated there since Perl
-5.20.  This affects things like C<$I<\cT>>, where I<\cT> is a literal
-control (such as a C<NAK> or C<NEGATIVE ACKNOWLEDGE> character) in the
-source code.
-
-=head2 C<NBSP> is no longer permissible in C<\N{...}>
-
-The name of a character may no longer contain non-breaking spaces.  It
-has been deprecated to do so since Perl 5.22.
-
-=head1 Deprecations
-
-=head2 String delimiters that aren't stand-alone graphemes are now deprecated
-
-For Perl to eventually allow string delimiters to be Unicode
-grapheme clusters (which look like a single character, but may be
-a sequence of several ones), we have to stop allowing a single character
-delimiter that isn't a grapheme by itself.  These are unlikely to exist
-in actual code, as they would typically display as attached to the
-character in front of them.
-
-=head2 C<\cI<X>> that maps to a printable is no longer deprecated
-
-This means we have no plans to remove this feature.  It still raises a
-warning, but only if syntax warnings are enabled.  The feature was
-originally intended to be a way to express non-printable characters that
-don't have a mnemonic (C<\t> and C<\n> are mnemonics for two
-non-printable characters, but most non-printables don't have a
-mnemonic.)  But the feature can be used to specify a few printable
-characters, though those are more clearly expressed as the printable
-itself.  See
-L<http://www.nntp.perl.org/group/perl.perl5.porters/2017/02/msg242944.html>.
+[ List each other deprecation as a =head2 entry ]
 
 =head1 Performance Enhancements
 
-=over 4
-
-=item *
-
-A hash in boolean context is now sometimes faster, I<e.g.>
-
-    if (!%h) { ... }
-
-This was already special-cased, but some cases were missed (such as
-C<grep %$_, @AoH>), and even the ones which weren't have been improved.
+XXX Changes which enhance performance without changing behaviour go here.
+There may well be none in a stable release.
 
-=item * New Faster Hash Function on 64 bit builds
+[ List each enhancement as an =item entry ]
 
-We use a different hash function for short and long keys.  This should
-improve performance and security, especially for long keys.
-
-=item * readline is faster
-
-Reading from a file line-by-line with C<readline()> or C<< E<lt>E<gt> >> should
-now typically be faster due to a better implementation of the code that
-searches for the next newline character.
+=over 4
 
 =item *
 
-Assigning one reference to another, I<e.g.> C<$ref1 = $ref2> has been
-optimized in some cases.
+Many string concatenation expressions are now considerably faster, due
+to the introduction internally of a C<multiconcat> opcode which combines
+multiple concatenations, and optionally a C<=> or C<.=>, into a single
+action. For example, apart from retrieving C<$s>, C<$a> and C<$b>, this
+whole expression is now handled as a single op:
 
-=item *
+    $s .= "a=$a b=$b\n"
 
-Remove some exceptions to creating Copy-on-Write strings. The string
-buffer growth algorithm has been slightly altered so that you're less
-likely to encounter a string which can't be COWed.
+As a special case, if the LHS of an assign is a lexical variable or
+C<my $s>, the op itself handles retrieving the lexical variable, which
+is faster.
 
-=item *
+In general, the more the expression includes a mix of constant strings and
+variable expressions, the longer the expression, and the more it mixes
+together non-utf8 and utf8 strings, the more marked the performance
+improvement. For example on a C<x86_64> system, this code has been
+benchmarked running four times faster:
 
-Better optimise array and hash assignment: where an array or hash appears
-in the LHS of a list assignment, such as C<(..., @a) = (...);>, it's
-likely to be considerably faster, especially if it involves emptying the
-array/hash. For example, this code runs about a third faster compared to
-Perl 5.24.0:
+    my $s;
+    my $a = "ab\x{100}cde";
+    my $b = "fghij";
+    my $c = "\x{101}klmn";
 
-    my @a;
     for my $i (1..10_000_000) {
-        @a = (1,2,3);
-        @a = ();
+        $s = "\x{100}wxyz";
+        $s .= "foo=$a bar=$b baz=$c";
     }
 
-=item *
+In addition, C<sprintf> expressions which have a constant format
+containing only C<%s> and C<%%> format elements, and which have a fixed
+number of arguments, are now also optimised into a C<multiconcat> op.
 
-Converting a single-digit string to a number is now substantially faster.
+=back
 
-=item *
+=head1 Modules and Pragmata
 
-The C<split> builtin is now slightly faster in many cases: in particular
-for the two specially-handled forms
+XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
+go here.  If Module::CoreList is updated, generate an initial draft of the
+following sections using F<Porting/corelist-perldelta.pl>.  A paragraph summary
+for important changes should then be added by hand.  In an ideal world,
+dual-life modules would have a F<Changes> file that could be cribbed.
 
-    my    @a = split ...;
-    local @a = split ...;
+The list of new and updated modules is modified automatically as part of
+preparing a Perl release, so the only reason to manually add entries here is if
+you're summarising the important changes in the module update. (Also, if the
+manually-added details don't match the automatically-generated ones, the
+release manager will have to investigate the situation carefully.)
 
-=item *
+[ Within each section, list entries as an =item entry ]
 
-The rather slow implementation for the experimental subroutine signatures
-feature has been made much faster; it is now comparable in speed with the
-traditional C<my ($a, $b, @c) = @_>.
+=head2 New Modules and Pragmata
 
-=item *
+=over 4
 
-Bareword constant strings are now permitted to take part in constant
-folding.  They were originally exempted from constant folding in August 1999,
-during the development of Perl 5.6, to ensure that C<use strict "subs">
-would still apply to bareword constants.  That has now been accomplished a
-different way, so barewords, like other constants, now gain the performance
-benefits of constant folding.
+=item *
 
-This also means that void-context warnings on constant expressions of
-barewords now report the folded constant operand, rather than the operation;
-this matches the behaviour for non-bareword constants.
+XXX
 
 =back
 
-=head1 Modules and Pragmata
-
 =head2 Updated Modules and Pragmata
 
 =over 4
 
 =item *
 
-IO::Compress has been upgraded from version 2.069 to 2.074.
-
-=item *
-
-L<Archive::Tar> has been upgraded from version 2.04 to 2.24.
-
-=item *
-
-L<arybase> has been upgraded from version 0.11 to 0.12.
-
-=item *
+L<Carp> has been upgraded from version 1.43 to 1.44.
 
-L<attributes> has been upgraded from version 0.27 to 0.29.
+If a package on the call stack contains a constant named C<ISA>, Carp no
+longer throws a "Not a GLOB reference" error.
 
-The deprecation message for the C<:unique> and C<:locked> attributes
-now mention that they will disappear in Perl 5.28.
+=back
 
-=item *
+=head2 Removed Modules and Pragmata
 
-L<B> has been upgraded from version 1.62 to 1.68.
+=over 4
 
 =item *
 
-L<B::Concise> has been upgraded from version 0.996 to 0.999.
-
-Its output is now more descriptive for C<op_private> flags.
-
-=item *
+XXX
 
-L<B::Debug> has been upgraded from version 1.23 to 1.24.
+=back
 
-=item *
+=head1 Documentation
 
-L<B::Deparse> has been upgraded from version 1.37 to 1.40.
+XXX Changes to files in F<pod/> go here.  Consider grouping entries by
+file and be sure to link to the appropriate page, e.g. L<perlfunc>.
 
-=item *
+=head2 New Documentation
 
-L<B::Xref> has been upgraded from version 1.05 to 1.06.
+XXX Changes which create B<new> files in F<pod/> go here.
 
-It now uses 3-arg C<open()> instead of 2-arg C<open()>.
-L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122>
+=head3 L<XXX>
 
-=item *
+XXX Description of the purpose of the new file here
 
-L<base> has been upgraded from version 2.23 to 2.25.
+=head2 Changes to Existing Documentation
 
-=item *
+We have attempted to update the documentation to reflect the changes
+listed in this document.  If you find any we have missed, send email
+to L<perlbug@perl.org|mailto:perlbug@perl.org>.
 
-L<bignum> has been upgraded from version 0.42 to 0.47.
+XXX Changes which significantly change existing files in F<pod/> go here.
+However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
+section.
 
-=item *
+Additionally, the following selected changes have been made:
 
-L<Carp> has been upgraded from version 1.40 to 1.42.
+=head3 L<perldiag/Variable length lookbehind not implemented in regex m/%s/>
 
-=item *
+This now gives more ideas as to workarounds to the issue that was
+introduced in Perl 5.18 (but not documented explicitly in its perldelta)
+for the fact that some Unicode C</i> rules cause a few sequences such as
 
-L<charnames> has been upgraded from version 1.43 to 1.44.
+ (?<!st)
 
-=item *
+to be considered variable length, and hence disallowed.
 
-L<Compress::Raw::Bzip2> has been upgraded from version 2.069 to 2.074.
+=over 4
 
 =item *
 
-L<Compress::Raw::Zlib> has been upgraded from version 2.069 to 2.074.
-
-=item *
+XXX Description of the change here
 
-L<Config::Perl::V> has been upgraded from version 0.25 to 0.28.
+=back
 
-=item *
+=head1 Diagnostics
 
-L<CPAN> has been upgraded from version 2.11 to 2.18.
+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>.
 
-=item *
+XXX New or changed warnings emitted by the core's C<C> code go here.  Also
+include any changes in L<perldiag> that reconcile it to the C<C> code.
 
-L<CPAN::Meta> has been upgraded from version 2.150005 to 2.150010.
+=head2 New Diagnostics
 
-=item *
+XXX Newly added diagnostic messages go under here, separated into New Errors
+and New Warnings
 
-L<Data::Dumper> has been upgraded from version 2.160 to 2.167.
+=head3 New Errors
 
-The XS implementation now supports Deparse.
+=over 4
 
 =item *
 
-L<DB_File> has been upgraded from version 1.835 to 1.840.
+XXX L<message|perldiag/"message">
 
-=item *
-
-L<Devel::Peek> has been upgraded from version 1.23 to 1.26.
+=back
 
-=item *
+=head3 New Warnings
 
-L<Devel::PPPort> has been upgraded from version 3.32 to 3.35.
+=over 4
 
 =item *
 
-L<Devel::SelfStubber> has been upgraded from version 1.05 to 1.06.
-
-It now uses 3-arg C<open()> instead of 2-arg C<open()>.
-L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122>
-
-=item *
+XXX L<message|perldiag/"message">
 
-L<diagnostics> has been upgraded from version 1.34 to 1.36.
+=back
 
-It now uses 3-arg C<open()> instead of 2-arg C<open()>.
-L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122>
+=head2 Changes to Existing Diagnostics
 
-=item *
+XXX Changes (i.e. rewording) of diagnostic messages go here
 
-L<Digest> has been upgraded from version 1.17 to 1.17_01.
+=over 4
 
 =item *
 
-L<Digest::MD5> has been upgraded from version 2.54 to 2.55.
+The diagnostic C<Initialization of state variables in list context
+currently forbidden> has changed to C<Initialization of state variables
+in list currently forbidden>, because list-context initialization of
+single aggregate state variables is now permitted.
 
 =item *
 
-L<Digest::SHA> has been upgraded from version 5.95 to 5.96.
-
-=item *
+XXX Describe change here
 
-L<DynaLoader> has been upgraded from version 1.38 to 1.42.
+=back
 
-=item *
+=head1 Utility Changes
 
-L<Encode> has been upgraded from version 2.80 to 2.88.
+XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
+Most of these are built within the directory F<utils>.
 
-=item *
+[ List utility changes as a =head2 entry for each utility and =item
+entries for each change
+Use L<XXX> with program names to get proper documentation linking. ]
 
-L<encoding> has been upgraded from version 2.17 to 2.19.
+=head2 L<XXX>
 
-This module's default mode is no longer supported.  It now
-dies when imported, unless the C<Filter> option is being used.
+=over 4
 
 =item *
 
-L<encoding::warnings> has been upgraded from version 0.12 to 0.13.
+XXX
 
-This module is no longer supported.  It emits a warning to
-that effect and then does nothing.
+=back
 
-=item *
+=head1 Configuration and Compilation
 
-L<Errno> has been upgraded from version 1.25 to 1.28.
+XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
+go here.  Any other changes to the Perl build process should be listed here.
+However, any platform-specific changes should be listed in the
+L</Platform Support> section, instead.
 
-It now documents that using C<%!> automatically loads Errno for you.
+[ List changes as an =item entry ].
 
-It now uses 3-arg C<open()> instead of 2-arg C<open()>.
-L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122>
+=over 4
 
-=item *
+=item New probes
 
-L<ExtUtils::Embed> has been upgraded from version 1.33 to 1.34.
+=over 2
 
-It now uses 3-arg C<open()> instead of 2-arg C<open()>.
-L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122>
+=item HAS_BUILTIN_ADD_OVERFLOW
 
-=item *
+=item HAS_BUILTIN_MUL_OVERFLOW
 
-L<ExtUtils::MakeMaker> has been upgraded from version 7.10_01 to 7.24.
+=item HAS_BUILTIN_SUB_OVERFLOW
 
-=item *
+=item HAS_THREAD_SAFE_NL_LANGINFO_L
 
-L<ExtUtils::Miniperl> has been upgraded from version 1.05 to 1.06.
+=item HAS_LOCALECONV_L
 
-=item *
+=item HAS_MBRLEN
 
-L<ExtUtils::ParseXS> has been upgraded from version 3.31 to 3.34.
+=item HAS_MBRTOWC
 
-=item *
+=item HAS_MEMRCHR
 
-L<ExtUtils::Typemaps> has been upgraded from version 3.31 to 3.34.
+=item HAS_NANOSLEEP
 
-=item *
+=item HAS_STRNLEN
 
-L<feature> has been upgraded from version 1.42 to 1.47.
+=item HAS_STRTOLD_L
 
-=item *
+=item I_WCHAR
 
-L<File::Copy> has been upgraded from version 2.31 to 2.32.
+=back
 
-=item *
+=back
 
-L<File::Fetch> has been upgraded from version 0.48 to 0.52.
+=head1 Testing
 
-=item *
+XXX Any significant changes to the testing of a freshly built perl should be
+listed here.  Changes which create B<new> files in F<t/> go here as do any
+large changes to the testing harness (e.g. when parallel testing was added).
+Changes to existing files in F<t/> aren't worth summarizing, although the bugs
+that they represent may be covered elsewhere.
 
-L<File::Glob> has been upgraded from version 1.26 to 1.28.
+XXX If there were no significant test changes, say this:
 
-It now Issues a deprecation message for C<File::Glob::glob()>.
+Tests were added and changed to reflect the other additions and changes
+in this release.
 
-=item *
+XXX If instead there were significant changes, say this:
 
-L<File::Spec> has been upgraded from version 3.63 to 3.67.
+Tests were added and changed to reflect the other additions and
+changes in this release.  Furthermore, these significant changes were
+made:
 
-=item *
+[ List each test improvement as an =item entry ]
 
-L<FileHandle> has been upgraded from version 2.02 to 2.03.
+=over 4
 
 =item *
 
-L<Filter::Simple> has been upgraded from version 0.92 to 0.93.
+XXX
 
-It no longer treats C<no MyFilter> immediately following C<use MyFilter> as
-end-of-file.
-L<[perl #107726]|https://rt.perl.org/Public/Bug/Display.html?id=107726>
+=back
 
-=item *
+=head1 Platform Support
 
-L<Getopt::Long> has been upgraded from version 2.48 to 2.49.
+XXX Any changes to platform support should be listed in the sections below.
 
-=item *
+[ Within the sections, list each platform as an =item entry with specific
+changes as paragraphs below it. ]
 
-L<Getopt::Std> has been upgraded from version 1.11 to 1.12.
+=head2 New Platforms
 
-=item *
+XXX List any platforms that this version of perl compiles on, that previous
+versions did not.  These will either be enabled by new files in the F<hints/>
+directories, or new subdirectories and F<README> files at the top level of the
+source tree.
 
-L<Hash::Util> has been upgraded from version 0.19 to 0.22.
+=over 4
 
-=item *
+=item XXX-some-platform
 
-L<HTTP::Tiny> has been upgraded from version 0.056 to 0.070.
+XXX
 
-Internal 599-series errors now include the redirect history.
+=back
 
-=item *
+=head2 Discontinued Platforms
 
-L<I18N::LangTags> has been upgraded from version 0.40 to 0.42.
+XXX List any platforms that this version of perl no longer compiles on.
 
-It now uses 3-arg C<open()> instead of 2-arg C<open()>.
-L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122>
+=over 4
 
-=item *
+=item XXX-some-platform
 
-L<IO> has been upgraded from version 1.36 to 1.38.
+XXX
 
-=item *
+=back
 
-L<IO::Socket::IP> has been upgraded from version 0.37 to 0.38.
+=head2 Platform-Specific Notes
 
-=item *
+XXX List any changes for specific platforms.  This could include configuration
+and compilation changes or changes in portability/compatibility.  However,
+changes within modules for platforms should generally be listed in the
+L</Modules and Pragmata> section.
 
-L<IPC::Cmd> has been upgraded from version 0.92 to 0.96.
+=over 4
 
-=item *
+=item XXX-some-platform
 
-L<IPC::SysV> has been upgraded from version 2.06_01 to 2.07.
+XXX
 
-=item *
+=back
 
-L<JSON::PP> has been upgraded from version 2.27300 to 2.27400_02.
+=head1 Internal Changes
 
-=item *
+XXX Changes which affect the interface available to C<XS> code go here.  Other
+significant internal changes for future core maintainers should be noted as
+well.
 
-L<lib> has been upgraded from version 0.63 to 0.64.
+[ List each change as an =item entry ]
 
-It now uses 3-arg C<open()> instead of 2-arg C<open()>.
-L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122>
+=over 4
 
 =item *
 
-L<List::Util> has been upgraded from version 1.42_02 to 1.46_02.
+A new optimisation phase has been added to the compiler,
+C<optimize_optree()>, which does a top-down scan of a complete optree
+just before the peephole optimiser is run. This phase is not currently
+hookable.
 
 =item *
 
-L<Locale::Codes> has been upgraded from version 3.37 to 3.42.
+An C<OP_MULTICONCAT> op has been added. At C<optimize_optree()> time, a
+chain of C<OP_CONCAT> and C<OP_CONST> ops, together optionally with an
+C<OP_STRINGIFY> and/or C<OP_SASSIGN>, are combined into a single
+C<OP_MULTICONCAT> op. The op is of type C<UNOP_AUX>, and the aux array
+contains the argument count, plus a pointer to a constant string and a set
+of segment lengths. For example with
 
-=item *
-
-L<Locale::Maketext> has been upgraded from version 1.26 to 1.28.
+    my $x = "foo=$foo, bar=$bar\n";
 
-=item *
+the constant string would be C<"foo=, bar=\n"> and the segment lengths
+would be (4,6,1). If the string contains characters such as C<\x80>, whose
+representation changes under utf8, two sets of strings plus lengths are
+precomputed and stored.
 
-L<Locale::Maketext::Simple> has been upgraded from version 0.21 to 0.21_01.
+=back
 
-=item *
+=head1 Selected Bug Fixes
 
-L<Math::BigInt> has been upgraded from version 1.999715 to 1.999806.
+XXX Important bug fixes in the core language are summarized here.  Bug fixes in
+files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
 
-=item *
+[ List each fix as an =item entry ]
 
-L<Math::BigInt::FastCalc> has been upgraded from version 0.40 to 0.5005.
+=over 4
 
 =item *
 
-L<Math::BigRat> has been upgraded from version 0.260802 to 0.2611.
+C<stat()>, C<lstat()>, and file test operators now fail if given a
+filename containing a nul character, in the same way that C<open()>
+already fails.
 
 =item *
 
-L<Math::Complex> has been upgraded from version 1.59 to 1.5901.
+The in-place reverse optimisation now correctly strengthens weak
+references using the L<C<sv_rvunweaken()>|perlapi/sv_rvunweaken>
+API function.
 
 =item *
 
-L<Memoize> has been upgraded from version 1.03 to 1.03_01.
+Fixed a read before buffer when parsing a range starting with C<\N{}>
+at the beginning of the character set for the transliteration
+operator.  [perl #132245]
 
 =item *
 
-L<Module::CoreList> has been upgraded from version 5.20170420 to 5.20170530.
+Fixed a leaked SV when parsing an empty C<\N{}> at compile-time.
+[perl #132245]
 
-=item *
-
-L<Module::Load::Conditional> has been upgraded from version 0.64 to 0.68.
+=back
 
-=item *
+=head1 Known Problems
 
-L<Module::Metadata> has been upgraded from version 1.000031 to 1.000033.
+XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
+tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
+platform specific bugs also go here.
 
-=item *
+[ List each fix as an =item entry ]
 
-L<mro> has been upgraded from version 1.18 to 1.20.
+=over 4
 
 =item *
 
-L<Net::Ping> has been upgraded from version 2.43 to 2.55.
-
-IPv6 addresses and C<AF_INET6> sockets are now supported, along with several
-other enhancements.
+XXX
 
-=item *
-
-L<NEXT> has been upgraded from version 0.65 to 0.67.
+=back
 
-=item *
+=head1 Errata From Previous Releases
 
-L<Opcode> has been upgraded from version 1.34 to 1.39.
+=over 4
 
 =item *
 
-L<open> has been upgraded from version 1.10 to 1.11.
-
-=item *
+XXX Add anything here that we forgot to add, or were mistaken about, in
+the perldelta of a previous release.
 
-L<OS2::Process> has been upgraded from version 1.11 to 1.12.
+=back
 
-It now uses 3-arg C<open()> instead of 2-arg C<open()>.
-L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122>
+=head1 Obituary
 
-=item *
+XXX If any significant core contributor has died, we've added a short obituary
+here.
 
-L<overload> has been upgraded from version 1.26 to 1.28.
+=head1 Acknowledgements
 
-Its compilation speed has been improved slightly.
-
-=item *
-
-L<parent> has been upgraded from version 0.234 to 0.236.
-
-=item *
-
-L<perl5db.pl> has been upgraded from version 1.50 to 1.51.
-
-It now ignores F</dev/tty> on non-Unix systems.
-L<[perl #113960]|https://rt.perl.org/Public/Bug/Display.html?id=113960>
-
-=item *
-
-L<Perl::OSType> has been upgraded from version 1.009 to 1.010.
-
-=item *
-
-L<perlfaq> has been upgraded from version 5.021010 to 5.021011.
-
-=item *
-
-L<PerlIO> has been upgraded from version 1.09 to 1.10.
-
-=item *
-
-L<PerlIO::encoding> has been upgraded from version 0.24 to 0.25.
-
-=item *
-
-L<PerlIO::scalar> has been upgraded from version 0.24 to 0.26.
-
-=item *
-
-L<Pod::Checker> has been upgraded from version 1.60 to 1.73.
-
-=item *
-
-L<Pod::Functions> has been upgraded from version 1.10 to 1.11.
-
-=item *
-
-L<Pod::Html> has been upgraded from version 1.22 to 1.2202.
-
-=item *
-
-L<Pod::Perldoc> has been upgraded from version 3.25_02 to 3.28.
-
-=item *
-
-L<Pod::Simple> has been upgraded from version 3.32 to 3.35.
-
-=item *
-
-L<Pod::Usage> has been upgraded from version 1.68 to 1.69.
-
-=item *
-
-L<POSIX> has been upgraded from version 1.65 to 1.76.
-
-This remedies several defects in making its symbols exportable.
-L<[perl #127821]|https://rt.perl.org/Public/Bug/Display.html?id=127821>
-
-The C<POSIX::tmpnam()> interface has been removed,
-see L</"POSIX::tmpnam() has been removed">.
-
-The following deprecated functions have been removed:
-
-    POSIX::isalnum
-    POSIX::isalpha
-    POSIX::iscntrl
-    POSIX::isdigit
-    POSIX::isgraph
-    POSIX::islower
-    POSIX::isprint
-    POSIX::ispunct
-    POSIX::isspace
-    POSIX::isupper
-    POSIX::isxdigit
-    POSIX::tolower
-    POSIX::toupper
-
-Trying to import POSIX subs that have no real implementations
-(like C<POSIX::atend()>) now fails at import time, instead of
-waiting until runtime.
-
-=item *
-
-L<re> has been upgraded from version 0.32 to 0.34
-
-This adds support for the new L<C<E<47>xx>|perlre/E<sol>x and E<sol>xx>
-regular expression pattern modifier, and a change to the L<S<C<use re
-'strict'>>|re/'strict' mode> experimental feature.  When S<C<re
-'strict'>> is enabled, a warning now will be generated for all
-unescaped uses of the two characters C<"}"> and C<"]"> in regular
-expression patterns (outside bracketed character classes) that are taken
-literally.  This brings them more in line with the C<")"> character which
-is always a metacharacter unless escaped.  Being a metacharacter only
-sometimes, depending on an action at a distance, can lead to silently
-having the pattern mean something quite different than was intended,
-which the S<C<re 'strict'>> mode is intended to minimize.
-
-=item *
-
-L<Safe> has been upgraded from version 2.39 to 2.40.
-
-=item *
-
-L<Scalar::Util> has been upgraded from version 1.42_02 to 1.46_02.
-
-=item *
-
-L<Storable> has been upgraded from version 2.56 to 2.62.
-
-Fixes
-L<[perl #130098]|https://rt.perl.org/Public/Bug/Display.html?id=130098>.
-
-=item *
-
-L<Symbol> has been upgraded from version 1.07 to 1.08.
-
-=item *
-
-L<Sys::Syslog> has been upgraded from version 0.33 to 0.35.
-
-=item *
-
-L<Term::ANSIColor> has been upgraded from version 4.04 to 4.06.
-
-=item *
-
-L<Term::ReadLine> has been upgraded from version 1.15 to 1.16.
-
-It now uses 3-arg C<open()> instead of 2-arg C<open()>.
-L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122>
-
-=item *
-
-L<Test> has been upgraded from version 1.28 to 1.30.
-
-It now uses 3-arg C<open()> instead of 2-arg C<open()>.
-L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122>
-
-=item *
-
-L<Test::Harness> has been upgraded from version 3.36 to 3.38.
-
-=item *
-
-L<Test::Simple> has been upgraded from version 1.001014 to 1.302073.
-
-=item *
-
-L<Thread::Queue> has been upgraded from version 3.09 to 3.12.
-
-=item *
-
-L<Thread::Semaphore> has been upgraded from 2.12 to 2.13.
-
-Added the C<down_timed> method.
-
-=item *
-
-L<threads> has been upgraded from version 2.07 to 2.15.
-
-=item *
-
-L<threads::shared> has been upgraded from version 1.51 to 1.56.
-
-=item *
-
-L<Tie::Hash::NamedCapture> has been upgraded from version 0.09 to 0.10.
-
-=item *
-
-L<Time::HiRes> has been upgraded from version 1.9733 to 1.9741.
-
-It now builds on systems with C++11 compilers (such as G++ 6 and Clang++
-3.9).
-
-Now uses C<clockid_t>.
-
-=item *
-
-L<Time::Local> has been upgraded from version 1.2300 to 1.25.
-
-=item *
-
-L<Unicode::Collate> has been upgraded from version 1.14 to 1.19.
-
-=item *
-
-L<Unicode::UCD> has been upgraded from version 0.64 to 0.68.
-
-It now uses 3-arg C<open()> instead of 2-arg C<open()>.
-L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122>
-
-=item *
-
-L<version> has been upgraded from version 0.9916 to 0.9917.
-
-=item *
-
-L<VMS::DCLsym> has been upgraded from version 1.06 to 1.08.
-
-It now uses 3-arg C<open()> instead of 2-arg C<open()>.
-L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122>
-
-=item *
-
-L<warnings> has been upgraded from version 1.36 to 1.37.
-
-=item *
-
-L<XS::Typemap> has been upgraded from version 0.14 to 0.15.
-
-=item *
-
-L<XSLoader> has been upgraded from version 0.21 to 0.27.
-
-Fixed a security hole in which binary files could be loaded from a path
-outside of L<C<@INC>|perlvar/@INC>.
-
-It now uses 3-arg C<open()> instead of 2-arg C<open()>.
-L<[perl #130122]|https://rt.perl.org/Public/Bug/Display.html?id=130122>
-
-=back
-
-=head1 Documentation
-
-=head2 New Documentation
-
-=head3 L<perldeprecation>
-
-This file documents all upcoming deprecations, and some of the deprecations
-which already have been removed.  The purpose of this documentation is
-two-fold: document what will disappear, and by which version, and serve
-as a guide for people dealing with code which has features that no longer
-work after an upgrade of their perl.
-
-=head2 Changes to Existing Documentation
-
-We have attempted to update the documentation to reflect the changes
-listed in this document.  If you find any we have missed, send email to
-L<perlbug@perl.org|mailto:perlbug@perl.org>.
-
-Additionally, all references to Usenet have been removed, and the
-following selected changes have been made:
-
-=head3 L<perlfunc>
-
-=over 4
-
-=item *
-
-Removed obsolete text about L<C<defined()>|perlfunc/defined>
-on aggregates that should have been deleted earlier, when the feature
-was removed.
-
-=item *
-
-Corrected documentation of L<C<eval()>|perlfunc/eval>,
-and L<C<evalbytes()>|perlfunc/evalbytes>.
-
-=item *
-
-Clarified documentation of L<C<seek()>|perlfunc/seek>,
-L<C<tell()>|perlfunc/tell> and L<C<sysseek()>|perlfunc/sysseek>
-emphasizing that positions are in bytes and not characters.
-L<[perl #128607]|https://rt.perl.org/Public/Bug/Display.html?id=128607>
-
-=item *
-
-Clarified documentation of L<C<sort()>|perlfunc/sort LIST> concerning
-the variables C<$a> and C<$b>.
-
-=item *
-
-In L<C<split()>|perlfunc/split> noted that certain pattern modifiers are
-legal, and added a caution about its use in Perls before v5.11.
-
-=item *
-
-Removed obsolete documentation of L<C<study()>|perlfunc/study>, noting
-that it is now a no-op.
-
-=item *
-
-Noted that L<C<vec()>|perlfunc/vec> doesn't work well when the string
-contains characters whose code points are above 255.
-
-=back
-
-=head3 L<perlguts>
-
-=over 4
-
-=item *
-
-Added advice on
-L<formatted printing of operands of C<Size_t> and C<SSize_t>|perlguts/Formatted Printing of Size_t and SSize_t>
-
-=back
-
-=head3 L<perlhack>
-
-=over 4
-
-=item *
-
-Clarify what editor tab stop rules to use, and note that we are
-migrating away from using tabs, replacing them with sequences of SPACE
-characters.
-
-=back
-
-=head3 L<perlhacktips>
-
-=over 4
-
-=item *
-
-Give another reason to use C<cBOOL> to cast an expression to boolean.
-
-=item *
-
-Note that the macros C<TRUE> and C<FALSE> are available to express
-boolean values.
-
-=back
-
-=head3 L<perlinterp>
-
-=over 4
-
-=item *
-
-L<perlinterp> has been expanded to give a more detailed example of how to
-hunt around in the parser for how a given operator is handled.
-
-=back
-
-=head3 L<perllocale>
-
-=over 4
-
-=item *
-
-Some locales aren't compatible with Perl.  Note that these can cause
-core dumps.
-
-=back
-
-=head3 L<perlmod>
-
-=over 4
-
-=item *
-
-Various clarifications have been added.
-
-=back
-
-=head3 L<perlmodlib>
-
-=over 4
-
-=item *
-
-Updated the site mirror list.
-
-=back
-
-=head3 L<perlobj>
-
-=over 4
-
-=item *
-
-Added a section on calling methods using their fully qualified names.
-
-=item *
-
-Do not discourage manual C<@ISA>.
-
-=back
-
-=head3 L<perlootut>
-
-=over 4
-
-=item *
-
-Mention C<Moo> more.
-
-=back
-
-=head3 L<perlop>
-
-=over 4
-
-=item *
-
-Note that white space must be used for quoting operators if the
-delimiter is a word character (I<i.e.>, matches C<\w>).
-
-=item *
-
-Clarify that in regular expression patterns delimited by single quotes,
-no variable interpolation is done.
-
-=back
-
-=head3 L<perlre>
-
-=over 4
-
-=item *
-
-The first part was extensively rewritten to incorporate various basic
-points, that in earlier versions were mentioned in sort of an appendix
-on Version 8 regular expressions.
-
-=item *
-
-Note that it is common to have the C</x> modifier and forget that this
-means that C<"#"> has to be escaped.
-
-=back
-
-=head3 L<perlretut>
-
-=over 4
-
-=item *
-
-Add introductory material.
-
-=item *
-
-Note that a metacharacter occurring in a context where it can't mean
-that, silently loses its meta-ness and matches literally.
-L<C<use re 'strict'>|re/'strict' mode> can catch some of these.
-
-=back
-
-=head3 L<perlunicode>
-
-=over 4
-
-=item *
-
-Corrected the text about Unicode BYTE ORDER MARK handling.
-
-=item *
-
-Updated the text to correspond with changes in Unicode UTS#18, concerning
-regular expressions, and Perl compatibility with what it says.
-
-=back
-
-=head3 L<perlvar>
-
-=over 4
-
-=item *
-
-Document C<@ISA>.  It was documented in other places, but not in L<perlvar>.
-
-=back
-
-=head1 Diagnostics
-
-=head2 New Diagnostics
-
-=head3 New Errors
-
-=over 4
-
-=item *
-
-L<A signature parameter must start with C<'$'>, C<'@'> or C<'%'>
-|perldiag/A signature parameter must start with C<'$'>, C<'@'> or C<'%'>>
-
-=item *
-
-L<Bareword in require contains "%s"|perldiag/"Bareword in require contains "%s"">
-
-=item *
-
-L<Bareword in require maps to empty filename|perldiag/"Bareword in require maps to empty filename">
-
-=item *
-
-L<Bareword in require maps to disallowed filename "%s"|perldiag/"Bareword in require maps to disallowed filename "%s"">
-
-=item *
-
-L<Bareword in require must not start with a double-colon: "%s"|perldiag/"Bareword in require must not start with a double-colon: "%s"">
-
-=item *
-
-L<%s: command not found|perldiag/"%s: command not found">
-
-(A) You've accidentally run your script through B<bash> or another shell
-instead of Perl.  Check the C<#!> line, or manually feed your script into
-Perl yourself.  The C<#!> line at the top of your file could look like:
-
-  #!/usr/bin/perl
-
-=item *
-
-L<%s: command not found: %s|perldiag/"%s: command not found: %s">
-
-(A) You've accidentally run your script through B<zsh> or another shell
-instead of Perl.  Check the C<#!> line, or manually feed your script into
-Perl yourself.  The C<#!> line at the top of your file could look like:
-
-  #!/usr/bin/perl
-
-=item *
-
-L<The experimental declared_refs feature is not enabled|perldiag/"The experimental declared_refs feature is not enabled">
-
-(F) To declare references to variables, as in C<my \%x>, you must first enable
-the feature:
-
-    no warnings "experimental::declared_refs";
-    use feature "declared_refs";
-
-See L</Declaring a reference to a variable>.
-
-=item *
-
-L<Illegal character following sigil in a subroutine signature
-|perldiag/Illegal character following sigil in a subroutine signature>
-
-=item *
-
-L<Indentation on line %d of here-doc doesn't match delimiter
-|perldiag/Indentation on line %d of here-doc doesn't match delimiter>
-
-=item *
-
-L<Infinite recursion via empty pattern|perldiag/"Infinite recursion via empty pattern">.
-
-Using the empty pattern (which re-executes the last successfully-matched
-pattern) inside a code block in another regex, as in C</(?{ s!!new! })/>, has
-always previously yielded a segfault.  It now produces this error.
-
-=item *
-
-L<Malformed UTF-8 string in "%s"
-|perldiag/Malformed UTF-8 string in "%s">
-
-=item *
-
-L<Multiple slurpy parameters not allowed
-|perldiag/Multiple slurpy parameters not allowed>
-
-=item *
-
-L<C<'#'> not allowed immediately following a sigil in a subroutine signature
-|perldiag/C<'#'> not allowed immediately following a sigil in a subroutine signature>
-
-=item *
-
-L<panic: unknown OA_*: %x
-|perldiag/panic: unknown OA_*: %x>
-
-=item *
-
-L<Unescaped left brace in regex is illegal here|perldiag/Unescaped left brace in regex is illegal here in regex; marked by S<E<lt>-- HERE> in mE<sol>%sE<sol>>
-
-Unescaped left braces are now illegal in some contexts in regular expression
-patterns.  In other contexts, they are still just deprecated; they will
-be illegal in Perl 5.30.
-
-=item *
-
-L<Version control conflict marker|perldiag/"Version control conflict marker">
-
-(F) The parser found a line starting with C<E<lt>E<lt>E<lt>E<lt>E<lt>E<lt>E<lt>>,
-C<E<gt>E<gt>E<gt>E<gt>E<gt>E<gt>E<gt>>, or C<=======>.  These may be left by a
-version control system to mark conflicts after a failed merge operation.
-
-=back
-
-=head3 New Warnings
-
-=over 4
-
-=item *
-
-L<Can't determine class of operator %s, assuming C<BASEOP>
-|perldiag/Can't determine class of operator %s, assuming C<BASEOP>>
-
-=item *
-
-L<Declaring references is experimental|perldiag/"Declaring references is experimental">
-
-(S experimental::declared_refs) This warning is emitted if you use a reference
-constructor on the right-hand side of C<my()>, C<state()>, C<our()>, or
-C<local()>.  Simply suppress the warning if you want to use the feature, but
-know that in doing so you are taking the risk of using an experimental feature
-which may change or be removed in a future Perl version:
-
-    no warnings "experimental::declared_refs";
-    use feature "declared_refs";
-    $fooref = my \$foo;
-
-See L</Declaring a reference to a variable>.
-
-=item *
-
-L<do "%s" failed, '.' is no longer in @INC|perldiag/do "%s" failed, '.' is no longer in @INC; did you mean do ".E<sol>%s"?>
-
-Since C<"."> is now removed from C<@INC> by default, C<do> will now trigger a warning recommending to fix the C<do> statement.
-
-=item *
-
-L<C<File::Glob::glob()> will disappear in perl 5.30. Use C<File::Glob::bsd_glob()> instead.
-|perldiag/C<File::Glob::glob()> will disappear in perl 5.30. Use C<File::Glob::bsd_glob()> instead.>
-
-=item *
-
-L<Unescaped literal '%c' in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>
-|perldiag/Unescaped literal '%c' in regex; marked by <-- HERE in mE<sol>%sE<sol>>
-
-=item *
-
-L<Use of unassigned code point or non-standalone grapheme for a delimiter will be a fatal error starting in Perl 5.30|perldiag/"Use of unassigned code point or non-standalone grapheme for a delimiter will be a fatal error starting in Perl 5.30">
-
-See L</Deprecations>
-
-=back
-
-=head2 Changes to Existing Diagnostics
-
-=over 4
-
-=item *
-
-When a C<require> fails, we now do not provide C<@INC> when the C<require>
-is for a file instead of a module.
-
-=item *
-
-When C<@INC> is not scanned for a C<require> call, we no longer display
-C<@INC> to avoid confusion.
-
-=item *
-
-L<Attribute "locked" is deprecated, and will disappear in Perl 5.28
-|perldiag/Attribute "locked" is deprecated, and will disappear in Perl 5.28>
-
-This existing warning has had the I<and will disappear> text added in this
-release.
-
-=item *
-
-L<Attribute "unique" is deprecated, and will disappear in Perl 5.28
-|perldiag/Attribute "unique" is deprecated, and will disappear in Perl 5.28>
-
-This existing warning has had the I<and will disappear> text added in this
-release.
-
-=item *
-
-Calling POSIX::%s() is deprecated
-
-This warning has been removed, as the deprecated functions have been
-removed from POSIX.
-
-=item *
-
-L<Constants from lexical variables potentially modified elsewhere are deprecated. This will not be allowed in Perl 5.32
-|perldiag/Constants from lexical variables potentially modified elsewhere are deprecated. This will not be allowed in Perl 5.32>
-
-This existing warning has had the I<this will not be allowed> text added
-in this release.
-
-=item *
-
-L<Deprecated use of C<my()> in false conditional. This will be a fatal error in Perl 5.30
-|perldiag/Deprecated use of C<my()> in false conditional. This will be a fatal error in Perl 5.30>
-
-This existing warning has had the I<this will be a fatal error> text added
-in this release.
-
-=item *
-
-L<C<dump()> better written as C<CORE::dump()>. C<dump()> will no longer be available in Perl 5.30
-|perldiag/C<dump()> better written as C<CORE::dump()>. C<dump()> will no longer be available in Perl 5.30>
-
-This existing warning has had the I<no longer be available> text added in
-this release.
-
-=item *
-
-L<Experimental %s on scalar is now forbidden
-|perldiag/Experimental %s on scalar is now forbidden>
-
-This message is now followed by more helpful text.
-L<[perl #127976]|https://rt.perl.org/Public/Bug/Display.html?id=127976>
-
-=item *
-
-Experimental "%s" subs not enabled
-
-This warning was been removed, as lexical subs are no longer experimental.
-
-=item *
-
-Having more than one /%c regexp modifier is deprecated
-
-This deprecation warning has been removed, since C</xx> now has a new
-meaning.
-
-=item *
-
-L<%s() is deprecated on C<:utf8> handles. This will be a fatal error in Perl 5.30
-|perldiag/%s() is deprecated on C<:utf8> handles. This will be a fatal error in Perl 5.30>.
-
-where "%s" is one of C<sysread>, C<recv>, C<syswrite>, or C<send>.
-
-This existing warning has had the I<this will be a fatal error> text added
-in this release.
-
-This warning is now enabled by default, as all C<deprecated> category
-warnings should be.
-
-=item *
-
-L<C<$*> is no longer supported. Its use will be fatal in Perl 5.30
-|perldiag/C<$*> is no longer supported. Its use will be fatal in Perl 5.30>
-
-This existing warning has had the I<its use will be fatal> text added in
-this release.
-
-=item *
-
-L<C<$#> is no longer supported. Its use will be fatal in Perl 5.30
-|perldiag/C<$#> is no longer supported. Its use will be fatal in Perl 5.30>
-
-This existing warning has had the I<its use will be fatal> text added in
-this release.
-
-=item *
-
-L<Malformed UTF-8 character%s
-|perldiag/Malformed UTF-8 character%s>
-
-Details as to the exact problem have been added at the end of this
-message
-
-=item *
-
-L<Missing or undefined argument to %s
-|perldiag/Missing or undefined argument to %s>
-
-This warning used to warn about C<require>, even if it was actually C<do>
-which being executed. It now gets the operation name right.
-
-=item *
-
-NO-BREAK SPACE in a charnames alias definition is deprecated
-
-This warning has been removed as the behavior is now an error.
-
-=item *
-
-L<Odd nameE<sol>value argument for subroutine '%s'
-|perldiag/"Odd nameE<sol>value argument for subroutine '%s'">
-
-This warning now includes the name of the offending subroutine.
-
-=item *
-
-L<Opening dirhandle %s also as a file. This will be a fatal error in Perl 5.28
-|perldiag/Opening dirhandle %s also as a file. This will be a fatal error in Perl 5.28>
-
-This existing warning has had the I<this will be a fatal error> text added
-in this release.
-
-=item *
-
-L<Opening filehandle %s also as a directory. This will be a fatal error in Perl 5.28
-|perldiag/Opening filehandle %s also as a directory. This will be a fatal error in Perl 5.28>
-
-This existing warning has had the I<this will be a fatal error> text added
-in this release.
-
-=item *
-
-panic: ck_split, type=%u
-
-panic: pp_split, pm=%p, s=%p
-
-These panic errors have been removed.
-
-=item *
-
-Passing malformed UTF-8 to "%s" is deprecated
-
-This warning has been changed to the fatal
-L<Malformed UTF-8 string in "%s"
-|perldiag/Malformed UTF-8 string in "%s">
-
-=item *
-
-L<Setting C<< $E<sol> >> to a reference to %s as a form of slurp is deprecated, treating as undef. This will be fatal in Perl 5.28
-|perldiag/Setting C<< $E<sol> >> to a reference to %s as a form of slurp is deprecated, treating as undef. This will be fatal in Perl 5.28>
-
-This existing warning has had the I<this will be fatal> text added in
-this release.
-
-=item *
-
-L<C<${^ENCODING}> is no longer supported. Its use will be fatal in Perl 5.28|perldiag/"${^ENCODING} is no longer supported. Its use will be fatal in Perl 5.28">
-
-This warning used to be: "Setting C<${^ENCODING}> is deprecated".
-
-The special action of the variable C<${^ENCODING}> was formerly used to
-implement the C<encoding> pragma. As of Perl 5.26, rather than being
-deprecated, assigning to this variable now has no effect except to issue
-the warning.
-
-=item *
-
-L<Too few arguments for subroutine '%s'
-|perldiag/Too few arguments for subroutine '%s'>
-
-This warning now includes the name of the offending subroutine.
-
-=item *
-
-L<Too many arguments for subroutine '%s'
-|perldiag/Too many arguments for subroutine '%s'>
-
-This warning now includes the name of the offending subroutine.
-
-=item *
-
-L<Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through in regex; marked by S<< E<lt>-- HERE >> in mE<sol>%sE<sol>
-|perldiag/Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through in regex; marked by S<< E<lt>-- HERE >> in mE<sol>%sE<sol>>
-
-This existing warning has had the I<here (and will be fatal...)> text
-added in this release.
-
-=item *
-
-L<Unknown charname '' is deprecated. Its use will be fatal in Perl 5.28
-|perldiag/Unknown charname '' is deprecated. Its use will be fatal in Perl 5.28>
-
-This existing warning has had the I<its use will be fatal> text added in
-this release.
-
-=item *
-
-L<Use of bare E<lt>E<lt> to mean E<lt>E<lt>"" is deprecated. Its use will be fatal in Perl 5.28
-|perldiag/Use of bare E<lt>E<lt> to mean E<lt>E<lt>"" is deprecated. Its use will be fatal in Perl 5.28>
-
-This existing warning has had the I<its use will be fatal> text added in
-this release.
-
-=item *
-
-L<Use of code point 0x%s is deprecated; the permissible max is 0x%s.  This will be fatal in Perl 5.28
-|perldiag/Use of code point 0x%s is deprecated; the permissible max is 0x%s.  This will be fatal in Perl 5.28>
-
-This existing warning has had the I<this will be fatal> text added in
-this release.
-
-=item *
-
-L<Use of comma-less variable list is deprecated. Its use will be fatal in Perl 5.28
-|perldiag/Use of comma-less variable list is deprecated. Its use will be fatal in Perl 5.28>
-
-This existing warning has had the I<its use will be fatal> text added in
-this release.
-
-=item *
-
-L<Use of inherited C<AUTOLOAD> for non-method %s() is deprecated. This will be fatal in Perl 5.28
-|perldiag/Use of inherited C<AUTOLOAD> for non-method %s() is deprecated. This will be fatal in Perl 5.28>
-
-This existing warning has had the I<this will be fatal> text added in
-this release.
-
-=item *
-
-L<Use of strings with code points over 0xFF as arguments to %s operator is deprecated. This will be a fatal error in Perl 5.28
-|perldiag/Use of strings with code points over 0xFF as arguments to %s operator is deprecated. This will be a fatal error in Perl 5.28>
-
-This existing warning has had the I<this will be a fatal error> text added in
-this release.
-
-=back
-
-=head1 Utility Changes
-
-=head2 F<c2ph> and F<pstruct>
-
-=over 4
-
-=item *
-
-These old utilities have long since superceded by L<h2xs>, and are
-now gone from the distribution.
-
-=back
-
-=head2 F<Porting/pod_lib.pl>
-
-=over 4
-
-=item *
-
-Removed spurious executable bit.
-
-=item *
-
-Account for the possibility of DOS file endings.
-
-=back
-
-=head2 F<Porting/sync-with-cpan>
-
-=over 4
-
-=item *
-
-Many improvements.
-
-=back
-
-=head2 F<perf/benchmarks>
-
-=over 4
-
-=item *
-
-Tidy file, rename some symbols.
-
-=back
-
-=head2 F<Porting/checkAUTHORS.pl>
-
-=over 4
-
-=item *
-
-Replace obscure character range with C<\w>.
-
-=back
-
-=head2 F<t/porting/regen.t>
-
-=over 4
-
-=item *
-
-Try to be more helpful when tests fail.
-
-=back
-
-=head2 F<utils/h2xs.PL>
-
-=over 4
-
-=item *
-
-Avoid infinite loop for enums.
-
-=back
-
-=head2 L<perlbug>
-
-=over 4
-
-=item *
-
-Long lines in the message body are now wrapped at 900 characters, to stay
-well within the 1000-character limit imposed by SMTP mail transfer agents.
-This is particularly likely to be important for the list of arguments to
-F<Configure>, which can readily exceed the limit if, for example, it names
-several non-default installation paths.  This change also adds the first unit
-tests for perlbug.
-L<[perl #128020]|https://rt.perl.org/Public/Bug/Display.html?id=128020>
-
-=back
-
-=head1 Configuration and Compilation
-
-=over 4
-
-=item *
-
-C<-Ddefault_inc_excludes_dot> has added, and enabled by default.
-
-=item *
-
-The C<dtrace> build process has further changes
-L<[perl #130108]|https://rt.perl.org/Public/Bug/Display.html?id=130108>:
-
-=over
-
-=item *
-
-If the C<-xnolibs> is available, use that so a F<dtrace> perl can be
-built within a FreeBSD jail.
-
-=item *
-
-On systems that build a F<dtrace> object file (FreeBSD, Solaris, and
-SystemTap's dtrace emulation), copy the input objects to a separate
-directory and process them there, and use those objects in the link,
-since C<dtrace -G> also modifies these objects.
-
-=item *
-
-Add F<libelf> to the build on FreeBSD 10.x, since F<dtrace> adds
-references to F<libelf> symbols.
-
-=item *
-
-Generate a dummy F<dtrace_main.o> if C<dtrace -G> fails to build it.  A
-default build on Solaris generates probes from the unused inline
-functions, while they don't on FreeBSD, which causes C<dtrace -G> to
-fail.
-
-=back
-
-=item *
-
-You can now disable perl's use of the C<PERL_HASH_SEED> and
-C<PERL_PERTURB_KEYS> environment variables by configuring perl with
-C<-Accflags=NO_PERL_HASH_ENV>.
-
-=item *
-
-You can now disable perl's use of the C<PERL_HASH_SEED_DEBUG> environment
-variable by configuring perl with
-C<-Accflags=-DNO_PERL_HASH_SEED_DEBUG>.
-
-=item *
-
-F<Configure> now zeroes out the alignment bytes when calculating the bytes
-for 80-bit C<NaN> and C<Inf> to make builds more reproducible.
-L<[perl #130133]|https://rt.perl.org/Public/Bug/Display.html?id=130133>
-
-=item *
-
-Since v5.18, for testing purposes we have included support for
-building perl with a variety of non-standard, and non-recommended
-hash functions.  Since we do not recommend the use of these functions,
-we have removed them and their corresponding build options.  Specifically
-this includes the following build options:
-
-    PERL_HASH_FUNC_SDBM
-    PERL_HASH_FUNC_DJB2
-    PERL_HASH_FUNC_SUPERFAST
-    PERL_HASH_FUNC_MURMUR3
-    PERL_HASH_FUNC_ONE_AT_A_TIME
-    PERL_HASH_FUNC_ONE_AT_A_TIME_OLD
-    PERL_HASH_FUNC_MURMUR_HASH_64A
-    PERL_HASH_FUNC_MURMUR_HASH_64B
-
-=item *
-
-Remove "Warning: perl appears in your path"
-
-This install warning is more or less obsolete, since most platforms already
-B<will> have a F</usr/bin/perl> or similar provided by the OS.
-
-=item *
-
-Reduce verbosity of C<make install.man>
-
-Previously, two progress messages were emitted for each manpage: one by
-installman itself, and one by the function in F<install_lib.pl> that it calls to
-actually install the file.  Disabling the second of those in each case saves
-over 750 lines of unhelpful output.
-
-=item *
-
-Cleanup for C<clang -Weverything> support.
-L<[perl #129961]|https://rt.perl.org/Public/Bug/Display.html?id=129961>
-
-=item *
-
-F<Configure>: signbit scan was assuming too much, stop assuming negative 0.
-
-=item *
-
-Various compiler warnings have been silenced.
-
-=item *
-
-Several smaller changes have been made to remove impediments to compiling
-under C++11.
-
-=item *
-
-Builds using C<USE_PAD_RESET> now work again; this configuration had
-bit-rotted.
-
-=item *
-
-A probe for C<gai_strerror> was added to F<Configure> that checks if
-the C<gai_strerror()> routine is available and can be used to
-translate error codes returned by C<getaddrinfo()> into human
-readable strings.
-
-=item *
-
-F<Configure> now aborts if both C<-Duselongdouble> and C<-Dusequadmath> are
-requested.
-L<[perl #126203]|https://rt.perl.org/Public/Bug/Display.html?id=126203>
-
-=item *
-
-Fixed a bug in which F<Configure> could append C<-quadmath> to the
-archname even if it was already present.
-L<[perl #128538]|https://rt.perl.org/Public/Bug/Display.html?id=128538>
-
-=item *
-
-Clang builds with C<-DPERL_GLOBAL_STRUCT> or
-C<-DPERL_GLOBAL_STRUCT_PRIVATE> have
-been fixed (by disabling Thread Safety Analysis for these configurations).
-
-=item *
-
-F<make_ext.pl> no longer updates a module's F<pm_to_blib> file when no
-files require updates.  This could cause dependencies, F<perlmain.c>
-in particular, to be rebuilt unnecessarily.
-L<[perl #126710]|https://rt.perl.org/Public/Bug/Display.html?id=126710>
-
-=item *
-
-The output of C<perl -V> has been reformatted so that each configuration
-and compile-time option is now listed one per line, to improve
-readability.
-
-=item *
-
-F<Configure> now builds C<miniperl> and C<generate_uudmap> if you
-invoke it with C<-Dusecrosscompiler> but not C<-Dtargethost=somehost>.
-This means you can supply your target platform C<config.sh>, generate
-the headers and proceed to build your cross-target perl.
-L<[perl #127234]|https://rt.perl.org/Public/Bug/Display.html?id=127234>
-
-=item *
-
-Perl built with C<-Accflags=-DPERL_TRACE_OPS> now only dumps the operator
-counts when the environment variable C<PERL_TRACE_OPS> is set to a
-non-zero integer.  This allows C<make test> to pass on such a build.
-
-=item *
-
-When building with GCC 6 and link-time optimization (the C<-flto> option to
-C<gcc>), F<Configure> was treating all probed symbols as present on the
-system, regardless of whether they actually exist.  This has been fixed.
-L<[perl #128131]|https://rt.perl.org/Public/Bug/Display.html?id=128131>
-
-=item *
-
-The F<t/test.pl> library is used for internal testing of Perl itself, and
-also copied by several CPAN modules.  Some of those modules must work on
-older versions of Perl, so F<t/test.pl> must in turn avoid newer Perl
-features.  Compatibility with Perl 5.8 was inadvertently removed some time
-ago; it has now been restored.
-L<[perl #128052]|https://rt.perl.org/Public/Bug/Display.html?id=128052>
-
-=item *
-
-The build process no longer emits an extra blank line before building each
-"simple" extension (those with only F<*.pm> and F<*.pod> files).
-
-=back
-
-=head1 Testing
-
-Tests were added and changed to reflect the other additions and changes
-in this release.  Furthermore, these substantive changes were made:
-
-=over 4
-
-=item *
-
-A new test script, F<comp/parser_run.t>, has been added that is like
-F<comp/parser.t> but with F<test.pl> included so that C<runperl()> and the
-like are available for use.
-
-=item *
-
-Tests for locales were erroneously using locales incompatible with Perl.
-
-=item *
-
-Some parts of the test suite that try to exhaustively test edge cases in the
-regex implementation have been restricted to running for a maximum of five
-minutes.  On slow systems they could otherwise take several hours, without
-significantly improving our understanding of the correctness of the code
-under test.
-
-=item *
-
-A new internal facility allows analysing the time taken by the individual
-tests in Perl's own test suite; see F<Porting/harness-timer-report.pl>.
-
-=item *
-
-F<t/re/regexp_nonull.t> has been added to test that the regular expression
-engine can handle scalars that do not have a null byte just past the end of
-the string.
-
-=item *
-
-A new test script, F<t/op/decl-refs.t>, has been added to test the new feature
-L</Declaring a reference to a variable>.
-
-=item *
-
-A new test script, F<t/re/keep_tabs.t> has been added to contain tests
-where C<\t> characters should not be expanded into spaces.
-
-=item *
-
-A new test script, F<t/re/anyof.t>, has been added to test that the ANYOF nodes
-generated by bracketed character classes are as expected.
-
-=item *
-
-There is now more extensive testing of the Unicode-related API macros
-and functions.
-
-=item *
-
-Several of the longer running API test files have been split into
-multiple test files so that they can be run in parallel.
-
-=item *
-
-F<t/harness> now tries really hard not to run tests which are located
-outside of the Perl source tree.
-L<[perl #124050]|https://rt.perl.org/Public/Bug/Display.html?id=124050>
-
-=item *
-
-Prevent debugger tests (F<lib/perl5db.t>) from failing due to the contents
-of C<$ENV{PERLDB_OPTS}>.
-L<[perl #130445]|https://rt.perl.org/Public/Bug/Display.html?id=130445>
-
-=back
-
-=head1 Platform Support
-
-=head2 New Platforms
-
-=over 4
-
-=item NetBSD/VAX
-
-Perl now compiles under NetBSD on VAX machines.  However, it's not
-possible for that platform to implement floating-point infinities and
-NaNs compatible with most modern systems, which implement the IEEE-754
-floating point standard.  The hexadecimal floating point (C<0x...p[+-]n>
-literals, C<printf %a>) is not implemented, either.
-The C<make test> passes 98% of tests.
-
-=over 4
-
-=item *
-
-Test fixes and minor updates.
-
-=item *
-
-Account for lack of C<inf>, C<nan>, and C<-0.0> support.
-
-=back
-
-=back
-
-=head2 Platform-Specific Notes
-
-=over 4
-
-=item Darwin
-
-=over 4
-
-=item *
-
-Don't treat C<-Dprefix=/usr> as special: instead require an extra option
-C<-Ddarwin_distribution> to produce the same results.
-
-=item *
-
-OS X El Capitan doesn't implement the C<clock_gettime()> or
-C<clock_getres()> APIs; emulate them as necessary.
-
-=item *
-
-Deprecated C<syscall(2)> on macOS 10.12.
-
-=back
-
-=item EBCDIC
-
-Several tests have been updated to work (or be skipped) on EBCDIC platforms.
-
-=item HP-UX
-
-The L<Net::Ping> UDP test is now skipped on HP-UX.
-
-=item Hurd
-
-The hints for Hurd have been improved, enabling malloc wrap and reporting the
-GNU libc used (previously it was an empty string when reported).
-
-=item VAX
-
-VAX floating point formats are now supported on NetBSD.
-
-=item VMS
-
-=over 4
-
-=item *
-
-The path separator for the C<PERL5LIB> and C<PERLLIB> environment entries is
-now a colon (C<":">) when running under a Unix shell.  There is no change when
-running under DCL (it's still C<"|">).
-
-=item *
-
-F<configure.com> now recognizes the VSI-branded C compiler and no longer
-recognizes the "DEC"-branded C compiler (as there hasn't been such a thing for
-15 or more years).
-
-=back
-
-=item Windows
-
-=over 4
-
-=item *
-
-Support for compiling perl on Windows using Microsoft Visual Studio 2015
-(containing Visual C++ 14.0) has been added.
-
-This version of VC++ includes a completely rewritten C run-time library, some
-of the changes in which mean that work done to resolve a socket
-C<close()> bug in
-perl #120091 and perl #118059 is not workable in its current state with this
-version of VC++.  Therefore, we have effectively reverted that bug fix for
-VS2015 onwards on the basis that being able to build with VS2015 onwards is
-more important than keeping the bug fix.  We may revisit this in the future to
-attempt to fix the bug again in a way that is compatible with VS2015.
-
-These changes do not affect compilation with GCC or with Visual Studio versions
-up to and including VS2013, I<i.e.>, the bug fix is retained (unchanged) for those
-compilers.
-
-Note that you may experience compatibility problems if you mix a perl built
-with GCC or VS E<lt>= VS2013 with XS modules built with VS2015, or if you mix a
-perl built with VS2015 with XS modules built with GCC or VS E<lt>= VS2013.
-Some incompatibility may arise because of the bug fix that has been reverted
-for VS2015 builds of perl, but there may well be incompatibility anyway because
-of the rewritten CRT in VS2015 (I<e.g.>, see discussion at
-L<http://stackoverflow.com/questions/30412951>).
-
-=item *
-
-It now automatically detects GCC versus Visual C and sets the VC version
-number on Win32.
-
-=back
-
-=item Linux
-
-Drop support for Linux F<a.out> executable format. Linux has used ELF for
-over twenty years.
-
-=item OpenBSD 6
-
-OpenBSD 6 still does not support returning C<pid>, C<gid>, or C<uid> with
-C<SA_SIGINFO>.  Make sure to account for it.
-
-=item FreeBSD
-
-F<t/uni/overload.t>: Skip hanging test on FreeBSD.
-
-=item DragonFly BSD
-
-DragonFly BSD now has support for C<setproctitle()>.
-L<[perl #130068]|https://rt.perl.org/Public/Bug/Display.html?id=130068>.
-
-=back
-
-=head1 Internal Changes
-
-=over 4
-
-=item *
-
-A new API function L<C<sv_setpv_bufsize()>|perlapi/sv_setpv_bufsize>
-allows simultaneously setting the
-length and the allocated size of the buffer in an C<SV>, growing the
-buffer if necessary.
-
-=item *
-
-A new API macro L<C<SvPVCLEAR()>|perlapi/SvPVCLEAR> sets its C<SV>
-argument to an empty string,
-like Perl-space C<$x = ''>, but with several optimisations.
-
-=item *
-
-Several new macros and functions for dealing with Unicode and
-UTF-8-encoded strings have been added to the API, as well as some
-changes in the
-functionality of existing functions (see L<perlapi/Unicode Support> for
-more details):
-
-=over
-
-=item *
-
-New versions of the API macros like C<isALPHA_utf8> and C<toLOWER_utf8>
-have been added, each with the suffix C<_safe>, like
-L<C<isSPACE_utf8_safe>|perlapi/isSPACE>.  These take an extra
-parameter, giving an upper
-limit of how far into the string it is safe to read.  Using the old
-versions could cause attempts to read beyond the end of the input buffer
-if the UTF-8 is not well-formed, and their use now raises a deprecation
-warning.  Details are at L<perlapi/Character classification>.
-
-=item *
-
-Macros like L<C<isALPHA_utf8>|perlapi/isALPHA> and
-L<C<toLOWER_utf8>|perlapi/toLOWER_utf8> now die if they detect
-that their input UTF-8 is malformed.  A deprecation warning had been
-issued since Perl 5.18.
-
-=item *
-
-Several new macros for analysing the validity of utf8 sequences. These
-are:
-
-L<C<UTF8_GOT_ABOVE_31_BIT>|perlapi/UTF8_GOT_ABOVE_31_BIT>
-L<C<UTF8_GOT_CONTINUATION>|perlapi/UTF8_GOT_CONTINUATION>
-L<C<UTF8_GOT_EMPTY>|perlapi/UTF8_GOT_EMPTY>
-L<C<UTF8_GOT_LONG>|perlapi/UTF8_GOT_LONG>
-L<C<UTF8_GOT_NONCHAR>|perlapi/UTF8_GOT_NONCHAR>
-L<C<UTF8_GOT_NON_CONTINUATION>|perlapi/UTF8_GOT_NON_CONTINUATION>
-L<C<UTF8_GOT_OVERFLOW>|perlapi/UTF8_GOT_OVERFLOW>
-L<C<UTF8_GOT_SHORT>|perlapi/UTF8_GOT_SHORT>
-L<C<UTF8_GOT_SUPER>|perlapi/UTF8_GOT_SUPER>
-L<C<UTF8_GOT_SURROGATE>|perlapi/UTF8_GOT_SURROGATE>
-L<C<UTF8_IS_INVARIANT>|perlapi/UTF8_IS_INVARIANT>
-L<C<UTF8_IS_NONCHAR>|perlapi/UTF8_IS_NONCHAR>
-L<C<UTF8_IS_SUPER>|perlapi/UTF8_IS_SUPER>
-L<C<UTF8_IS_SURROGATE>|perlapi/UTF8_IS_SURROGATE>
-L<C<UVCHR_IS_INVARIANT>|perlapi/UVCHR_IS_INVARIANT>
-L<C<isUTF8_CHAR_flags>|perlapi/isUTF8_CHAR_flags>
-L<C<isSTRICT_UTF8_CHAR>|perlapi/isSTRICT_UTF8_CHAR>
-L<C<isC9_STRICT_UTF8_CHAR>|perlapi/isC9_STRICT_UTF8_CHAR>
-
-=item *
-
-Functions that are all extensions of the C<is_utf8_string_I<*>()> functions,
-that apply various restrictions to the UTF-8 recognized as valid:
-
-L<C<is_strict_utf8_string>|perlapi/is_strict_utf8_string>,
-L<C<is_strict_utf8_string_loc>|perlapi/is_strict_utf8_string_loc>,
-L<C<is_strict_utf8_string_loclen>|perlapi/is_strict_utf8_string_loclen>,
-
-L<C<is_c9strict_utf8_string>|perlapi/is_c9strict_utf8_string>,
-L<C<is_c9strict_utf8_string_loc>|perlapi/is_c9strict_utf8_string_loc>,
-L<C<is_c9strict_utf8_string_loclen>|perlapi/is_c9strict_utf8_string_loclen>,
-
-L<C<is_utf8_string_flags>|perlapi/is_utf8_string_flags>,
-L<C<is_utf8_string_loc_flags>|perlapi/is_utf8_string_loc_flags>,
-L<C<is_utf8_string_loclen_flags>|perlapi/is_utf8_string_loclen_flags>,
-
-L<C<is_utf8_fixed_width_buf_flags>|perlapi/is_utf8_fixed_width_buf_flags>,
-L<C<is_utf8_fixed_width_buf_loc_flags>|perlapi/is_utf8_fixed_width_buf_loc_flags>,
-L<C<is_utf8_fixed_width_buf_loclen_flags>|perlapi/is_utf8_fixed_width_buf_loclen_flags>.
-
-L<C<is_utf8_invariant_string>|perlapi/is_utf8_invariant_string>.
-L<C<is_utf8_valid_partial_char>|perlapi/is_utf8_valid_partial_char>.
-L<C<is_utf8_valid_partial_char_flags>|perlapi/is_utf8_valid_partial_char_flags>.
-
-=item *
-
-The functions L<C<utf8n_to_uvchr>|perlapi/utf8n_to_uvchr> and its
-derivatives have had several changes of behaviour.
-
-Calling them, while passing a string length of 0 is now asserted against
-in DEBUGGING builds, and otherwise, returns the Unicode REPLACEMENT
-CHARACTER.   If you have nothing to decode, you shouldn't call the decode
-function.
-
-They now return the Unicode REPLACEMENT CHARACTER if called with UTF-8
-that has the overlong malformation and that malformation is allowed by
-the input parameters.  This malformation is where the UTF-8 looks valid
-syntactically, but there is a shorter sequence that yields the same code
-point.  This has been forbidden since Unicode version 3.1.
-
-They now accept an input
-flag to allow the overflow malformation.  This malformation is when the
-UTF-8 may be syntactically valid, but the code point it represents is
-not capable of being represented in the word length on the platform.
-What "allowed" means, in this case, is that the function doesn't return an
-error, and it advances the parse pointer to beyond the UTF-8 in
-question, but it returns the Unicode REPLACEMENT CHARACTER as the value
-of the code point (since the real value is not representable).
-
-They no longer abandon searching for other malformations when the first
-one is encountered.  A call to one of these functions thus can generate
-multiple diagnostics, instead of just one.
-
-=item *
-
-L<C<valid_utf8_to_uvchr()>|perlapi/valid_utf8_to_uvchr> has been added
-to the API (although it was
-present in core earlier). Like C<utf8_to_uvchr_buf()>, but assumes that
-the next character is well-formed.  Use with caution.
-
-=item *
-
-A new function, L<C<utf8n_to_uvchr_error>|perlapi/utf8n_to_uvchr_error>,
-has been added for
-use by modules that need to know the details of UTF-8 malformations
-beyond pass/fail.  Previously, the only ways to know why a sequence was
-ill-formed was to capture and parse the generated diagnostics or to do
-your own analysis.
-
-=item *
-
-There is now a safer version of utf8_hop(), called
-L<C<utf8_hop_safe()>|perlapi/utf8_hop_safe>.
-Unlike utf8_hop(), utf8_hop_safe() won't navigate before the beginning or
-after the end of the supplied buffer.
-
-=item *
-
-Two new functions, L<C<utf8_hop_forward()>|perlapi/utf8_hop_forward> and
-L<C<utf8_hop_back()>|perlapi/utf8_hop_back> are
-similar to C<utf8_hop_safe()> but are for when you know which direction
-you wish to travel.
-
-=item *
-
-Two new macros which return useful utf8 byte sequences:
-
-L<C<BOM_UTF8>|perlapi/BOM_UTF8>
-
-L<C<REPLACEMENT_CHARACTER_UTF8>|perlapi/REPLACEMENT_CHARACTER_UTF8>
-
-=back
-
-=item *
-
-Perl is now built with the C<PERL_OP_PARENT> compiler define enabled by
-default.  To disable it, use the C<PERL_NO_OP_PARENT> compiler define.
-This flag alters how the C<op_sibling> field is used in C<OP> structures,
-and has been available optionally since perl 5.22.
-
-See L<perl5220delta/"Internal Changes"> for more details of what this
-build option does.
-
-=item *
-
-Three new ops, C<OP_ARGELEM>, C<OP_ARGDEFELEM>, and C<OP_ARGCHECK> have
-been added.  These are intended principally to implement the individual
-elements of a subroutine signature, plus any overall checking required.
-
-=item *
-
-The C<OP_PUSHRE> op has been eliminated and the C<OP_SPLIT> op has been
-changed from class C<LISTOP> to C<PMOP>.
-
-Formerly the first child of a split would be a C<pushre>, which would have the
-C<split>'s regex attached to it. Now the regex is attached directly to the
-C<split> op, and the C<pushre> has been eliminated.
-
-=item *
-
-The L<C<op_class()>|perlapi/op_class> API function has been added.  This
-is like the existing
-C<OP_CLASS()> macro, but can more accurately determine what struct an op
-has been allocated as.  For example C<OP_CLASS()> might return
-C<OA_BASEOP_OR_UNOP> indicating that ops of this type are usually
-allocated as an C<OP> or C<UNOP>; while C<op_class()> will return
-C<OPclass_BASEOP> or C<OPclass_UNOP> as appropriate.
-
-=item *
-
-All parts of the internals now agree that the C<sassign> op is a C<BINOP>;
-previously it was listed as a C<BASEOP> in F<regen/opcodes>, which meant
-that several parts of the internals had to be special-cased to accommodate
-it.  This oddity's original motivation was to handle code like C<$x ||= 1>;
-that is now handled in a simpler way.
-
-=item *
-
-The output format of the L<C<op_dump()>|perlapi/op_dump> function (as
-used by C<perl -Dx>)
-has changed: it now displays an "ASCII-art" tree structure, and shows more
-low-level details about each op, such as its address and class.
-
-=item *
-
-The C<PADOFFSET> type has changed from being unsigned to signed, and
-several pad-related variables such as C<PL_padix> have changed from being
-of type C<I32> to type C<PADOFFSET>.
-
-=item *
-
-The C<DEBUGGING>-mode output for regex compilation and execution has been
-enhanced.
-
-=item *
-
-Several obscure SV flags have been eliminated, sometimes along with the
-macros which manipulate them: C<SVpbm_VALID>, C<SVpbm_TAIL>, C<SvTAIL_on>,
-C<SvTAIL_off>, C<SVrepl_EVAL>, C<SvEVALED>.
-
-=item *
-
-An OP C<op_private> flag has been eliminated: C<OPpRUNTIME>. This used to
-often get set on C<PMOP> ops, but had become meaningless over time.
-
-=back
-
-=head1 Selected Bug Fixes
-
-=over 4
-
-=item *
-
-Perl no longer panics when switching into some locales on machines with
-buggy C<strxfrm()> implementations in their F<libc>.
-L<[perl #121734]|https://rt.perl.org/Public/Bug/Display.html?id=121734>
-
-=item *
-
-C< $-{$name} > would leak an C<AV> on each access if the regular
-expression had no named captures.  The same applies to access to any
-hash tied with L<Tie::Hash::NamedCapture> and C<< all =E<gt> 1 >>.
-L<[perl #130822]|https://rt.perl.org/Public/Bug/Display.html?id=130822>
-
-=item *
-
-Attempting to use the deprecated variable C<$#> as the object in an
-indirect object method call could cause a heap use after free or
-buffer overflow.
-L<[perl #129274]|https://rt.perl.org/Public/Bug/Display.html?id=129274>
-
-=item *
-
-When checking for an indirect object method call, in some rare cases
-the parser could reallocate the line buffer but then continue to use
-pointers to the old buffer.
-L<[perl #129190]|https://rt.perl.org/Public/Bug/Display.html?id=129190>
-
-=item *
-
-Supplying a glob as the format argument to
-L<C<formline>|perlfunc/formline> would
-cause an assertion failure.
-L<[perl #130722]|https://rt.perl.org/Public/Bug/Display.html?id=130722>
-
-=item *
-
-Code like C< $value1 =~ qr/.../ ~~ $value2 > would have the match
-converted into a C<qr//> operator, leaving extra elements on the stack to
-confuse any surrounding expression.
-L<[perl #130705]|https://rt.perl.org/Public/Bug/Display.html?id=130705>
-
-=item *
-
-Since v5.24 in some obscure cases, a regex which included code blocks
-from multiple sources (I<e.g.>, via embedded via C<qr//> objects) could end up
-with the wrong current pad and crash or give weird results.
-L<[perl #129881]|https://rt.perl.org/Public/Bug/Display.html?id=129881>
-
-=item *
-
-Occasionally C<local()>s in a code block within a patterns weren't being
-undone when the pattern matching backtracked over the code block.
-L<[perl #126697]|https://rt.perl.org/Public/Bug/Display.html?id=126697>
-
-=item *
-
-Using C<substr()> to modify a magic variable could access freed memory
-in some cases.
-L<[perl #129340]|https://rt.perl.org/Public/Bug/Display.html?id=129340>
-
-=item *
-
-Under C<use utf8>, the entire source code is now checked for being UTF-8
-well formed, not just quoted strings as before.
-L<[perl #126310]|https://rt.perl.org/Public/Bug/Display.html?id=126310>.
-
-=item *
-
-The range operator C<".."> on strings now handles its arguments correctly when in
-the scope of the L<< C<unicode_strings>|feature/"The 'unicode_strings' feature" >>
-feature.  The previous behaviour was sufficiently unexpected that we believe no
-correct program could have made use of it.
-
-=item *
-
-The C<split> operator did not ensure enough space was allocated for
-its return value in scalar context.  It could then write a single
-pointer immediately beyond the end of the memory block allocated for
-the stack.
-L<[perl #130262]|https://rt.perl.org/Public/Bug/Display.html?id=130262>
-
-=item *
-
-Using a large code point with the C<"W"> pack template character with
-the current output position aligned at just the right point could
-cause a write of a single zero byte immediately beyond the end of an
-allocated buffer.
-L<[perl #129149]|https://rt.perl.org/Public/Bug/Display.html?id=129149>
-
-=item *
-
-Supplying a format's picture argument as part of the format argument list
-where the picture specifies modifying the argument could cause an
-access to the new freed compiled form.at.
-L<[perl #129125]|https://rt.perl.org/Public/Bug/Display.html?id=129125>
-
-=item *
-
-The L<sort()|perlfunc/sort> operator's built-in numeric comparison
-function didn't handle large integers that weren't exactly
-representable by a double.  This now uses the same code used to
-implement the C<< E<lt>=E<gt> >> operator.
-L<[perl #130335]|https://rt.perl.org/Public/Bug/Display.html?id=130335>
-
-=item *
-
-Fix issues with C</(?{ ... E<lt>E<lt>EOF })/> that broke
-L<Method::Signatures>.
-L<[perl #130398]|https://rt.perl.org/Public/Bug/Display.html?id=130398>
-
-=item *
-
-Fixed an assertion failure with C<chop> and C<chomp>, which
-could be triggered by C<chop(@x =~ tr/1/1/)>.
-L<[perl #130198]|https://rt.perl.org/Public/Bug/Display.html?id=130198>.
-
-=item *
-
-Fixed a comment skipping error in patterns under C</x>; it could stop
-skipping a byte early, which could be in the middle of a UTF-8
-character.
-L<[perl #130495]|https://rt.perl.org/Public/Bug/Display.html?id=130495>.
-
-=item *
-
-F<perldb> now ignores F</dev/tty> on non-Unix systems.
-L<[perl #113960]|https://rt.perl.org/Public/Bug/Display.html?id=113960>;
-
-=item *
-
-Fix assertion failure for C<{}-E<gt>$x> when C<$x> isn't defined.
-L<[perl #130496]|https://rt.perl.org/Public/Bug/Display.html?id=130496>.
-
-=item *
-
-Fix an assertion error which could be triggered when a lookahead string
-in patterns exceeded a minimum length.
-L<[perl #130522]|https://rt.perl.org/Public/Bug/Display.html?id=130522>.
-
-=item *
-
-Only warn once per literal number about a misplaced C<"_">.
-L<[perl #70878]|https://rt.perl.org/Public/Bug/Display.html?id=70878>.
-
-=item *
-
-The C<tr///> parse code could be looking at uninitialized data after a
-perse error.
-L<[perl #129342]|https://rt.perl.org/Public/Bug/Display.html?id=129342>.
-
-=item *
-
-In a pattern match, a back-reference (C<\1>) to an unmatched capture could
-read back beyond the start of the string being matched.
-L<[perl #129377]|https://rt.perl.org/Public/Bug/Display.html?id=129377>.
-
-=item *
-
-C<use re 'strict'> is supposed to warn if you use a range (such as
-C</(?[ [ X-Y ] ])/>) whose start and end digit aren't from the same group
-of 10.  It didn't do that for five groups of mathematical digits starting
-at C<U+1D7E>.
-
-=item *
-
-A sub containing a "forward" declaration with the same name (I<e.g.>,
-C<sub c { sub c; }>) could sometimes crash or loop infinitely.
-L<[perl #129090]|https://rt.perl.org/Public/Bug/Display.html?id=129090>
-
-=item *
-
-A crash in executing a regex with a non-anchored UTF-8 substring against a
-target string that also used UTF-8 has been fixed.
-L<[perl #129350]|https://rt.perl.org/Public/Bug/Display.html?id=129350>
-
-=item *
-
-Previously, a shebang line like C<#!perl -i u> could be erroneously
-interpreted as requesting the C<-u> option.  This has been fixed.
-L<[perl #129336]|https://rt.perl.org/Public/Bug/Display.html?id=129336>
-
-=item *
-
-The regex engine was previously producing incorrect results in some rare
-situations when backtracking past an alternation that matches only one
-thing; this
-showed up as capture buffers (C<$1>, C<$2>, I<etc.>) erroneously containing data
-from regex execution paths that weren't actually executed for the final
-match.
-L<[perl #129897]|https://rt.perl.org/Public/Bug/Display.html?id=129897>
-
-=item *
-
-Certain regexes making use of the experimental C<regex_sets> feature could
-trigger an assertion failure.  This has been fixed.
-L<[perl #129322]|https://rt.perl.org/Public/Bug/Display.html?id=129322>
-
-=item *
-
-Invalid assignments to a reference constructor (I<e.g.>, C<\eval=time>) could
-sometimes crash in addition to giving a syntax error.
-L<[perl #125679]|https://rt.perl.org/Public/Bug/Display.html?id=125679>
-
-=item *
-
-The parser could sometimes crash if a bareword came after C<evalbytes>.
-L<[perl #129196]|https://rt.perl.org/Public/Bug/Display.html?id=129196>
-
-=item *
-
-Autoloading via a method call would warn erroneously ("Use of inherited
-AUTOLOAD for non-method") if there was a stub present in the package into
-which the invocant had been blessed.  The warning is no longer emitted in
-such circumstances.
-L<[perl #47047]|https://rt.perl.org/Public/Bug/Display.html?id=47047>
-
-=item *
-
-The use of C<splice> on arrays with non-existent elements could cause other
-operators to crash.
-L<[perl #129164]|https://rt.perl.org/Public/Bug/Display.html?id=129164>
-
-=item *
-
-A possible buffer overrun when a pattern contains a fixed utf8 substring.
-L<[perl #129012]|https://rt.perl.org/Public/Bug/Display.html?id=129012>
-
-=item *
-
-Fixed two possible use-after-free bugs in perl's lexer.
-L<[perl #129069]|https://rt.perl.org/Public/Bug/Display.html?id=129069>
-
-=item *
-
-Fixed a crash with C<s///l> where it thought it was dealing with UTF-8
-when it wasn't.
-L<[perl #129038]|https://rt.perl.org/Public/Bug/Display.html?id=129038>
-
-=item *
-
-Fixed a place where the regex parser was not setting the syntax error
-correctly on a syntactically incorrect pattern.
-L<[perl #129122]|https://rt.perl.org/Public/Bug/Display.html?id=129122>
-
-=item *
-
-The C<&.> operator (and the C<"&"> operator, when it treats its arguments as
-strings) were failing to append a trailing null byte if at least one string
-was marked as utf8 internally.  Many code paths (system calls, regexp
-compilation) still expect there to be a null byte in the string buffer
-just past the end of the logical string.  An assertion failure was the
-result.
-L<[perl #129287]|https://rt.perl.org/Public/Bug/Display.html?id=129287>
-
-=item *
-
-Avoid a heap-after-use error in the parser when creating an error messge
-for a syntactically invalid heredoc.
-L<[perl #128988]|https://rt.perl.org/Public/Bug/Display.html?id=128988>
-
-=item *
-
-Fix a segfault when run with C<-DC> options on DEBUGGING builds.
-L<[perl #129106]|https://rt.perl.org/Public/Bug/Display.html?id=129106>
-
-=item *
-
-Fixed the parser error handling in subroutine attributes for an
-'C<:attr(foo>' that does not have an ending 'C<")">'.
-
-=item *
-
-Fix the perl lexer to correctly handle a backslash as the last char in
-quoted-string context. This actually fixed two bugs,
-L<[perl #129064]|https://rt.perl.org/Public/Bug/Display.html?id=129064> and
-L<[perl #129176]|https://rt.perl.org/Public/Bug/Display.html?id=129176>.
-
-=item *
-
-In the API function C<gv_fetchmethod_pvn_flags>, rework separator parsing
-to prevent possible string overrun with an invalid C<len> argument.
-L<[perl #129267]|https://rt.perl.org/Public/Bug/Display.html?id=129267>
-
-=item *
-
-Problems with in-place array sorts: code like C<@a = sort { ... } @a>,
-where the source and destination of the sort are the same plain array, are
-optimised to do less copying around.  Two side-effects of this optimisation
-were that the contents of C<@a> as seen by sort routines were
-partially sorted; and under some circumstances accessing C<@a> during the
-sort could crash the interpreter.  Both these issues have been fixed, and
-Sort functions see the original value of C<@a>.
-L<[perl #128340]|https://rt.perl.org/Public/Bug/Display.html?id=128340>
-
-=item *
-
-Non-ASCII string delimiters are now reported correctly in error messages
-for unterminated strings.
-L<[perl #128701]|https://rt.perl.org/Public/Bug/Display.html?id=128701>
-
-=item *
-
-C<pack("p", ...)> used to emit its warning ("Attempt to pack pointer to
-temporary value") erroneously in some cases, but has been fixed.
-
-=item *
-
-C<@DB::args> is now exempt from "used once" warnings.  The warnings only
-occurred under B<-w>, because F<warnings.pm> itself uses C<@DB::args>
-multiple times.
-
-=item *
-
-The use of built-in arrays or hash slices in a double-quoted string no
-longer issues a warning ("Possible unintended interpolation...") if the
-variable has not been mentioned before.  This affected code like
-C<qq|@DB::args|> and C<qq|@SIG{'CHLD', 'HUP'}|>.  (The special variables
-C<@-> and C<@+> were already exempt from the warning.)
-
-=item *
-
-C<gethostent> and similar functions now perform a null check internally, to
-avoid crashing with the torsocks library.  This was a regression from v5.22.
-L<[perl #128740]|https://rt.perl.org/Public/Bug/Display.html?id=128740>
-
-=item *
-
-C<defined *{'!'}>, C<defined *{'['}>, and C<defined *{'-'}> no longer leak
-memory if the typeglob in question has never been accessed before.
-
-=item *
-
-Mentioning the same constant twice in a row (which is a syntax error) no
-longer fails an assertion under debugging builds.  This was a regression
-from v5.20.
-L<[perl #126482]|https://rt.perl.org/Public/Bug/Display.html?id=126482>
-
-=item *
-
-Many issues relating to C<printf "%a"> of hexadecimal floating point
-were fixed.  In addition, the "subnormals" (formerly known as "denormals")
-floating point numbers are now supported both with the plain IEEE 754
-floating point numbers (64-bit or 128-bit) and the x86 80-bit
-"extended precision".  Note that subnormal hexadecimal floating
-point literals will give a warning about "exponent underflow".
-L<[perl #128843]|https://rt.perl.org/Public/Bug/Display.html?id=128843>
-L<[perl #128889]|https://rt.perl.org/Public/Bug/Display.html?id=128889>
-L<[perl #128890]|https://rt.perl.org/Public/Bug/Display.html?id=128890>
-L<[perl #128893]|https://rt.perl.org/Public/Bug/Display.html?id=128893>
-L<[perl #128909]|https://rt.perl.org/Public/Bug/Display.html?id=128909>
-L<[perl #128919]|https://rt.perl.org/Public/Bug/Display.html?id=128919>
-
-=item *
-
-A regression in v5.24 with C<tr/\N{U+...}/foo/> when the code point was between
-128 and 255 has been fixed.
-L<[perl #128734]|https://rt.perl.org/Public/Bug/Display.html?id=128734>.
-
-=item *
-
-Use of a string delimiter whose code point is above 2**31 now works
-correctly on platforms that allow this.  Previously, certain characters,
-due to truncation, would be confused with other delimiter characters
-with special meaning (such as C<"?"> in C<m?...?>), resulting
-in inconsistent behaviour.  Note that this is non-portable,
-and is based on Perl's extension to UTF-8, and is probably not
-displayable nor enterable by any editor.
-L<[perl #128738]|https://rt.perl.org/Public/Bug/Display.html?id=128738>
-
-=item *
-
-C<@{x> followed by a newline where C<"x"> represents a control or non-ASCII
-character no longer produces a garbled syntax error message or a crash.
-L<[perl #128951]|https://rt.perl.org/Public/Bug/Display.html?id=128951>
-
-=item *
-
-An assertion failure with C<%: = 0> has been fixed.
-L<[perl #128238]|https://rt.perl.org/Public/Bug/Display.html?id=128238>
-
-=item *
-
-In Perl 5.18, the parsing of C<"$foo::$bar"> was accidentally changed, such
-that it would be treated as C<$foo."::".$bar>.  The previous behavior, which
-was to parse it as C<$foo:: . $bar>, has been restored.
-L<[perl #128478]|https://rt.perl.org/Public/Bug/Display.html?id=128478>
-
-=item *
-
-Since Perl 5.20, line numbers have been off by one when perl is invoked with
-the B<-x> switch.  This has been fixed.
-L<[perl #128508]|https://rt.perl.org/Public/Bug/Display.html?id=128508>
-
-=item *
-
-Vivifying a subroutine stub in a deleted stash (I<e.g.>,
-C<delete $My::{"Foo::"}; \&My::Foo::foo>) no longer crashes.  It had begun
-crashing in Perl 5.18.
-L<[perl #128532]|https://rt.perl.org/Public/Bug/Display.html?id=128532>
-
-=item *
-
-Some obscure cases of subroutines and file handles being freed at the same time
-could result in crashes, but have been fixed.  The crash was introduced in Perl
-5.22.
-L<[perl #128597]|https://rt.perl.org/Public/Bug/Display.html?id=128597>
-
-=item *
-
-Code that looks for a variable name associated with an uninitialized value
-could cause an assertion failure in cases where magic is involved, such as
-C<$ISA[0][0]>.  This has now been fixed.
-L<[perl #128253]|https://rt.perl.org/Public/Bug/Display.html?id=128253>
-
-=item *
-
-A crash caused by code generating the warning "Subroutine STASH::NAME
-redefined" in cases such as C<sub P::f{} undef *P::; *P::f =sub{};> has been
-fixed.  In these cases, where the STASH is missing, the warning will now appear
-as "Subroutine NAME redefined".
-L<[perl #128257]|https://rt.perl.org/Public/Bug/Display.html?id=128257>
-
-=item *
-
-Fixed an assertion triggered by some code that handles deprecated behavior in
-formats, I<e.g.>, in cases like this:
-
-    format STDOUT =
-    @
-    0"$x"
-
-L<[perl #128255]|https://rt.perl.org/Public/Bug/Display.html?id=128255>
-
-=item *
-
-A possible divide by zero in string transformation code on Windows has been
-avoided, fixing a crash when collating an empty string.
-L<[perl #128618]|https://rt.perl.org/Public/Bug/Display.html?id=128618>
-
-=item *
-
-Some regular expression parsing glitches could lead to assertion failures with
-regular expressions such as C</(?E<lt>=/> and C</(?E<lt>!/>.  This has now been fixed.
-L<[perl #128170]|https://rt.perl.org/Public/Bug/Display.html?id=128170>
-
-=item *
-
-C< until ($x = 1) { ... } > and C< ... until $x = 1 > now properly
-warn when syntax warnings are enabled.
-L<[perl #127333]|https://rt.perl.org/Public/Bug/Display.html?id=127333>
-
-=item *
-
-socket() now leaves the error code returned by the system in C<$!> on
-failure.
-L<[perl #128316]|https://rt.perl.org/Public/Bug/Display.html?id=128316>
-
-=item *
-
-Assignment variants of any bitwise ops under the C<bitwise> feature would
-crash if the left-hand side was an array or hash.
-L<[perl #128204]|https://rt.perl.org/Public/Bug/Display.html?id=128204>
-
-=item *
-
-C<require> followed by a single colon (as in C<foo() ? require : ...> is
-now parsed correctly as C<require> with implicit C<$_>, rather than
-C<require "">.
-L<[perl #128307]|https://rt.perl.org/Public/Bug/Display.html?id=128307>
-
-=item *
-
-Scalar C<keys %hash> can now be assigned to consistently in all scalar
-lvalue contexts.  Previously it worked for some contexts but not others.
-
-=item *
-
-List assignment to C<vec> or C<substr> with an array or hash for its first
-argument used to result in crashes or "Can't coerce" error messages at run
-time, unlike scalar assignment, which would give an error at compile time.
-List assignment now gives a compile-time error, too.
-L<[perl #128260]|https://rt.perl.org/Public/Bug/Display.html?id=128260>
-
-=item *
-
-Expressions containing an C<&&> or C<||> operator (or their synonyms C<and>
-and C<or>) were being compiled incorrectly in some cases.  If the left-hand
-side consisted of either a negated bareword constant or a negated C<do {}>
-block containing a constant expression, and the right-hand side consisted of
-a negated non-foldable expression, one of the negations was effectively
-ignored.  The same was true of C<if> and C<unless> statement modifiers,
-though with the left-hand and right-hand sides swapped.  This long-standing
-bug has now been fixed.
-L<[perl #127952]|https://rt.perl.org/Public/Bug/Display.html?id=127952>
-
-=item *
-
-C<reset> with an argument no longer crashes when encountering stash entries
-other than globs.
-L<[perl #128106]|https://rt.perl.org/Public/Bug/Display.html?id=128106>
-
-=item *
-
-Assignment of hashes to, and deletion of, typeglobs named C<*::::::> no
-longer causes crashes.
-L<[perl #128086]|https://rt.perl.org/Public/Bug/Display.html?id=128086>
-
-=item *
-
-Perl wasn't correctly handling true/false values in the LHS of a list
-assign; specifically the truth values returned by boolean operators.
-This could trigger an assertion failure in something like the following:
-
-    for ($x > $y) {
-        ($_, ...) = (...); # here $_ is aliased to a truth value
-    }
-
-This was a regression from v5.24.
-L<[perl #129991]|https://rt.perl.org/Public/Bug/Display.html?id=129991>
-
-=item *
-
-Assertion failure with user-defined Unicode-like properties.
-L<[perl #130010]|https://rt.perl.org/Public/Bug/Display.html?id=130010>
-
-=item *
-
-Fix error message for unclosed C<\N{> in a regex.  An unclosed C<\N{>
-could give the wrong error message:
-C<"\N{NAME} must be resolved by the lexer">.
-
-=item *
-
-List assignment in list context where the LHS contained aggregates and
-where there were not enough RHS elements, used to skip scalar lvalues.
-Previously, C<(($a,$b,@c,$d) = (1))> in list context returned C<($a)>; now
-it returns C<($a,$b,$d)>.  C<(($a,$b,$c) = (1))> is unchanged: it still
-returns C<($a,$b,$c)>.  This can be seen in the following:
-
-    sub inc { $_++ for @_ }
-    inc(($a,$b,@c,$d) = (10))
-
-Formerly, the values of C<($a,$b,$d)> would be left as C<(11,undef,undef)>;
-now they are C<(11,1,1)>.
-
-=item *
-
-Code like this: C</(?{ s!!! })/> could trigger infinite recursion on the C
-stack (not the normal perl stack) when the last successful pattern in
-scope is itself.  We avoid the segfault by simply forbidding the use of
-the empty pattern when it would resolve to the currently executing
-pattern.
-L<[perl #129903]|https://rt.perl.org/Public/Bug/Display.html?id=129903>
-
-=item *
-
-Avoid reading beyond the end of the line buffer in perl's lexer when
-there's a short UTF-8 character at the end.
-L<[perl #128997]|https://rt.perl.org/Public/Bug/Display.html?id=128997>
-
-=item *
-
-Alternations in regular expressions were sometimes failing to match
-a utf8 string against a utf8 alternate.
-L<[perl #129950]|https://rt.perl.org/Public/Bug/Display.html?id=129950>
-
-=item *
-
-Make C<do "a\0b"> fail silently (and return C<undef> and set C<$!>)
-instead of throwing an error.
-L<[perl #129928]|https://rt.perl.org/Public/Bug/Display.html?id=129928>
-
-=item *
-
-C<chdir> with no argument didn't ensure that there was stack space
-available for returning its result.
-L<[perl #129130]|https://rt.perl.org/Public/Bug/Display.html?id=129130>
-
-=item *
-
-All error messages related to C<do> now refer to C<do>; some formerly
-claimed to be from C<require> instead.
-
-=item *
-
-Executing C<undef $x> where C<$x> is tied or magical no longer incorrectly
-blames the variable for an uninitialized-value warning encountered by the
-tied/magical code.
-
-=item *
-
-Code like C<$x = $x . "a"> was incorrectly failing to yield a
-L<use of uninitialized value|perldiag/"Use of uninitialized value%s">
-warning when C<$x> was a lexical variable with an undefined value. That has
-now been fixed.
-L<[perl #127877]|https://rt.perl.org/Public/Bug/Display.html?id=127877>
-
-=item *
-
-C<undef *_; shift> or C<undef *_; pop> inside a subroutine, with no
-argument to C<shift> or C<pop>, began crashing in Perl 5.14, but has now
-been fixed.
-
-=item *
-
-C<< "string$scalar-E<gt>$*" >> now correctly prefers concatenation
-overloading to string overloading if C<< $scalar-E<gt>$* >> returns an
-overloaded object, bringing it into consistency with C<$$scalar>.
-
-=item *
-
-C<< /@0{0*-E<gt>@*/*0 >> and similar contortions used to crash, but no longer
-do, but merely produce a syntax error.
-L<[perl #128171]|https://rt.perl.org/Public/Bug/Display.html?id=128171>
-
-=item *
-
-C<do> or C<require> with an argument which is a reference or typeglob
-which, when stringified,
-contains a null character, started crashing in Perl 5.20, but has now been
-fixed.
-L<[perl #128182]|https://rt.perl.org/Public/Bug/Display.html?id=128182>
-
-=item *
-
-Improve the error message for a missing C<tie()> package/method. This
-brings the error messages in line with the ones used for normal method
-calls.
-
-=item *
-
-Parsing bad POSIX charclasses no longer leaks memory.
-L<[perl #128313]|https://rt.perl.org/Public/Bug/Display.html?id=128313>
-
-=back
-
-=head1 Known Problems
-
-=over 4
-
-=item *
-
-G++ 6 handles subnormal (denormal) floating point values differently
-than gcc 6 or g++ 5 resulting in "flush-to-zero". The end result is
-that if you specify very small values using the hexadecimal floating
-point format, like C<0x1.fffffffffffffp-1022>, they become zeros.
-L<[perl #131388]|https://rt.perl.org/Ticket/Display.html?id=131388>
-
-=back 
-
-=head1 Errata From Previous Releases
-
-=over 4
-
-=item *
-
-Fixed issues with recursive regexes.  The behavior was fixed in Perl 5.24.
-L<[perl #126182]|https://rt.perl.org/Public/Bug/Display.html?id=126182>
-
-=back
-
-=head1 Obituary
-
-Jon Portnoy (AVENJ), a prolific Perl author and admired Gentoo community
-member, has passed away on August 10, 2016.  He will be remembered and
-missed by all those who he came in contact with, and enriched with his
-intellect, wit, and spirit.
-
-It is with great sadness that we also note Kip Hampton's passing.  Probably
-best known as the author of the Perl & XML column on XML.com, he was a
-core contributor to AxKit, an XML server platform that became an Apache
-Foundation project.  He was a frequent speaker in the early days at
-OSCON, and most recently at YAPC::NA in Madison.  He was frequently on
-irc.perl.org as ubu, generally in the #axkit-dahut community, the
-group responsible for YAPC::NA Asheville in 2011.
-
-Kip and his constant contributions to the community will be greatly
-missed.
-
-=head1 Acknowledgements
+XXX Generate this with:
 
-Perl 5.26.0 represents approximately 13 months of development since Perl 5.24.0
-and contains approximately 360,000 lines of changes across 2,600 files from 86
-authors.
-
-Excluding auto-generated files, documentation and release tools, there were
-approximately 230,000 lines of changes to 1,800 .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.26.0:
-
-Aaron Crane, Abigail, Ævar Arnfjörð Bjarmason, Alex Vandiver, Andreas
-König, Andreas Voegele, Andrew Fresh, Andy Lester, Aristotle Pagaltzis, Chad
-Granum, Chase Whitener, Chris 'BinGOs' Williams, Chris Lamb, Christian Hansen,
-Christian Millour, Colin Newell, Craig A. Berry, Dagfinn Ilmari Mannsåker, Dan
-Collins, Daniel Dragan, Dave Cross, Dave Rolsky, David Golden, David H.
-Gutteridge, David Mitchell, Dominic Hargreaves, Doug Bell, E. Choroba, Ed Avis,
-Father Chrysostomos, François Perrad, Hauke D, H.Merijn Brand, Hugo van der
-Sanden, Ivan Pozdeev, James E Keenan, James Raspass, Jarkko Hietaniemi, Jerry
-D. Hedden, Jim Cromie, J. Nick Koston, John Lightsey, Karen Etheridge, Karl
-Williamson, Leon Timmermans, Lukas Mai, Matthew Horsfall, Maxwell Carey, Misty
-De Meo, Neil Bowers, Nicholas Clark, Nicolas R., Niko Tyni, Pali, Paul
-Marquess, Peter Avalos, Petr Písař, Pino Toscano, Rafael Garcia-Suarez, Reini
-Urban, Renee Baecker, Ricardo Signes, Richard Levitte, Rick Delaney, Salvador
-Fandiño, Samuel Thibault, Sawyer X, Sébastien Aperghis-Tramoni, Sergey
-Aleynikov, Shlomi Fish, Smylers, Stefan Seifert, Steffen Müller, Stevan
-Little, Steve Hay, Steven Humphrey, Sullivan Beck, Theo Buehler, Thomas Sibley,
-Todd Rinaldo, Tomasz Konojacki, Tony Cook, Unicode Consortium, Yaroslav Kuzmin,
-Yves Orton, 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.
+  perl Porting/acknowledgements.pl v5.27.5..HEAD
 
 =head1 Reporting Bugs
 
-If you find what you think is a bug, you might check the perl bug database at
-L<https://rt.perl.org/>.  There may also be information at
-L<http://www.perl.org/>, the Perl Home Page.
+If you find what you think is a bug, you might check the perl bug database
+at 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
 sufficient test case.  Your bug report, along with the output of C<perl -V>,
-will be sent off to C<perlbug@perl.org> to be analysed by the Perl porting team.
+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