This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
copyedit perldelta
[perl5.git] / pod / perldelta.pod
index 52770aa..0668101 100644 (file)
 
 =head1 NAME
 
-[ this is a template for a new perldelta file. Any text flagged as
-XXX needs to be processed before release. ]
-
-perldelta - what is new for perl v5.15.0
-
-=for comment
-This has been completed up to 571f0e8.
+perldelta - what is new for perl v5.15.1
 
 =head1 DESCRIPTION
 
 This document describes differences between the 5.15.0 release and
-the 5.14.0 release.
-
-If you are upgrading from an earlier release such as 5.YYY.YYY, first read
-L<perl5YYYdelta>, which describes differences between 5.ZZZ.ZZZ and
-5.YYY.YYY.
-
-Some of the changes have been included in Perl 5.14.1.  These are
-indicated with a "(5.14.1)" marker.
+the 5.15.1 release.
 
-XXX compare this perldelta to 5.14.1 and double check the notation
-
-=head1 Notice
-
-XXX Any important notices here
+If you are upgrading from an earlier release such as 5.14.0, first read
+L<perl5150delta>, which describes differences between 5.14.0 and
+5.15.0.
 
 =head1 Core Enhancements
 
-XXX New core language features go here. Summarise user-visible core language
-enhancements. Particularly prominent performance optimisations could go
-here, but most should go in the L</Performance Enhancements> section.
-
-[ List each enhancement as a =head2 entry ]
-
-=head2 C<CORE::> works on all keywords
-
-The C<CORE::> prefix can now be used on keywords enabled by
-L<feature.pm|feature>, even outside the scope of C<use feature>.
-
-=head2 C<continue> no longer requires the "switch" feature
-
-The C<continue> keyword has two meanings.  It can introduce a C<continue>
-block after a loop, or it can exit the current C<when> block.  Up till now,
-the latter meaning was only valid with the "switch" feature enabled, and
-was a syntax error otherwise.  Since the main purpose of feature.pm is to
-avoid conflicts with user-defined subroutines, there is no reason for
-C<continue> to depend on it.
-
-=head2 C<$$> can be assigned to
-
-C<$$> was made read-only in Perl 5.8.0.  But only sometimes: C<local $$>
-would make it writable again.  Some CPAN modules were using C<local $$> or
-XS code to bypass the read-only check, so there is no reason to keep C<$$>
-read-only.  (This change also allowed a bug to be fixed while maintaining
-backward compatibility.)
-
-=head2 Features inside the debugger
+=head2 C<splice()> doesn't warn when truncating
 
-The current Perl's feature bundle is now enabled for commands entered in
-the interactive debugger.
+You can now limit the size of an array using C<splice(@a,MAX_LEN)> without
+worrying about warnings.
 
-=head2 C<\N{...}> can now have Unicode loose name matching
+=head2 The C<\$> prototype accepts any scalar lvalue
 
-This is described in the C<charnames> item in
-L</Updated Modules and Pragmata> below.
+The C<\$> and C<\[$]> subroutine prototypes now accept any scalar lvalue
+argument.  Previously they only accepted scalars beginning with C<$> and
+hash and array elements.  This change makes them consistent with the way
+the built-in C<read> and C<recv> functions (among others) parse their
+arguments. This means that one can override the built-in functions with
+custom subroutines that parse their arguments the same way.
 
-=head2 Breakpoints with file names
+=head2 You can now C<study> more than one string
 
-The debugger's "b" command for setting breakpoints now allows a line number
-to be prefixed with a file name.  See
-L<perldebug/"b [file]:[line] [condition]">.
+The restriction that you can only have one C<study> active at a time has been
+removed. You can now usefully C<study> as many strings as you want (until you
+exhaust memory).
 
-=head1 Security
+=head2 The Unicode C<Script_Extensions> property is now supported.
 
-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.
+New in Unicode 6.0, this is an improved C<Script> property.  Details
+are in L<perlunicode/Scripts>.
 
-[ List each security issue as a =head2 entry ]
+=head2 DTrace probes for interpreter phase change
 
-=head1 Incompatible Changes
+The C<phase-change> probes will fire when the interpreter's phase
+changes, which tracks the C<${^GLOBAL_PHASE}> variable. C<arg0> is
+the new phase name; C<arg1> is the old one. This is useful mostly
+for limiting your instrumentation to one or more of: compile time,
+run time, destruct time.
 
-[ List each incompatible change as a =head2 entry ]
+=head2 New Pad API
 
-=head2 Tying scalars that hold typeglobs
-
-Attempting to tie a scalar after a typeglob was assigned to it would
-instead tie the handle in the typeglob's IO slot.  This meant that it was
-impossible to tie the scalar itself.  Similar problems affected C<tied> and
-C<untie>: C<tied $scalar> would return false on a tied scalar if the last
-thing returned was a typeglob, and C<untie $scalar> on such a tied scalar
-would do nothing.
-
-We fixed this problem before Perl 5.14.0, but it caused problems with some
-CPAN modules, so we put in a deprecation cycle instead.
-
-Now the deprecation has been removed and this bug has been fixed.  So
-C<tie $scalar> will always tie the scalar, not the handle it holds.  To tie
-the handle, use C<tie *$scalar> (with an explicit asterisk).  The same
-applies to C<tied *$scalar> and C<untie *$scalar>.
-
-=head2 IPC::Open3 no longer provides C<xfork()>, C<xclose_on_exec()>
-and C<xpipe_anon()>
-
-All three functions were private, undocumented and unexported.  They do
-not appear to be used by any code on CPAN.  Two have been inlined and one
-deleted entirely.
-
-=head2 C<$$> no longer caches PID
-
-Previously, if one embeds Perl or uses XS and calls fork(3) from C, Perls
-notion of C<$$> could go out of sync with what getpid() returns. By always
-fetching the value of C<$$> via getpid(), this potential bug is eliminated.
-Code that depends on the caching behavior will break.  As describe in L</Core
-Enhancements>, C<$$> is now writeable, but it will be reset during a fork.
-
-=head1 Deprecations
-
-XXX Any deprecated features, syntax, modules etc. should be listed here.
-In particular, deprecated modules should be listed here even if they are
-listed as an updated module in the L</Modules and Pragmata> section.
-
-[ List each deprecation as a =head2 entry ]
+Many new functions have been added to the API for manipulating lexical
+pads.  See L<perlapi/Pad Data Structures> for more information.
 
 =head1 Performance Enhancements
 
