This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
mktables: Don't add exact duplicate to tables
[perl5.git] / pod / perldelta.pod
index 33c67de..07a684a 100644 (file)
@@ -1,26 +1,25 @@
 =encoding utf8
 
 =for comment
-This has been completed up to 6b349a5c4c, except for:
-8629c11317 smueller Escape double-quotes in generated #line directives
-8dc67a69b  shlomif  perl -d: display lines inside subroutines.
-3dfd1b5cd2 leont    Export PerlIOBase_open
+This has been completed up to 0aae26c14, except for:
+803e389        rurban  CYG17 utf8 paths
+d9298c1        rurban  mymalloc isn't thread safe
 
 =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.7
+perldelta - what is new for perl v5.15.8
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.15.6 release and
-the 5.15.7 release.
+This document describes differences between the 5.15.7 release and
+the 5.15.8 release.
 
-If you are upgrading from an earlier release such as 5.15.5, first read
-L<perl5156delta>, which describes differences between 5.15.5 and
-5.15.6.
+If you are upgrading from an earlier release such as 5.15.6, first read
+L<perl5157delta>, which describes differences between 5.15.6 and
+5.15.7.
 
 =head1 Notice
 
@@ -34,31 +33,108 @@ here, but most should go in the L</Performance Enhancements> section.
 
 [ List each enhancement as a =head2 entry ]
 