-XXX Changes which enhance performance without changing behaviour go here. There
-may well be none in a stable release.
-
-[ List each enhancement as a =item entry ]
-
-=over 4
-
-=item *
-
-XXX
-
-=back
-
-=head1 Modules and Pragmata
-
-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>, which prints stub
-entries to STDOUT.  Results can be pasted in place of the '=head2' entries
-below.  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.
-
-[ Within each section, list entries as a =item entry ]
-
-=head2 New Modules and Pragmata
-
 =over 4
 
 =item *
 
-XXX
-
-=back
-
-=head2 Updated Modules and Pragmata
-
-=over 4
+The short-circuiting operators C<&&>, C<||>, and C<//>, when chained
+(such as C<$a || $b || $c>), are now considerably faster to short-circuit,
+due to reduced optree traversal.
 
 =item *
 
-L<constant> has been updated from version 1.21 to 1.22.
+The implementation of C<s///r> makes one fewer copy of the scalar's value.
 
 =item *
 
-L<Archive::Extract> has been upgraded from version 0.48 to version 0.52
-
-Includes a fix for FreeBSD to only use C<unzip> if it is located in
-C</usr/local/bin>, as FreeBSD 9.0 will ship with a limited C<unzip> in
-C</usr/bin>.
+If a studied scalar is C<split> with a regex, the engine will now take
+advantage of the C<study> data.
 
 =item *
 
-L<Attribute::Handlers> updated from version 0.88 to 0.91
+C<study> now uses considerably less memory for shorter strings. Strings shorter
+than 65535 characters use roughly half the memory than previously, strings
+shorter than 255 characters use roughly one quarter of the memory.
 
 =item *
 