-=head2 C<use charnames> no longer needed for C<\N{I<name>}>
-
-The C<charnames> module is now automatically loaded when needed as if
-the C<:full> and C<:short> options had been specified.  See
-L<charnames>.
-
-=head2 Improved performance for Unicode properties in regular expressions
-
-Matching a code point against a Unicode property is now done via a
-binary search instead of linear.  This means for example that the worst
-case for a 1000 item property is 10 probes instead of 1000.  This
-inefficiency has been compensated for in the past by permanently storing
-in a hash the results of a given probe plus the results for the adjacent
-64 code points, under the theory that near-by code points are likely to
-be searched for.  A separate hash was used for each mention of a Unicode
-property in each regular expression.  Thus, C<qr/\p{foo}abc\p{foo}/>
-would generate two hashes.  Any probes in one instance would be unknown
-to the other, and the hashes could expand separately to be quite large
-if the regular expression were used on many different widely-separated
-code points.  This can lead to running out of memory in extreme cases.
-Now, however, there is just one hash shared by all instances of a given
-property.  This means that if C<\p{foo}> is matched against "A" in one
-regular expression in a thread, the result will be known immediately to
-all regular expressions, and the relentless march of using up memory is
-slowed considerably.
+=head2 Improved ability to mix locales and Unicode, including UTF-8 locales
+
+An optional parameter has been added to C<use locale>
+
+ use locale ':not_characters';
+
+which tells Perl to use all but the C<LC_CTYPE> and C<LC_COLLATE>
+portions of the current locale.  Instead, the character set is assumed
+to be Unicode.  This allows locales and Unicode to be seamlessly mixed,
+including the increasingly frequent UTF-8 locales.  When using this
+hybrid form of locales, the C<:locale> layer to the L<open> pragma can
+be used to interface with the file system, and there are CPAN modules
+available for ARGV and environment variable conversions.
+
+Full details are in L<perllocale>.
+
+=head2 New function C<fc> and corresponding escape sequence C<\F> for Unicode foldcase
+
+Unicode foldcase is an extension to lowercase that gives better results
+when comparing two strings case-insensitively.  It has long been used
+internally in regular expression C</i> matching.  Now it is available
+explicitly through the new C<fc> function call (enabled by
+S<C<"use feature 'fc'">>, or C<use v5.16>, or explicitly callable via
+C<CORE::fc>) or through the new C<\F> sequence in double-quotish
+strings.
+
+Full details are in L<perlfunc/fc>.
+
+=head2 C<_> in subroutine prototypes
+
+The C<_> character in subroutine prototypes is now allowed before C<@> or
+C<%>.
+
+=head2 Supports (I<almost>) Unicode 6.1
+
+Besides the addition of whole new scripts, and new characters in
+existing scripts, this new version of Unicode, as always, makes some
+changes to existing characters.  One change that may trip up some
+applications is that the General Category of two characters in the
+Latin-1 range, PILCROW SIGN and SECTION SIGN, has been changed from
+Other_Symbol to Other_Punctuation.  The same change has been made for
+a character in each of Tibetan, Ethiopic, and Aegean.
+The code points U+3248..U+324F (CIRCLED NUMBER TEN ON BLACK SQUARE
+through CIRCLED NUMBER EIGHTY ON BLACK SQUARE) have had their General
+Category changed from Other_Symbol to Other_Numeric.  The Line Break
+property has changes for Hebrew and Japanese; and as a consequence of
+other changes in 6.1, the Perl regular expression construct C<\X> now
+works differently for some characters in Thai and Lao.
+
+New aliases (synonyms) have been defined for many property values;
+these, along with the previously existing ones, are all cross indexed in
+L<perluniprops>.
+
+The return value of C<charnames::viacode> is affected by other changes.
+One of these is that the preferred name (which is what C<viacode>
+returns) for the character at U+2118 has been changed from SCRIPT CAPITAL P
+to WEIERSTRASS ELLIPTIC FUNCTION.  But most of these changes are the
+fallout of the mistake Unicode 6.0 made in naming a character used in
+Japanese cell phones to be "BELL", which conflicts with the long
+standing industry use of (and Unicode's recommendation to use) that name
+to mean the ASCII control character at U+0007.  As a result, that name
+has been deprecated in Perl since v5.14; and any use of it will raise a
+warning message (unless turned off).  The name "ALERT" is now the
+preferred name for this code point, with "BEL" being an acceptable short
+form.  The name for the new cell phone character, at code point U+1F514,
+remains undefined in this version of Perl (hence we don't quite
+implement all of Unicode 6.1), but starting in v5.18, BELL will mean
+this character, and not U+0007.
+
+Unicode has taken steps to make sure that this sort of mistake does not
+happen again.  The Standard now includes all the generally accepted
+names and abbreviations for control characters, whereas previously it
+didn't.  This means that all the names that Perl had previously
+deprecated (except BELL) are no longer deprecated, such as FILE
+SEPARATOR.  Also, the names for four rarely used characters are subtly
+different (a hyphen instead of a space) than before:
+
+ Code point    Old Name         New Name
+   U+008E    SINGLE-SHIFT 2   SINGLE-SHIFT-2
+   U+008F    SINGLE-SHIFT 3   SINGLE-SHIFT-3
+   U+0091    PRIVATE USE 1    PRIVATE USE-1
+   U+0092    PRIVATE USE 2    PRIVATE USE-2
+
+Perl will accept either name as input, but C<charnames::viacode> now
+returns the new name.
+
+Additional name abbreviations are accepted:
+SP for SPACE;
+TAB for CHARACTER TABULATION;
+NEW LINE, END OF LINE, NL, and EOL for LINE FEED;
+LOCKING-SHIFT ONE for SHIFT OUT;
+LOCKING-SHIFT ZERO for SHIFT IN;
+and ZWNBSP for ZERO WIDTH NO-BREAK SPACE.
+
+More details on this version of Unicode are provided in
+L<http://www.unicode.org/versions/Unicode6.1.0/>.
+
+=head2 Added C<is_utf8_char_buf()>
+
+This function is designed to replace the deprecated L</is_utf8_char()>
+function.  It includes an extra parameter to make sure it doesn't read
+past the end of the input buffer.
 
 =head1 Security
 
@@ -68,6 +144,13 @@ L</Selected Bug Fixes> section.
 
 [ List each security issue as a =head2 entry ]
 
+=head2 Use C<is_utf8_char_buf()> and not C<is_utf8_char()>
+
+The latter function is now deprecated because its API is insufficient to
+guarantee that it doesn't read (up to 12 bytes in the worst case) beyond
+the end of its input string.  See
+L<is_utf8_char_buf()|/Added is_utf8_char_buf()>.
+
 =head1 Incompatible Changes
 
 XXX For a release on a stable branch, this section aspires to be:
@@ -78,6 +161,40 @@ XXX For a release on a stable branch, this section aspires to be:
 
 [ List each incompatible change as a =head2 entry ]
 
+=head2 Special blocks called in void context
+
+Special blocks (C<BEGIN>, C<CHECK>, C<INIT>, C<UNITCHECK>, C<END>) are now
+called in void context.  This avoids wasteful copying of the result of the
+last statement [perl #108794].
+
+=head2 The C<overloading> pragma and regexp objects
+
+With C<no overloading>, regular expression objects returned by C<qr//> are
+now stringified as "Regexp=REGEXP(0xbe600d)" instead of the regular
+expression itself [perl #108780].
+
+=head2 Two XS typemap Entries removed
+
+Two presumably unused XS typemap entries have been removed from the
+core typemap: T_DATAUNIT and T_CALLBACK. If you are, against all odds,
+a user of these, please see the instructions on how to regain them
+in L<perlxstypemap>.
+
+=head2 Unicode 6.1 has incompatibilities with Unicode 6.0
+
+These are detailed in L</Supports (almost) Unicode 6.1> above.
+
+=head2 Changed returns for some properties in C<Unicode::UCD::prop_invmap()>
+
+The return values for C<prop_invmap> have been changed for some
+properties to make the returned lists significantly smaller.  This
+allows those lists to be searched faster.
+
+This function was introduced earlier in the v5.15 series of releases,
+and the API will not be considered stable until v5.16.
+
+See L<Unicode::UCD/prop_invmap()> for details on the new interface.
+
 =head1 Deprecations
 
 XXX Any deprecated features, syntax, modules etc. should be listed here.
@@ -86,17 +203,11 @@ listed as an updated module in the L</Modules and Pragmata> section.
 
 [ List each deprecation as a =head2 entry ]
 
-=head2 Deprecated Modules
-
-=over
+=head2 C<is_utf8_char()>
 
-=item L<Version::Requirements>
-
-Version::Requirements is now DEPRECATED, use CPAN::Meta::Requirements,
-which is a drop-in replacement. It will be deleted from perl.git blead
-in v5.17.0.
-
-=back
+This function is deprecated because it could read beyond the end of the
+input string.  Use the new L<is_utf8_char_buf()|/Added is_utf8_char_buf()>
+instead.
 
 =head1 Performance Enhancements
 
@@ -109,13 +220,7 @@ may well be none in a stable release.
 
 =item *
 
-Version declarations with the C<use> keyword (e.g., C<use 5.012>) are now
-faster, as they enable features without loading F<feature.pm>.
-
-=item *
-
-C<local $_> is faster now, as it no longer iterates through magic that it
-is not going to copy anyway.
+XXX
 
 =back
 
@@ -137,7 +242,8 @@ cribbed.
 
 =item *
 
-XXX
+The C<mmap> PerlIO layer is no longer implemented by perl itself, but has
+been moved out into the new L<PerlIO::mmap> module.
 
 =back
 
@@ -147,150 +253,128 @@ XXX
 
 =item *
 
-L<B::Deparse> has been upgraded from version 1.10 to version 1.11.
-
-It now deparses C<open('random string')> correctly.  It used to omit the
-quotation marks, which did not work if the string were not a valid
-identifier [perl #91416].
+L<arybase> has been upgraded from version 0.03 to version 0.04.
 
-A similar bug also affected hash and array elements such as
-C<< 'random string'->[0] >>, which would deparse as C<$random string[0]>.
-This has been fixed.
+List slices no longer modify items on the stack belonging to outer lists
+[perl #109570].
 
-Those same syntaxes used to drop the package name from variables beginning
-with a punctuation mark, as in C<< "foo::]"->{$key} >>.  This, too, has
-been fixed.
+=item *
 
-B::Deparse no longer hangs when deparsing a program with stash
-circularities, such as C<BEGIN { *Acme::Acme:: = *Acme:: }> [perl #91384].
+L<B> has been upgraded from version 1.33 to version 1.34.
 
-C</$s[1]/> used to be deparsed as C<$s[1]> if @s were a lexical variable
-[perl #81424].  Similarly, C</$#s/> would be deparsed as C<$#s> for both
-lexical and package variables.  These has been fixed.
+C<B::COP> now has a C<stashflags> method, corresponding to a new internal
+field added in 5.15.4 [perl #108860].
 
-The C</applaud> regular expression flags are no longer omitted.
+=item *
 
-Feature hints are now deparsed with C<use feature> rather than C<%^H>
-assignments.
+L<Carp> has been upgraded from version 1.24 to version 1.25.
 
-A regression in 1.10 that caused C<ambient_pragmas> to disabled strict mode
-in obscure cases has been fixed.
+It now puts a dot after the file and line number, just like errors from
+C<die> [perl #106538].
 
-Strict mode is now fully deparsed, including subs and vars [perl #24027].
+=item *
 
-The global variables C<$(>, C<$|> and C<$)> are now deparsed with braces
-(i.e., C<${(}>) in regular expressions [perl #86060].
+L<Compress::Raw::Bzip2> has been upgraded from version 2.045 to version 2.048.
 
 =item *
 
-L<CGI> has been upgraded from version 3.58 to version 3.59.
-
-We no longer read from STDIN when the Content-Length is not set, preventing
-requests with no Content-Length from freezing in some cases. This is consistent
-with the CGI RFC 3875, and is also consistent with CGI::Simple. However, the old
-behavior may have been expected by some command-line uses of CGI.pm.
+L<Compress::Raw::Zlib> has been upgraded from version 2.045 to version 2.048.
 
 =item *
 
-L<CPAN::Meta> has been upgraded from version 2.112621 to version 2.113640.
-
-Version::Requirements has now been merged as CPAN::Meta::Requirements.
+L<Compress::Zlib> has been upgraded from version 2.046 to version 2.048.
 
 =item *
 
-L<CPANPLUS> has been upgraded from version 0.9113 to version 0.9116.
+L<CPAN::Meta> has been upgraded from version 2.113640 to version 2.120351.
+
+Work around a memory leak bug involving version objects in boolean context.
 
 =item *
 
-L<Data::Dumper> has been upgraded from version 2.135_01 to version
-2.135_03.
+L<CPAN::Meta::YAML> has been upgraded from version 0.005 to version 0.007.
 
-It can now dump vstrings [perl #101162].
+=item *
 
-The nameless typeglob (C<*{""}>) is now dumped properly.
+L<DB_File> has been upgraded from version 1.824 to version 1.826.
 
 =item *
 
-L<diagnostics> has been upgraded from version 1.26 to version 1.27.
+L<diagnostics> has been upgraded from version 1.27 to version 1.28.
 
-See the entry for splain in the L</Utility Changes> section, for the
-changes.  The diagnostics module and the splain utility are actually one
-and the same.
+When searching for F<perldiag.pod>, it no longer uses paths that were only
+relevant on Perl 5.004 and earlier.
 
 =item *
 
-L<ExtUtils::Packlist> has been upgraded from version 1.45 to version 1.46.
+L<ExtUtils::ParseXS> has been upgraded from version 3.12 to version 3.15.
 
-It no longer produces "used once" warnings when the C<read> and C<write>
-methods are called while the main program is still compiling (e.g., from
-within a BEGIN block) [perl #107410] [rt.cpan.org #50315].
+The new version comes with important tools for sharing typemaps between
+different CPAN distributions.
 
 =item *
 
-L<Module::Pluggable> has been upgraded from version 3.9 to version 4.0.
+L<File::Copy> has been upgraded from version 2.21 to version 2.23.
+
+It no longer emits warnings when copying files with newlines in their names
+[perl #109104].
 
 =item *
 
-L<perlfaq> has been upgraded from version 5.0150036 to version 5.0150037.
+L<IPC::Cmd> has been upgraded from version 0.72 to version 0.76.
 
 =item *
 
-L<PerlIO::scalar> has been upgraded from version 0.12 to version 0.13.
+L<Math::Complex> has been upgraded from version 1.58 to version 1.59.
 
-(This is the module that implements C<< open $fh, '>', \$scalar >>.)
+This avoids a new core warning.
 
-It no longer assumes during C<seek> that $scalar is a string internally.
-If it didn't crash, it was close to doing so [perl #92706].
+=item *
 
-Printing to an in-memory handle now works if the $scalar holds a reference,
-stringifying the reference before modifying it.  References used to be
-treated as empty strings.
+L<Module::Metadata> has been upgraded from version 1.000007 to version 1.000009.
 
-Printing to an in-memory handle no longer crashes if the $scalar happens to
-hold a number internally, but no string buffer.
+Adds C<provides> method to generate a CPAN META provides data structure
+correctly; use of C<package_versions_from_directory> is discouraged.
 
 =item *
 
-L<POSIX> has been upgraded from version 1.27 to version 1.29.
+L<Parse::CPAN::Meta> has been upgraded from version 1.4401 to version 1.4402.
 
-C<sigsuspend> and C<pause> now run signals handle before returning, as the
-whole point of these two functions is to wait until a signal has
-arrived, and then return I<after> it has been triggered.  Delayed, or
-"safe", signals were preventing that from happening, possibly resulting in
-race conditions [perl #107216].
-C<POSIX::sleep> is now a direct call into the underlying OS C<sleep>
-function, instead of being a Perl wrapper on C<CORE::sleep>. C<POSIX::dup2>
-now returns the correct value on Win32 (I<i.e.> the file descriptor).
-C<POSIX::SigSet> C<sigsuspend> and C<sigpending> and C<POSIX::pause> now
-dispatch safe signals immediately before returning to their caller.
+=item *
+
+L<Pod::Parser> has been upgraded from version 1.37 to version 1.51.
 
 =item *
 
-L<Pod::Perldoc> has been upgraded from version 3.15_01 to version 3.15_15.
+L<Term::ReadLine> has been upgraded from version 1.07 to version 1.08.
+
+Its C<tkRunning> method now supports L<AnyEvent> event loops, and not just
+L<Tk>.  A more general mechanism has been proposed, so this may be reverted
+before Perl 5.16 [perl #108470].
 
 =item *
 
-L<Term::UI> has been upgraded from version 0.26 to version 0.30.
+L<Time::HiRes>  has been upgraded from version 1.9724 to version 1.9725.
+
+C<Time::HiRes::stat()> no longer corrupts the Perl stack.
 
 =item *
 
-L<Tie::File> has been upgraded from version 0.96 to version 0.98.
+L<Unicode::UCD> has been upgraded from version 0.39 to 0.40.
+
+The only change is to fix a formatting error in the Pod.
 
 =item *
 
-L<Unicode::UCD> has been upgraded from version 0.37 to version 0.38.
-This changes the output of C<prop_invmap()> for the Name_Alias property
-to reflect the changes that are planned for Unicode 6.1, so that there
-won't be a format change when upgrading to 6.1.  Briefly, a second
-component of each alias is added that gives the type of alias it is.
-Examples are at L<Unicode::UCD/prop_invmap()>.
+L<Version::Requirements> has been upgraded from version 0.101021 to version 0.101022.
 
 =item *
 
-L<Version::Requirements> has been upgraded from version 0.101020 to version 0.101021.
+L<POSIX> has been upgraded from version 1.28 to version 1.29..
 
-Version::Requirements is now DEPRECATED, use CPAN::Meta::Requirements,
-which is a drop-in replacement.
+It now has a wrapper for the C<strptime(3)> function, it's not
+exported on C<use POSIX;> due to backwards compatibility concerns, it
+has to be explicitly requested with C<use POSIX qw(strptime)>.
 
 =back
 
@@ -313,6 +397,12 @@ file and be sure to link to the appropriate page, e.g. L<perlfunc>.
 
 XXX Changes which create B<new> files in F<pod/> go here.
 
+=head3 L<perlxstypemap>
+
+The new manual describes the XS typemapping mechanism in unprecedented
+detail and combines new documentation with information extracted from
+L<perlxs> and the previously unofficial list of all core typemaps.
+
 =head3 L<XXX>
 
 XXX Description of the purpose of the new file here
@@ -323,37 +413,13 @@ 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<perlfunc>
-
-=over 4
-
-=item *
-
-C<dbmopen> treats a 0 mode as a special case, that prevents a nonexistent
-file from being created.  This has been the case since Perl 5.000, but was
-never documented anywhere.  Now the perlfunc entry mentions it
-[perl #90064].
-
-=item *
-
-The entry for C<split> has been rewritten.  It is now far clearer than
-before.
-
-=back
-
-=head3 L<perlop> and L<perlsyn>
+=head3 L<XXX>
 
 =over 4
 
 =item *
 
-Documentation of the smartmatch operator has been reworked and moved from
-perlsyn to perlop where it belongs.
-
-=item *
-
-Documentation of the ellipsis statement (C<...>) has been reworked and
-moved from perlop to perlsyn.
+XXX Description of the change here
 
 =back
 
@@ -376,15 +442,7 @@ include any changes in L<perldiag> that reconcile it to the C<C> code.
 
 =head2 New Diagnostics
 
-=over 4
-
-=item *
-
-L<Useless use of \E|perldiag/"Useless use of \E">
-
-C<\E> does nothing unless preceded by C<\Q>, C<\L> or C<\U>.
-
-=back
+XXX Newly added diagnostic messages go here
 
 =head3 New Errors
 
@@ -392,17 +450,7 @@ C<\E> does nothing unless preceded by C<\Q>, C<\L> or C<\U>.
 
 =item *
 
-L<Cannot set tied @DB::args|perldiag/"Cannot set tied @DB::args">
-
-This error occurs when C<caller> tries to set C<@DB::args> but finds it
-tied.  Before this error was added, it used to crash instead.
-
-=item *
-
-L<Cannot tie unreifiable array|perldiag/"Cannot tie unreifiable array">
-
-This error is part of a safety check that the C<tie> operator does before
-tying a special array like C<@_>.  You should never see this message.
+XXX L<message|perldiag/"message">
 
 =back
 
@@ -412,10 +460,7 @@ tying a special array like C<@_>.  You should never see this message.
 
 =item *
 
-L<defined(@array) is deprecated|perldiag/"defined(@array) is deprecated">
-
-The long-deprecated C<defined(@array)> now also warns for package variables.
-Previously it only issued a warning for lexical variables.
+XXX L<message|perldiag/"message">
 
 =back
 
@@ -431,23 +476,6 @@ XXX Describe change here
 
 =back
 
-=head2 Removals
-
-=over 4
-
-=item *
-
-"sort is now a reserved word"
-
-This error used to occur when C<sort> was called without arguments, followed by C<;> or C<)>.  (E.g., C<sort;> would die, but C<{sort}> was
-OK.)  This error message was added in Perl 3 to catch code like
-C<close(sort)> which would no longer work.  More than two decades later,
-this message is no longer appropriate.  Now C<sort> without arguments is
-always allowed, and returns an empty list, as it did in those cases where
-it was already allowed [perl #90030].
-
-=back
-
 =head1 Utility Changes
 
 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
@@ -457,35 +485,13 @@ here. Most of these are built within the directories F<utils> and F<x2p>.
 entries for each change
 Use L<XXX> with program names to get proper documentation linking. ]
 
-=head3 L<splain>
+=head3 L<XXX>
 
 =over 4
 
 =item *
 
-splain no longer emits backtraces with the first line number repeated.
-This:
-
-    Uncaught exception from user code:
-            Cannot fwiddle the fwuddle at -e line 1.
-     at -e line 1
-            main::baz() called at -e line 1
-            main::bar() called at -e line 1
-            main::foo() called at -e line 1
-
-has become this:
-
-    Uncaught exception from user code:
-            Cannot fwiddle the fwuddle at -e line 1.
-            main::baz() called at -e line 1
-            main::bar() called at -e line 1
-            main::foo() called at -e line 1
-
-=item *
-
-Some error message consist of multiple lines that are listed as separate
-entries in L<perldiag>.  splain has been taught to find the separate
-entries in these cases, instead of simply failing to find the message.
+XXX
 
 =back
 
@@ -502,11 +508,7 @@ L</Platform Support> section, instead.
 
 =item *
 
-The Pod files for the perl FAQ, L<perlxs>, L<perlxstut> and L<perldoc>
-are once again correctly installed in the same directory as the other core
-Pods.
-
-=for 5.16.0 This isn't a regression from 5.14.x, so don't mention this.
+XXX
 
 =back
 
@@ -524,11 +526,12 @@ that they represent may be covered elsewhere.
 
 =item *
 
-F<t/porting/utils.t> now tests that various utility scripts compile cleanly.
-During development, this avoids the embarrassment of inadvertently pushing a
-commit which breaks code which isn't otherwise tested by the regression test
-suite. For example, F<installperl> and F<installman>, needed by
-C<make install>, are tested here.
+XXX
+
+=item *
+
+The test suite for typemaps has been extended to cover a larger fraction of
+the core typemaps.
 
 =back
 
@@ -593,26 +596,7 @@ be noted as well.
 
 =item *
 
-There are now feature bundle hints in C<PL_hints> (C<$^H>) that version
-declarations use, to avoid having to load F<feature.pm>.  One setting of
-the hint bits indicates a "custom" feature bundle, which means that the
-entries in C<%^H> still apply.  F<feature.pm> uses that.
-
-The C<HINT_FEATURE_MASK> macro is defined in F<perl.h> along with other
-hints.  Other macros for setting and testing features and bundles are in
-the new F<feature.h>.  C<FEATURE_IS_ENABLED> (which has moved to
-F<feature.h>) is no longer used throughout the codebase, but more specific
-macros, e.g., C<FEATURE_SAY_IS_ENABLED>, that are defined in F<feature.h>.
-
-=item *
-
-F<lib/feature.pm> is now a generated file, created by the new
-F<regen/feature.pl> script, which also generates F<feature.h>.
-
-=item *
-
-Tied arrays are now always C<AvREAL>.  If C<@_> or C<DB::args> is tied, it
-is reified first, to make sure this is always the case.
+XXX
 
 =back
 
@@ -626,226 +610,87 @@ L</Modules and Pragmata>.
 
 =over 4
 
-=item * "b . COND" in the debugger has been fixed
-
-Breaking on the current line with C<b . COND> was broken by previous work and
-has now been fixed.
-
-=item * Tying C<%^H>
-
-Tying C<%^H> no longer causes perl to crash or ignore
-the contents of C<%^H> when entering a compilation
-scope [perl #106282].
-
-=item * C<~> on vstrings
-
-The bitwise complement operator (and possibly other operators, too) when
-passed a vstring would leave vstring magic attached to the return value,
-even though the string had changed.  This meant that
-C<< version->new(~v1.2.3) >> would create a version looking like "v1.2.3"
-even though the string passed to C<< version->new >> was actually
-"\376\375\374".  This also caused L<B::Deparse> to deparse C<~v1.2.3>
-incorrectly, without the C<~> [perl #29070].
-
-=item * Vstrings blowing away magic
-
-Assigning a vstring to a magic (e.g., tied, C<$!>) variable and then
-assigning something else used to blow away all the magic.  This meant that
-tied variables would come undone, C<$!> would stop getting updated on
-failed system calls, C<$|> would stop setting autoflush, and other
-mischief would take place.  This has been fixed.
-
-=item * C<newHVhv> and tied hashes
-
-The C<newHVhv> XS function now works on tied hashes, instead of crashing or
-returning an empty hash.
-
-=item * Hashes will null elements
-
-It is possible from XS code to create hashes with elements that have no
-values.  Perl itself sometimes creates such hashes, but they are rarely
-visible to Perl code.  The hash element and slice operators used to crash
-when handling these in lvalue context.  These have been fixed.  They now
-produce a "Modification of non-creatable hash value attempted" error
-message.
-
-=item * No warning for C<open(foo::bar)>
-
-When one writes C<open foo || die>, which used to work in Perl 4, a
-"Precedence problem" warning is produced.  This warning used erroneously to
-apply to fully-qualified bareword handle names as well.  This has been
-corrected.
-
-=item * C<select> and package aliasing
-
-After package aliasing (C<*foo:: = *bar::>), C<select> with 0 or 1 argument
-would sometimes return a name that could not be used to refer to the
-filehandle, or sometimes it would return C<undef> even when a filehandle
-was selected.  Now it returns a typeglob reference in such cases.
-
-=item * C<PerlIO::get_layers> and tied variables
-
-C<PerlIO::get_layers> no longer ignores FETCH on tied variables as it used
-to most of the time [perl #97956].
-
-=item * C<PerlIO::get_layers> and numbers
-
-C<PerlIO::get_layers> no longer ignores some arguments that it thinks are
-numeric, while treating others as filehandle names.  It is now consistent
-for flat scalars (i.e., not references).
-
-=item * Lvalue subs and strict mode
-
-Lvalue sub calls that are not determined to be such at compile time
-(C<&$name> or &{"name"}) are no longer exempt from strict refs if they
-occur in the last statement of an lvalue subroutine [perl #102486].
-
-=item * Non-lvalue sub calls in potentially lvalue context
-
-Sub calls whose subs are not visible at compile time, if
-they occurred in the last statement of an lvalue subroutine,
-would reject non-lvalue subroutines and die with "Can't modify non-lvalue
-subroutine call" [perl #102486].
-
-Non-lvalue sub calls whose subs I<are> visible at compile time exhibited
-the opposite bug.  If the call occurred in the last statement of an lvalue
-subroutine, there would be no error when the lvalue sub was called in
-lvalue context.  Perl would blindly assign to the temporary value returned
-by the non-lvalue subroutine.
-
-=item * AUTOLOADing lvalue subs
-
-C<AUTOLOAD> routines used to take precedence over the actual sub being
-called (i.e., when autoloading wasn't needed), for sub calls in lvalue or
-potential lvalue context, if the subroutine was not visible at compile
-time.
-
-=item * C<caller> and tied C<@DB::args>
-
-C<caller> sets C<@DB::args> to the subroutine arguments when called from
-the DB package.  It used to crash when doing so if C<@DB::args> happened to
-be tied.  Now it croaks instead.
-
-=item * Tying C<@_>
-
-Under debugging builds, this code:
-
-  sub TIEARRAY{bless[]}
-  sub {
-    tie @_, "";
-    \@_;
-  }->(1);
-
-use to produce an "av_reify called on tied array" warning.  It doesn't any
-more.
-
-=item * Unrecognised switches on C<#!> line
-
-If a switch, such as B<-x>, that cannot occur on the C<#!> line is used
-there, perl dies with "Can’t emulate...".
-
-It used to produce the same message for switches that perl did not
-recognise at all, whether on the command line or the C<#!> line.
-
-Now it produces the "Unrecognized switch" error message [perl #104288].
-
-=item * C<system> and SIGCHLD
+=item *
 
-C<system> now temporarily blocks the SIGCHLD signal handler, to prevent the
-signal handler from stealing the exit status [perl #105700].
+C<~~> now correctly handles the precedence of Any~~Object, and is not tricked
+by an overloaded object on the left-hand side.
 
-=item * Deleting methods via C<delete>
+=item *
 
-Deletion of methods via C<delete $Class::{method}> syntax used to update
-method caches if called in void context, but not scalar or list context.
-Now it always updates those caches.
+C<stat _> no longer warns about unopened filehandles [perl #71002].
 
-=item * Hash element deletion and destructors
+=item *
 
-When hash elements are deleted in void context, the internal hash entry is
-now freed before the value is freed, to prevent destructors call by that
-latter freeing from seeing the hash in an inconsistent state.  It was
-possible to cause double-frees if the destructor freed the hash itself
-[perl #100340].
+C<stat> on an unopened filehandle now warns consistently, instead of
+skipping the warning at times.
 
-=item * C<(s)printf>'s %n formatting code
+=item *
 
-The %n formatting code, which causes the number of characters to be
-assigned to the next argument to C<printf> or C<sprintf> now actually
-assigns the number of characters, instead of the number of bytes.
+A change in an earlier 5.15 release caused warning hints to propagate into
+C<do $file>.  This has been fixed [rt.cpan.org #72767].
 
-It also works now with special lvalue functions like C<substr> and with
-nonexistent hash and array elements [perl #103492].
+=item *
 
-=item * Typeglobs and threads
+Starting with 5.12.0, Perl used to get its internal bookkeeping muddled up
+after assigning C<${ qr// }> to a hash element and locking it with
+L<Hash::Util>.  This could result in double frees, crashes or erratic
+behaviour.
 
-Typeglobs returned from threads are no longer cloned if the parent thread
-already has a glob with the same name.  This means that returned
-subroutines will now assign to the right package variables [perl #107366].
+=item *
 
-=item * C<local $_>
+In 5.15.7, some typeglobs in the CORE namespace were made read-only by
+mistake.  This has been fixed [rt.cpan.org #74289].
 
-In Perl 5.14, C<local $_> was changed to create a new variable not tied to
-anything, even if $_ was tied before that.  But, due to an oversight, it
-would still call FETCH once on a tied $_ before replacing it with the new
-variable.  This has been fixed [perl #105912].
+=item *
 
-=item * Returning tied variables
+C<-t> now works when stacked with other filetest operators [perl #77388].
 
-When returning a value from a non-lvalue subroutine, Perl copies the value.
-Sometimes it cheats for the sake of speed, and does not copy the value if
-it makes no observable difference.  This optimisation was erroneously
-allowing the copy to be skipped on tied variables, causing a difference in
-behaviour depending on the tied variable's reference count.  This has been
-fixed [perl #95548].
+=item *
 
-=item * C<{@a = sort}> no longer crashes
+Stacked filetest operators now only call FETCH once on a tied argument.
 
-This particular piece of code (C<sort> with no arguments assigned to an
-array, inside a block with no C<;>) started crashing in an earlier 5.15.x
-release.  It has been fixed.
+=item *
 
-=item * C<utf8::decode> and read-only scalars
+C</.*/g> would sometimes refuse to match at the end of a string that ends
+with "\n".  This has been fixed [perl #109206].
 
-C<utf8::decode> now refuses to modify read-only scalars [perl #91850].
+=item *
 
-=item * C<dbmopen> with undefined mode
+C<m/[[:ascii:]]/i> and C</\p{ASCII}/i> now match identically (when not
+under a differing locale).  This fixes a regression introduced in 5.14
+in which the first expression could match characters outside of ASCII,
+such as the KELVIN SIGN.
 
-C<dbmopen> now only warns once, rather than three times, if the mode
-argument is C<undef> [perl #90064].
+=item *
 
-=item * Freeing an aggregate during list assignment
+Method calls whose arguments were all surrounded with C<my()> or C<our()>
+(as in C<<$object->method(my($a,$b)) >>) used to force lvalue context on
+the subroutine.  This would prevent lvalue methods from returning certain
+values.  Due to lvalue fixes earlier in the 5.15.x series, it would also
+prevent non-lvalue methods from being called [perl #109264].
 
-If list assignment to a hash or array triggered destructors that freed the
-hash or array itself, a crash would ensue.  This is no longer the case
-[perl #107440].
+=for comment
+This bug I<did> affect earlier stable releases.  It is just the last
+sentence that does not apply to 5.14.
 
-=item * Confused internal bookkeeping with @ISA arrays
+=item *
 
-Creating a weak reference to an @ISA array or accessing the array index
-(C<$#ISA>) could result in confused internal bookkeeping for elements
-subsequently added to the @ISA array.  For instance, creating a weak
-reference to the element itself could push that weak reference on to @ISA;
-and elements added after use of C<$#ISA> would be ignored by method lookup
-[perl #85670].
+The C<SvPVutf8> C function no longer tries to modify its argument,
+resulting in errors [perl #108994].
 
-=item * DELETE on scalar ties
+=item *
 
-Tying an element of %ENV or C<%^H> and then deleting that element would
-result in a call to the tie object's DELETE method, even though tying the
-element itself is supposed to be equivalent to tying a scalar (the element
-is, of course, a scalar) [perl #67490].
+C<SvPVutf8> now works properly with magical variables.
 
-=item * Freeing $_ inside C<grep> or C<map>
+=item *
 
-Freeing $_ inside a C<grep> or C<map> block or a code block embedded in a
-regular expression used to result in double frees [perl #92254, #92256].
+C<SvPVbyte> now works properly non-PVs.
 
-=item * Warnings with C<+=>
+=item *
 
-The C<+=> operator does not usually warn when the left-hand side is
-C<undef>, but it was doing so for tied variables.  This has been fixed
-[perl #44895].
+C</[[:ascii:]]/> and C</[[:blank:]]/> now use locale rules under
+C<use locale> when the platform supports that.  Previously, they used
+the platform's native character set.
 
 =back
 
@@ -877,7 +722,7 @@ here.
 
 XXX Generate this with:
 
-  perl Porting/acknowledgements.pl v5.15.6..HEAD
+  perl Porting/acknowledgements.pl v5.15.7..HEAD
 
 =head1 Reporting Bugs