-L<B> has been upgraded from version 1.29 to version 1.30.
-
-=item *
-
-L<B::Deparse> has been upgraded from version 1.03 to 1.05.
-
-It addresses two regressions in Perl 5.14.0:
-
-=over
-
-=item *
-
-Deparsing of the C<glob> operator and its diamond (C<< <> >>) form now
-works again [RT #90898] (5.14.1).
-
-=item *
-
-The presence of subroutines named C<::::> or C<::::::> no longer causes
-B::Deparse to hang (5.14.1).
+Recursive calls to lvalue subroutines in lvalue scalar context use less
+memory.
 
 =back
 
-Plus a few other bugs:
-
-=over
-
-=item *
-
-Deparsing of handle C<keys>, C<each> and C<value> with a scalar argument
-now works [RT #91008].
+=head1 Modules and Pragmata
 
-=item *
+=head2 New Modules and Pragmata
 
-C<readpipe> followed by a complex expression (as opposed to a simple scalar
-variable) now works.
+=over 4
 
 =item *
 
-It now puts C<CORE::> in front of overridable core keywords if they
-conflict with user-defined subroutines.
+The logic for parsing, merging, and dumping XS typemaps has been extracted
+from C<ExtUtils::ParseXS> into a module of its own, L<ExtUtils::Typemaps>.
+C<ExtUtils::Typemaps> offers an interface to typemap handling outside of
+the scope of the XS compiler itself.
 
-=item *
+As a first use case of the improved API and extensibility, typemaps can now
+be included inline in XS code with a HEREDOC-like syntax:
 
-Deparsing assignment to an lvalue method specified as a variable
-(C<< $obj->$method = ... >>) used not to work [RT #62498].
+  TYPEMAP: <<END_TYPEMAP
+  MyType       T_IV
+  END_TYPEMAP
 
 =back
 
-=item *
-
-L<CGI> has been upgraded from version 3.52 to version 3.54
-
-The DELETE HTTP verb is now supported.
-
-=item *
-
-L<Compress::Zlib> has been upgraded from version 2.033 to version 2.035
-
-=item *
-
-L<Compress::Raw::Bzip2> has been upgraded from version 2.033 to version 2.035
-
-=item *
-
-L<Compress::Raw::Zlib> has been upgraded from version 2.033 to version 2.035
-
-=item *
+=head2 Updated Modules and Pragmata
 
-L<CPAN::Meta> has been upgraded from version 2.110440 to version 2.110930
+=over 4
 
 =item *
 
-L<CPANPLUS> has been upgraded from version 0.9103 to version 0.9105
+L<B::Deparse> has been upgrade from version 1.05 to 1.06.
 
-Now understands specifying modules to install in the format 'Module/Type.pm'
+It now correctly deparses interpolation of punctuation variables (like
+C<@*>) that do not interpolate without braces [perl #93990].
 
 =item *
 
-L<CPANPLUS::Dist::Build> has been upgraded from version 0.54 to version 0.56
+L<CGI> has been upgraded from version 3.54 to version 3.55.
 
-=item *
+Things that may break your code:
 
-L<Data::Dumper> has been upgraded from version 2.128 to 2.131.
+C<url()> was fixed to return C<PATH_INFO> when it is explicitly requested
+with either the path=>1 or path_info=>1 flag.
 
-=item *
-
-L<DB_File> has been upgraded from version 1.821 to version 1.822
+If your code is running under mod_rewrite (or compatible) and you are calling C<self_url()> or
+you are calling C<url()> and passing C<< path_info=>1 >>, These methods will actually be
+returning C<PATH_INFO> now, as you have explicitly requested, or has C<self_url()>
+has requested on your behalf.
 
-Warnings are now in sync with perl's
+The C<PATH_INFO> has been omitted in such URLs since the issue was introduced
+in the 3.12 release in December, 2005.
 
-=item *
+This bug is so old your application may have come to depend on it or
+workaround it. Check for application before upgrading to this release.
 
-L<Digest::SHA> has been upgraded from version 5.61 to version 5.62
+Examples of affected method calls:
 
-No longer loads L<MIME::Base64> as this was unnecessary.
+  $q->url(-absolute => 1, -query => 1, -path_info => 1 )
+  $q->url(-path=>1)
+  $q->url(-full=>1,-path=>1)
+  $q->url(-rewrite=>1,-path=>1)
+  $q->self_url();
 
 =item *
 
-L<Devel::Peek> has been upgraded from version 1.07 to 1.08.
-
-Its C<fill_mstats> function no longer refuses to write to copy-on-write
-scalars.
-
-=item *
-
-L<Encode> has been upgraded from version 2.42 to version 2.43
-
-Missing aliases added, a deep recursion error fixed and various
-documentation updates.
+L<CPANPLUS> has been upgraded from version 0.9105 to version 0.9108
 
 =item *
 
-L<ExtUtils::CBuilder> updated from version 0.280203 to 0.280204.  The new version
-append CFLAGS and LDFLAGS to their Config.pm counterparts.
+L<Compress::Raw::Bzip2> has been upgraded from version 2.035 to version 2.037
 
 =item *
 
-L<Filter::Util::Call> has been upgraded from version 1.08 to version 1.39
-
-C<decrypt> fixed to work with v5.14.0
+L<Compress::Raw::Zlib> has been upgraded from version 2.035 to version 2.037
 
-=item *
-
-L<Filter::Simple> updated from version 0.85 to 0.87
+Added offset parameter to CRC32
 
 =item *
 
-L<FindBin> updated from version 1.50 to 1.51.
+L<Compress::Zlib> has been upgraded from version 2.035 to version 2.037
 
-It no longer returns a wrong result if a script of the same name as the
-current one exists in the path and is executable.
+IO::Compress::Zip and IO::Uncompress::Unzip now have support for LZMA (method 14).
+There is a fix for a CRC issue in IO::Compress::Unzip and it supports Streamed
+Stored context now. And fixed a Zip64 issue in
+IO::Compress::Zip when the content size was exactly 0xFFFFFFFF.
 
 =item *
 
-L<JSON::PP> has been upgraded from version 2.27105 to version 2.27200
-
-Fixed C<incr_parse> decoding string more correctly.
+L<Cwd> has been upgraded from version 3.36 to 3.37, to address an
+incompatibility with the EPIC debugger.
 
 =item *
 
-L<I18N::LangTags> has been upgraded from version 0.35_01 to version 0.36.
-
-Fix broken URLs for RFCs.
+L<ExtUtils::MakeMaker> has been upgraded from version 6.57_05 to version 6.58
 
 =item *
 
-L<IPC::Open3> has been upgraded from version 1.10 to version 1.11.
+L<ExtUtils::ParseXS> has been upgraded from version 2.2210 to 3.00_01.
 
-=over 4
-
-=item *
+Much of L<ExtUtils::ParseXS>, the module behind the XS compiler C<xsubpp>,
+was rewritten and cleaned up. It has been made somewhat more extensible
+and now finally uses strictures.
 
-Fixes a bug which prevented use of open3 on Windows when *STDIN, *STDOUT or
-*STDERR had been localized.
+The typemap logic has been moved into a separate module,
+L<ExtUtils::Typemaps>.  See L</New Modules and Pragmata>, above.
 
 =item *
 
-Fixes a bug which prevented duplicating numeric file descriptors on Windows.
+L<HTTP::Tiny> has been upgraded from version 0.012 to version 0.013.
 
-=back
+Added support for using C<$ENV{http_proxy}> to set the default proxy host.
 
 =item *
 
-L<Math::BigFloat> has been upgraded from version 1.993 to 1.994.
+L<IPC::Cmd> has been upgraded from version 0.70 to version 0.72
 
-The C<numify> method has been corrected to return a normalised Perl number
-(the result of C<0 + $thing>), instead of a string [rt.cpan.org #66732].
+Capturing of command output (both C<STDOUT> and C<STDERR>) is now supported
+using L<IPC::Open3> on MSWin32 without requiring L<IPC::Run>.
 
 =item *
 
-L<Math::BigInt> has been upgraded from version 1.994 to 1.995.
-
-It provides a new C<bsgn> method that complements the C<babs> method.
-
-It fixes the internal C<objectify> function's handling of "foreign objects"
-so they are converted to the appropriate class (Math::BigInt or
-Math::BigFloat).
+L<Locale::Codes> has been upgraded from version 3.16 to version 3.17
 
-=item *
+Added Language Extension codes (langext) and Language Variation codes
+(langvar) as defined in the IANA language registry.
 
-L<Math::Complex> has been upgraded from version 1.56 to version 1.57.
+Added language codes from ISO 639-5
 
-Correct copy constructor usage.
-Fix polarwise formatting with numeric format specifier.
-More stable C<great_circle_direction> algorithm.
+Added language/script codes from the IANA language subtag
+registry
 
-=item *
+Fixed an uninitialized value warning.  RT 67438
 
-L<Module::CoreList> has been upgraded from version 2.49 to 2.50.
+Fixed the return value for the all_XXX_codes and all_XXX_names functions.  RT 69100
 
-Updated for v5.12.4.
+Reorganized modules to move Locale::MODULE to Locale::Codes::MODULE to
+allow for cleaner future additions.  The original four modules (Locale::Language,
+Locale::Currency, Locale::Country, Locale::Script) will continue to work, but
+all new sets of codes will be added in the Locale::Codes namespace.
 
 =item *
 
-L<mro> has been updated to remove two broken URLs in the documentation.
-
-=item *
-
-L<Object::Accessor> has been upgraded from version 0.38 to version 0.42
-
-Eliminated use of C<exists> on array elements which has been deprecated.
-
-=item *
-
-L<ODBM_File> has been upgraded from version 1.10 to version 1.11.
+L<Math::BigInt::FastCalc> has been upgraded from version 0.28 to version 0.29.
 
 The XS code is now compiled with C<PERL_NO_GET_CONTEXT>, which will aid
 performance under ithreads.
 
 =item *
 
-L<PerlIO::encoding> has been upgraded from version 0.14 to 0.15
-
-=item *
-
-L<PerlIO::scalar> has been upgraded from version 0.11 to 0.12.
+L<Module::CoreList> has been upgraded from version 2.51 to 2.53.
 
-It fixes a problem with C<< open my $fh, ">", \$scalar >> not working if
-C<$scalar> is a copy-on-write scalar.
+Some extraneous (and erroneous) entries have been removed
+[rt.cpan.org #69108].
 
-It also fixes a hang that occurs with C<readline> or C<< <$fh> >> if a
-typeglob has been assigned to $scalar [RT #92258].
+The C<corelist> utility now understands the C<-r> option for
+displaying Perl release dates.
 
 =item *
 
-L<Pod::Perldoc> has been upgraded from version 3.15_03 to 3.15_05.
+L<Pod::Perldoc> has been upgraded from version 3.15_05 to 3.15_06.
 
-It corrects the search paths on VMS [RT #90640].
+The B<-v> option now fetches the right section for C<$0>.
 
 =item *
 
-L<Storable> has been upgraded from version 2.27 to version 2.28.
-
-It no longer turns copy-on-write scalars into read-only scalars when
-freezing and thawing.
+L<Pod::Simple> has been upgraded from version 3.16 to version 3.18
 
 =item *
 
-L<Sys::Syslog> has been upgraded from version 0.27 to version 0.29
+L<Unicode::Collate> has been upgraded from version 0.76 to version 0.77
 
-Large number of Request Tickets resolved.
+Applied [perl #93470] silencing compiler warnings with -Wwrite-strings
 
 =item *
 
-L<Time::HiRes> has been upgraded from version 1.9721_01 to version 1.9722.
+L<Win32API::File> has been upgraded from version 0.1101 to version 0.1200
 
-Portability fix, and avoiding some compiler warnings.
+Added SetStdHandle and GetStdHandle functions
 
 =item *
 
-L<Unicode::Collate> has been upgraded from version 0.73 to version 0.76
-
-Updated to CLDR 1.9.1
+L<attributes> has been upgraded from version 0.14 to 0.15, as part of the
+lvalue attribute warnings fix.  See L</Selected Bug Fixes>, below.
 
 =item *
 
-L<Unicode::Normalize> has been upgraded from version 1.10 to version 1.12
+L<diagnostics> has been upgraded from version 1.22 to 1.23.
 
-Fixes for the removal of C<unicore/CompositionExclusions.txt> from core.
+It now knows how to find descriptions for diagnostic messages ending with a
+dot, instead getting confused by it.
 
 =item *
 
-L<XSLoader> has been upgraded from version 0.13 to version 0.15
-
-Integrated changes from bleadperl
-
-=item *
+L<threads> has been upgraded from version 1.83 to 1.84
 
-L<charnames> can now be invoked with a new option, C<:loose>,
-which is like the existing C<:full> option, but enables Unicode loose
-name matching.  This means that instead of
-having to get the name of the code point or sequence you want exactly right,
-you can fudge things somewhat.  This is especially useful when
-you don't remember if the official Unicode name uses hyphens or
-blanks between words.  Details are in L<charnames/LOOSE MATCHES>.
-
-XXX
+An unused variable was removed from the XS code.
 
 =back
 
 =head2 Removed Modules and Pragmata
 
-As promised in Perl 5.14.0's release notes, the following modules have
-been removed from the core distribution, and if needed should be installed
-from CPAN instead.
-
-=over
+=over 4
 
 =item *
 
-C<Devel::DProf> has been removed from the Perl core.  Prior version was 20110228.00.
+Perl 4-era .pl libraries
 
-=item *
-
-C<Shell> has been removed from the Perl core.  Prior version was 0.72_01.
+Perl used to bundle a handful of library files that predate Perl 5. Most of
+these files, which have been deprecated since version 5.14.0, have now been
+removed. If your code still relies on these libraries, you can install them
+again from L<Perl4::CoreLibs> on CPAN.
 
 =back
 
 =head1 Documentation
 
-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>.
-
 =head2 New Documentation
 
-XXX Changes which create B<new> files in F<pod/> go here.
-
-=head3 L<XXX>
-
-XXX Description of the purpose of the new file here
-
-=head2 Changes to Existing Documentation
-
-XXX Changes which significantly change existing files in F<pod/> go here.
-However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
-section.
-
-=head3 L<perlfork>
-
-=over
-
-=item *
-
-Added portability caveats related to using kill on forked process.
-
-=back
-
-=head3 L<perlfunc>
-
-=over
-
-=item *
-
-C<given>, C<when> and C<default> are now listed in L<perlfunc> (5.14.1).
-
-=item *
-
-The examples for the C<select> function no longer use strings for file
-handles.
-
-=back
-
-=head3 L<perlguts>
-
-=over
-
-=item *
-
-Some of the function descriptions in L<perlguts> were confusing, as it was
-not clear whether they referred to the function above or below the
-description.  This has been clarified [RT #91790].
-
-=back
-
-=head3 L<perllol>
-
-=over
-
-=item *
-
-L<perllol> has been expanded with examples using the new C<push $scalar>
-syntax introduced in Perl 5.14.0 (5.14.1).
-
-=back
-
-=head3 L<perlmod>
+=head3 L<perldtrace>
 
-=over
+L<perldtrace> describes Perl's DTrace support, listing the provided probes
+and gives examples of their use.
 
-=item *
-
-L<perlmod> now states explicitly that some types of explicit symbol table
-manipulation are not supported.  This codifies what was effectively already
-the case [RT #78074].
-
-=back
+=head3 L<perl5141delta>
 
-=head3 L<perlop>
-
-=over 4
-
-=item *
-
-The explanation of bitwise operators has been expanded to explain how they
-work on Unicode strings (5.14.1).
-
-=item *
-
-The section on the triple-dot or yada-yada operator has been moved up, as
-it used to separate two closely related sections about the comma operator
-(5.14.1).
-
-=item *
-
-More examples for C<m//g> have been added (5.14.1).
-
-=item *
+The delta file for Perl 5.14.1 has been copied to blead.
 
-The C<<< <<\FOO >>> here-doc syntax has been documented (5.14.1).
-
-=back
-
-=head3 L<perlpodstyle>
+=head2 Changes to Existing Documentation
 
 =over 4
 
 =item *
 
-The tips on which formatting codes to use have been corrected and greatly
-expanded.
+L<perlxs> was extended with documentation on inline typemaps.
 
 =item *
 
-There are now a couple of example one-liners for previewing POD files after
-they have been edited.
-
-=back
-
-=head3 L<perlre>
-
-=over
-
-=item *
-
-The C<(*COMMIT)> directive is now listed in the right section
-(L<Verbs without an argument|perlre/Verbs without an argument>).
-
-=back
-
-=head3 L<perlrun>
-
-=over
+L<perlref> has a new L<Circular References|perlref/Circular References>
+section explaining how circularities may not be freed and how to solve that
+with weak references.
 
 =item *
 
-L<perlrun> has undergone a significant clean-up.  Most notably, the
-B<-0x...> form of the B<-0> flag has been clarified, and the final section
-on environment variables has been corrected and expanded (5.14.1).
-
-=back
-
-=head3 L<perlvar>
-
-=over
+The documentation for smart match in L<perlsyn> has been corrected for the
+case of C<undef> on the left-hand side.  The list of different smart match
+behaviours had an item in the wrong place.
 
 =item *
 
-The documentation for L<$!|perlvar/$!> has been corrected and clarified.
-It used to state that $! could be C<undef>, which is not the case.  It was
-also unclear as to whether system calls set C's C<errno> or Perl's C<$!>
-[RT #91614].
-
-=back
-
-=head3 L<POSIX>
-
-=over
+Parts of L<perlapi> were clarified, and Perl equivalents of some C
+functions have been added as an additional mode of exposition.
 
 =item *
 
-The invocation documentation for C<WIFEXITED>, C<WEXITSTATUS>,
-C<WIFSIGNALED>, C<WTERMSIG>, C<WIFSTOPPED>, and C<WSTOPSIG> has been
-corrected (5.14.1).
+A few parts of L<perlre> and L<perlrecharclass> were clarified.
 
 =back
 
@@ -657,604 +347,225 @@ 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>.
 
-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.
-
-[ Within each section, list entries as a =item entry ]
-
-=head2 New Diagnostics
-
-XXX Newly added diagnostic messages go here
-
-=head3 New Warnings
-
-=over 4
-
-=item L<Useless assignment to a temporary|perldiag/"Useless assignment to a temporary">
-
-Assigning to a temporary returned from an XS lvalue subroutine now produces a
-warning [RT #31946].
-
-=back
-
 =head2 Changes to Existing Diagnostics
 
-XXX Changes (i.e. rewording) of diagnostic messages go here
-
-=over 4
-
-=item *
-
-XXX
-
-=back
-
-=head1 Utility Changes
-
-XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
-here. Most of these are built within the directories F<utils> and F<x2p>.
-
-[ List utility changes as a =head3 entry for each utility and =item
-entries for each change
-Use L<XXX> with program names to get proper documentation linking. ]
-
-=head3 L<XXX>
-
-=over 4
-
-=item *
-
-XXX
-
-=back
-
-=head1 Configuration and Compilation
-
-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.
-
-[ List changes as a =item entry ].
-
 =over 4
 
 =item *
 
-F<regexp.h> has been modified for compatibility with GCC's B<-Werror>
-option, as used by some projects that include perl's header files (5.14.1).
+The L<Invalid version format|perldiag/"Invalid version format (%s)">
+error message now says "negative version number" within the parentheses,
+rather than "non-numeric data", for negative numbers.
 
 =item *
 
-USE_LOCALE{,_COLLATE,_CTYPE,_NUMERIC} have been added the output of perl -V
-as they have affect the behaviour of the interpreter binary (albeit only
-in a small area).
+The two warnings
+L<Possible attempt to put comments in qw() list|perldiag/"Possible attempt to put comments in qw() list">
+and
+L<Possible attempt to separate words with commas|perldiag/"Possible attempt to separate words with commas">
+are no longer mutually exclusive: the same C<qw> construct may produce
+both.
 
 =item *
 
-The code and tests for L<IPC::Open2> have been moved from F<ext/IPC-Open2>
-into F<ext/IPC-Open3>, as C<IPC::Open2::open2()> is implemented as a thin
-wrapper around C<IPC::Open3::_open3()>, and hence is very tightly coupled to
-it.
+Warnings that mention the names of lexical (C<my>) variables with Unicode
+characters in them now respect the presence or absence of the C<:utf8>
+layer on the output handle, instead of outputting UTF8 regardless.  Also,
+the correct names are included in the strings passed to C<$SIG{__WARN__}>
+handlers, rather than the raw UTF8 bytes.
 
 =back
 
 =head1 Testing
 
-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 summarising, although the bugs
-that they represent may be covered elsewhere.
-
-[ List each test improvement as a =item entry ]
-
 =over 4
 
 =item *
 
-XXX
-
-=back
-
-=head1 Platform Support
-
-XXX Any changes to platform support should be listed in the sections below.
-
-[ Within the sections, list each platform as a =item entry with specific
-changes as paragraphs below it. ]
-
-=head2 New Platforms
-
-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.
-
-=over 4
-
-=item GNU/Hurd
-
-=over
+F<t/run/dtrace.t> was added to test Perl's DTrace support. This
+test will only be run if your Perl was built with C<-Dusedtrace>
+and if calling C<dtrace> actually lets you instrument code. This
+generally requires being run as root, so this test file is primarily
+intended for use by the dtrace subcommittee of p5p.
 
 =item *
 
-No longer overrides possible extra $ccflags values given to Configure
-on GNU/Hurd.  C.f. Bug-Debian: http://bugs.debian.org/587901
-
-=back
-
-=item Mac OS X
-
-Clarified apple developer tools requirements in README.macosx
+F<t/win32/runenv.t> was added to test aspects of Perl's environment
+variable handling on MSWin32 platforms.  Previously, such tests were
+skipped on MSWin32 platforms.
 
-=item MSWin32
-
-Supplied F<makefile.mk> patched to support gcc-4.x.x and README.win32
-updated accordingly. [RT #91354]
-
-=item Solaris
+=item *
 
-Updated the list of required packages for building perl to reflect Solaris 9
-and 10 in README.solaris [RT #90850]
+Some bitrot has been fixed in the miniperl test suite, so that it now
+nearly passes.  The minitest is normally only run when building the
+full perl fails, so it was liable to fall into disrepair making it a
+less useful debugging tool.  When it is fully passing it is hoped to
+start including it in regular smoke tests, so that future bitrot will
+be quickly detected.
 
 =back
 
-=head2 Discontinued Platforms
-
-XXX List any platforms that this version of perl no longer compiles on.
-
-=over 4
-
-=item XXX-some-platform
-
-XXX
-
-=back
+=head1 Platform Support
 
 =head2 Platform-Specific Notes
 
-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.
-
-=head3 Ubuntu Linux
-
-=over 4
+=head3 Windows
 
-=item *
-
-The L<ODBM_File> installation process has been updated with the new library
-paths on Ubuntu natty [RT #90106].
+=over
 
 =item *
 
-I<h2ph> now gets the include paths from gcc correctly.  This stopped
-working when Ubuntu switched to a "multiarch" setup [RT #90122].
+On Windows 7, 2008 and Vista, C<@INC> is now always properly populated
+based on the value of PERL5LIB set in the environment.  Previously,
+values of PERL5LIB longer than 32766 bytes were skipped when C<@INC>
+was being populated.  Tests for environment handling were
+also added (see L</Testing> section).  Fixes
+L<RT #87322|https://rt.perl.org/rt3/Public/Bug/Display.html?id=87322>.
 
 =back
 
 =head1 Internal Changes
 
-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.
-
 =over 4
 
 =item *
 
-When empting a hash of its elements (e.g. via undef(%h), or %h=()), HvARRAY
-field is no longer temporarily zeroed.  Any destructors called on the freed
-elements see the remaining elements. Thus, %h=() becomes more like C<delete
-$h{$_} for keys %h>.
-
-=item *
-
-The compiled representation of formats is now stored via the mg_ptr of
-their PERL_MAGIC_fm. Previously it was stored in the string buffer,
-beyond SvLEN(), the regular end of the string. SvCOMPILED() and
-SvCOMPILED_{on,off}() now exist solely for compatibility for XS code.
-The first is always 0, the other two now no-ops.
-
-=item *
-
-Boyer-Moore compiled scalars are now PVMGs, and the Boyer-Moore tables are now
-stored via the mg_ptr of their PERL_MAGIC_bm. Previously they were PVGVs, with
-the tables stored in the string buffer, beyond SvLEN(). This eliminates the
-last place where the core stores data beyond SvLEN().
-
-=item *
-
-C<pos> in lvalue context now returns a PVMG instead of a PVLV, storing the
-target SV in C<mg_obj>, instead of C<LvTARG()>.
+The expermental C<fetch_cop_label> function has been renamed to
+C<cop_fetch_label>.
 
 =item *
 
-Simplified logic in C<Perl_sv_magic()> introduces a small change of
-behaviour for error cases involving unknown magic types. Previously, if
-C<Perl_sv_magic()> was passed a magic type unknown to it, it would
-
-=over
-
-=item 1.
-
-Croak "Modification of a read-only value attempted" if read only
-
-=item 2.
-
-Return without error if the SV happened to already have this magic
-
-=item 3.
-
-otherwise croak "Don't know how to handle magic of type \\%o"
-
-=back
-
-Now it will always croak "Don't know how to handle magic of type \\%o", even
-on read only values, or SVs which already have the unknown magic type.
+The C<cop_store_label> function has been added to the API, but is
+experimental.
 
 =back
 
 =head1 Selected Bug Fixes
 
-XXX Important bug fixes in the core language are summarised here.
-Bug fixes in files in F<ext/> and F<lib/> are best summarised in
-L</Modules and Pragmata>.
-
-[ List each fix as a =item entry ]
-
-=head2 Regular expressions and character classes
-
 =over 4
 
 =item *
 
-The new (in 5.14.0) regular expression modifier C</a> when repeated like
-C</aa> forbids the characters outside the ASCII range that match
-characters inside that range from matching under C</i>.  This did not
-work under some circumstances, all involving alternation, such as:
+Applying the :lvalue attribute to subroutine that is already defined does
+not work properly, as the attribute changes the way the sub is compiled.
+Hence, Perl 5.12 began warning when an attempt is made to apply the
+attribute to an already defined sub.  In such cases, the attribute is
+discarded.
 
- "\N{KELVIN SIGN}" =~ /k|foo/iaa;
+But the change in 5.12 missed the case where custom attributes are also
+present: that case still silently and ineffectively applied the attribute.
+That omission has now been corrected.  C<sub foo :lvalue :Whatever> (when
+C<foo> is already defined) now warns about the :lvalue attribute, and does
+not apply it.
 
-succeeded inappropriately.  This is now fixed.
+L<attributes.pm|attributes> has likewise been updated to warn and not apply
+the attribute.
 
 =item *
 
-5.14.0 introduced some memory leaks in regular expression character
-classes such as C<[\w\s]>, which have now been fixed
+The remaining discrepancies between explicit and implicit return from
+lvalue subroutines have been resolved.  They mainly involved which error
+message to display when a read-only value is returned in lvalue context.
+Also, returning a PADTMP (the result of most built-ins, like C<index>) in
+lvalue context is now forbidden for explicit return, as it always has been
+for implicit return.  This is not a regression from 5.14, as all the cases
+in which it could happen where previously syntax errors.
 
 =item *
 
-An edge case in regular expression matching could potentially loop.
-This happened only under C</i> in bracketed character classes that have
-characters with multi-character folds, and the target string to match
-against includes the first portion of the fold, followed by another
-character that has a multi-character fold that begins with the remaining
-portion of the fold, plus some more.
-
- "s\N{U+DF}" =~ /[\x{DF}foo]/i
-
-is one such case.  C<\xDF> folds to C<"ss">
+Explicitly returning a tied C<my> variable from an lvalue subroutine in
+list lvalue context used to clear the variable before the assignment could
+happen.  This is something that was missed when explicit return was made to
+work in 5.15.0.
 
 =item *
 
-A few characters in regular expression pattern matches did not
-match correctly in some circumstances, all involving C</i>.  The
-affected characters are:
-COMBINING GREEK YPOGEGRAMMENI,
-GREEK CAPITAL LETTER IOTA,
-GREEK CAPITAL LETTER UPSILON,
-GREEK PROSGEGRAMMENI,
-GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA,
-GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS,
-GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA,
-GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS,
-LATIN SMALL LETTER LONG S,
-LATIN SMALL LIGATURE LONG S T,
-and
-LATIN SMALL LIGATURE ST.
+A minor memory leak, introduced in 5.15.0, has been fixed.  It would occur
+when a hash is freed that has had its current iterator deleted
+[perl #93454].
 
 =item *
 
-Fixed memory leak regression in regular expression compilation
-under threading
-
-=back
-
-=head2 Formats
-
-=over
+The C<prototype> function no longer dies for the C<__FILE__>, C<__LINE__>
+and C<__PACKAGE__> directives.  It now returns an empty-string prototype
+for them, because they are syntactically very similar to nullary functions
+like C<time>.
 
 =item *
 
-A number of edge cases have been fixed with formats and C<formline>;
-in particular, where the format itself is potentially variable (such as
-with ties and overloading), and where the format and data differ in their
-encoding. In both these cases, it used to possible for the output to be
-corrupted [RT #91032].
+C<prototype> now returns C<undef> for all overridable infix operators,
+such as C<eq>, which are not callable in any way resembling functions.
+It used to return incorrect prototypes for some and die for others
+[perl #94984].
 
 =item *
 
-C<formline> no longer converts its argument into a string in-place.  So
-passing a reference to C<formline> no longer destroys the reference
-[RT #79532].
-
-=back
-
-=head2 Copy-on-write scalars
-
-Copy-on-write scalars were introduced in 5.6.0, but most Perl code
-did not encounter them (they were used mostly internally).  Perl
-5.10.0 extended them, such that assigning C<__PACKAGE__> or a
-hash key to a scalar would make it copy-on-write.  Several parts
-of Perl were not updated to account for them, but have now been fixed.
-
-=over
-
-=item *
-
-C<utf8::decode> had a nasty bug that would modify copy-on-write scalars'
-string buffers in place (i.e., skipping the copy).  This could result in
-hashes having two elements with the same key [RT #91834].
-
-=item *
-
-Lvalue subroutines were not allowing COW scalars to be returned.  This was
-fixed for lvalue scalar context in Perl 5.12.3 and 5.14.0, but list context
-was not fixed until this release.
-
-=item *
-
-Elements of restricted hashes (see the L<fields> pragma) containing
-copy-on-write values couldn't be deleted, nor could such hashes be cleared
-(C<%hash = ()>).
-
-=item *
-
-Localising a tied variable used to make it read-only if it contained a
-copy-on-write string.
-
-=item *
-
-L<Storable>, L<Devel::Peek> and L<PerlIO::scalar> had similar problems.
-See L</Updated Modules and Pragmata>, above.
-
-=back
-
-=head2 lvalue subroutines
-
-There have been various fixes to lvalue subroutines.
-
-=over
-
-=item *
-
-Explicit return now returns the actual argument passed to return, instead
-of copying it [RT #72724] [RT #72706].
-
-B<Note:> There are still some discrepancies between explicit and implicit
-return, which will hopefully be resolved soon.  So the exact behaviour is
-not set in stone yet.
-
-=item *
-
-Lvalue subroutines used to enforce lvalue syntax (i.e., whatever can go on
-the left-hand side of C<=>) for the last statement and the arguments to
-return.  Since lvalue subroutines are not always called in lvalue context,
-this restriction has been lifted.
-
-=item *
-
-Lvalue subroutines are less restrictive as to what values can be returned.
-It used to croak on values returned by C<shift> and C<delete> and from
-other subroutines, but no longer does so [RT #71172].
-
-=item *
-
-Empty lvalue subroutines (C<sub :lvalue {}>) used to return C<@_> in list
-context.  In fact, all subroutines used to, but regular subs were fixed in
-Perl 5.8.2.  Now lvalue subroutines have been likewise fixed.
-
-=item *
-
-Lvalue subroutines used to copy their return values in rvalue context.  Not
-only was this a waste of CPU cycles, but it also caused bugs.  A C<($)>
-prototype would cause an lvalue sub to copy its return value [RT #51408],
-and C<while(lvalue_sub() =~ m/.../g) { ... }> would loop endlessly
-[RT #78680].
-
-=item *
-
-Autovivification now works on values returned from lvalue subroutines
-[RT #7946].
-
-=item *
-
-When called in pass-by-reference context (e.g., subroutine arguments or a list
-passed to C<for>), an lvalue subroutine returning arrays or hashes used to bind
-the arrays (or hashes) to scalar variables--something that is not supposed to
-happen.  This could result in "Bizarre copy of ARRAY" errors or C<print>
-ignoring its arguments.  It also made nonsensical code like C<@{\$_}> "work".
-This was fixed in 5.14.0 if an array were the first thing returned from the
-subroutine (but not for C<$scalar, @array> or hashes being returned).  Now a
-more general fix has been applied [RT #23790].
-
-=item *
-
-Assignment to C<keys> returned from an lvalue sub used not to work, but now
-it does.
-
-=back
-
-=head2 Fixes related to hashes
-
-=over
+A bug affecting lvalue context propagation through nested lvalue subroutine
+calls has been fixed.  Previously, returning a value in nested rvalue
+context would be treated as lvalue context by the inner subroutine call,
+resulting in some values (such as read-only values) being rejected.
 
 =item *
 
-A bug has been fixed that would cause a "Use of freed value in iteration"
-error if the next two hash elements that would be iterated over are
-deleted [RT #85026].
+Some core bugs affecting L<Hash::Util> have been fixed: locking a hash
+element that is a glob copy no longer causes subsequent assignment to it to
+corrupt the glob, and unlocking a hash element that holds a copy-on-write
+scalar no longer causes modifications to that scalar to modify other
+scalars that were sharing the same string buffer.
 
 =item *
 
-Freeing deeply nested hashes no longer crashes [RT #44225].
+C<when> blocks are now capable of returning variables declared inside the
+enclosing C<given> block [perl #93548].
 
 =item *
 
-Deleting the current hash iterator (the hash element that would be returend
-by the next call to C<each>) in void context used not to free it.  The hash
-would continue to reference it until the next iteration.  This has been
-fixed [RT #85026].
-
-=back
-
-=head2 Other notable fixes
-
-=over
-
-=item *
-
-Passing the same constant subroutine to both C<index> and C<formline> no
-longer causes one or the other to fail [RT #89218].
-
-=item *
-
-List assignment to lexical variables declared with attributes in the same
-statement (C<my ($x,@y) : blimp = (72,94)>) stopped working in Perl 5.8.0.
-It has now been fixed.
+A problem with context propagation when a C<do> block is an argument to
+C<return> has been fixed.  It used to cause C<undef> to be returned in
+some cases of a C<return> inside an C<if> block which itself is followed by
+another C<return>.
 
 =item *
 
-Perl 5.10.0 introduced some faulty logic that made "U*" in the middle of
-a pack template equivalent to "U0" if the input string was empty.  This has
-been fixed [RT #90160].
+Calling C<index> with a tainted constant no longer causes constants in
+subsequently compiled code to become tainted [perl #64804].
 
 =item *
 
-Destructors on objects were not called during global destruction on objects
-that were not referenced by any scalars.  This could happen if an array
-element were blessed (e.g., C<bless \$a[0]>) or if a closure referenced a
-blessed variable (C<bless \my @a; sub foo { @a }>).
+Use of lexical (C<my>) variables in code blocks embedded in regular
+expressions will no longer result in memory corruption or crashes.
 
-Now there is an extra pass during global destruction to fire destructors on
-any objects that might be left after the usual passes that check for
-objects referenced by scalars [RT #36347].
-
-This bug fix was added in Perl 5.13.9, but caused problems with some CPAN
-modules that were relying on the bug.  Since it was so close to Perl
-5.14.0, the fix was reverted in 5.13.10, to allow more time for the modules
-to adapt.  Hopefully they will be fixed soon (see L</Known Problems>,
-below).
+Nevertheless, these code blocks are still experimental, as there are still
+problems with the wrong variables being closed over (in loops for instance)
+and with abnormal exiting (e.g., C<die>) causing memory corruption.
 
 =item *
 
-C<given> was not calling set-magic on the implicit lexical C<$_> that it
-uses.  This meant, for example, that C<pos> would be remembered from one
-execution of the same C<given> block to the next, even if the input were a
-different variable [RT #84526].
+The C<SvIsCOW> C macro now returns false for read-only copies of typeglobs,
+such as those created by:
 
-=item *
+  $hash{elem} = *foo;
+  Hash::Util::lock_value %hash, 'elem';
 
-The "R" command for restarting a debugger session has been fixed to work on
-Windows, or any other system lacking a C<POSIX::_SC_OPEN_MAX> constant
-[RT #87740].
+It used to return true.
 
 =item *
 
-Fixed a case where it was possible that a freed buffer may have been read
-from when parsing a here document [RT #90128].
+Assignment to C<$^A> (the format output accumulator) now recalculates
+the number of lines output.
 
 =item *
 
-The C<study> function could become confused if fed a string longer than
-2**31 characters.  Now it simply skips such strings.
-
-=item *
-
-C<each(I<ARRAY>)> is now wrapped in C<defined(...)>, like C<each(I<HASH>)>,
-inside a C<when> condition [RT #90888].
-
-=item *
-
-In @INC filters (subroutines returned by subroutines in @INC), $_ used to
-misbehave: If returned from a subroutine, it would not be copied, but the
-variable itself would be returned; and freeing $_ (e.g., with C<undef *_>)
-would cause perl to crash.  This has been fixed [RT #91880].
-
-=item *
-
-An ASCII single quote (') in a symbol name is meant to be equivalent to a
-double colon (::) except at the end of the name.  It was not equivalent if
-followed by a null character, but now it is [RT #88138].
-
-=item *
-
-The abbreviations for four C1 control characters
-C<MW>
-C<PM>,
-C<RI>,
-and
-C<ST>
-were previously unrecognized by C<\N{}>,
-vianame(), and string_vianame().
-
-=item *
-
-Some cases of threads crashing due to memory allocation during cloning have
-been fixed [RT #90006].
-
-=item *
-
-Attempting to C<goto> out of a tied handle method used to cause memory
-corruption or crashes.  Now it produces an error message instead
-[RT #8611].
-
-=back
-
-=head2 Additional fixes by ticket number
-
-XXX Prefix these with "\n=item *\n" once the list is final
-
-Fixed RT #88822: Test failure t/re_fold_grind.t with bleadperl
-Fixed RT #89896: Locale::Maketext test failure
-
-XXX Comments from FC: I do not think these two are necessary.
-
-=head1 Known Problems
-
-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, unless
-they were specific to a particular platform (see below).
-
-This is a list of some significant unfixed bugs, which are regressions
-from either 5.XXX.XXX or 5.XXX.XXX.
-
-[ List each fix as a =item entry ]
-
-=over 4
-
-=item *
-
-The fix for RT #36347 causes test failures for C<Gtk2> and C<Tk> on some
-systems [RT #82542].
-
-=item *
-
-The changes to C<tie> cause test failures for the C<JS> module.
+The regexp optimiser no longer crashes on debugging builds when merging
+fixed-string nodes with inconvenient contents.
 
 =back
 
-=head1 Obituary
-
-XXX If any significant core contributor has died, we've added a short obituary
-here.
-
 =head1 Acknowledgements
 
-XXX The list of people to thank goes here.
+XXX Generate this with:
+
+  perl Porting/acknowledgements.pl v5.15.0..HEAD
 
 =head1 Reporting Bugs
 
@@ -1272,7 +583,8 @@ analysed by the Perl porting team.
 If the bug you are reporting has security implications, which make it
 inappropriate to send to a publicly archived mailing list, then please send
 it to perl5-security-report@perl.org. This points to a closed subscription
-unarchived mailing list, which includes all the core committers, who be able
+unarchived mailing list, which includes
+all the core committers, who will be able
 to help assess the impact of issues, figure out a resolution, and help
 co-ordinate the release of patches to mitigate or fix the problem across all
 platforms on which Perl is supported. Please only use this address for