This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Finalize perldelta
[perl5.git] / pod / perldelta.pod
index 1faee0d..567f5ae 100644 (file)
 
 =head1 NAME
 
-perldelta - what is new for perl v5.21.5
+perldelta - what is new for perl v5.21.11
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.21.4 release and the 5.21.5
+This document describes differences between the 5.21.10 release and the 5.21.11
 release.
 
-If you are upgrading from an earlier release such as 5.21.3, first read
-L<perl5214delta>, which describes differences between 5.21.3 and 5.21.4.
-
-=head1 Core Enhancements
-
-=head2 New double-diamond operator
-
-C<<< <<>> >>> is like C<< <> >> but uses three-argument C<open> to open
-each file in @ARGV.  So each element of @ARGV is an actual file name, and
-"|foo" won't be treated as a pipe open.
-
-=head2 Aliasing via reference
-
-Variables and subroutines can now be aliased by assigning to a reference:
-
-    \$c = \$d;
-    \&x = \&y;
-
-Or by using a backslash before a C<foreach> iterator variable, which is
-perhaps the most useful idiom this feature provides:
-
-    foreach \%hash (@array_of_hash_refs) { ... }
-
-This feature is experimental and must be enabled via C<use feature
-'refaliasing'>.  It will warn unless the C<experimental::refaliasing>
-warnings category is disabled.
-
-See L<perlref/Assigning to References>.
-
-=head2 Perl now supports POSIX 2008 locale currency additions.
-
-On platforms that are able to handle POSIX.1-2008, the
-hash returned by
-L<C<POSIX::localeconv()>|perllocale/The localeconv function>
-includes the international currency fields added by that version of the
-POSIX standard.  These are
-C<int_n_cs_precedes>,
-C<int_n_sep_by_space>,
-C<int_n_sign_posn>,
-C<int_p_cs_precedes>,
-C<int_p_sep_by_space>,
-and
-C<int_p_sign_posn>.
-
-=head2 Packing infinity or not-a-number into a character is now fatal.
-
-Before, when trying to pack infinity or not-a-number into a
-(signed) character, Perl would warn, and assumed you tried to
-pack C<< 0xFF >>; if you gave it as an argument to C<< chr >>,
-C<< U+FFFD >> was returned. 
-
-But now, all such actions (C<< pack >>, C<< chr >>, and C<< print '%c' >>)
-result in a fatal error.
-
-=head2 Inf and NaN
-
-Many small improvements, bug fixes and added test cases for dealing 
-with math related to infinity and not-a-number.
-
-=head1 Security
-
-=head2 Perl is now compiled with -fstack-protector-strong if available
-
-Perl has been compiled with the anti-stack-smashing option
-C<-fstack-protector> since 5.10.1.  Now Perl uses the newer variant
-called C<-fstack-protector-strong>, if available.  (This was added
-already in 5.21.4.)
+If you are upgrading from an earlier release such as 5.21.9, first read
+L<perl52110delta>, which describes differences between 5.21.9 and 5.21.10.
 
 =head1 Deprecations
 
-=head2 Use of multiple /x regexp modifiers
-
-It is now deprecated to say something like any of the following:
-
-    qr/foo/xx;
-    /(?xax:foo)/;
-    use re qw(/amxx);
-
-That is, now C<x> should only occur once in any string of contiguous
-regular expression pattern modifiers.  We do not believe there are any
-occurrences of this in all of CPAN.  This is in preparation for a future
-Perl release having C</xx> mean to allow white-space for readability in
-bracketed character classes (those enclosed in square brackets:
-C<[...]>).
-
-=head1 Performance Enhancements
-
-=over 4
-
-=item *
-
-C<length> is up to 20% faster for non-magical/non-tied scalars containing a
-string if it is a non-utf8 string or if C<use bytes;> is in scope.
-
-=item *
-
-Non-magical/non-tied scalars that contain only a floating point value and are
-on most Perl builds with 64 bit integers now use 8-32 less bytes of memory
-depending on OS.
+=head2 Making all warnings fatal is discouraged
 
-=item *
-
-In C<@array = split>, the assignment can be optimized away with C<split>
-writing directly to the array.  This optimisation was happening only for
-package arrays other than @_ and only
-sometimes.  Now this optimisation happens
-almost all the time.
-
-=item *
-
-C<join> is now subject to constant folding.  Moreover, C<join> with a
-scalar or constant for the separator and a single-item list to join is
-simplified to a stringification.  The separator doesn't even get evaluated.
-
-=item *
-
-C<qq(@array)> is implemented using two ops: a stringify op and a join op.
-If the qq contains nothing but a single array, the stringification is
-optimized away.
-
-=item *
-
-C<our $var> and C<our($s,@a,%h)> in void context are no longer evaluated at
-run time.  Even a whole sequence of C<our $foo;> statements will simply be
-skipped over.  The same applies to C<state> variables.
-
-=back
+The documentation for L<fatal warnings|warnings/Fatal Warnings> notes that
+C<< use warnings FATAL => 'all' >> is discouraged and provides stronger
+language about the risks of fatal warnings in general.
 
 =head1 Modules and Pragmata
 
@@ -145,240 +28,163 @@ skipped over.  The same applies to C<state> variables.
 
 =item *
 
-L<attributes> has been upgraded from version 0.23 to 0.24.
-
-Avoid reading beyond the end of a buffer. [perl #122629]
+L<attributes> has been upgraded from version 0.26 to 0.27.
 
 =item *
 
-L<B> has been upgraded from version 1.51 to 1.52.
+L<B> has been upgraded from version 1.57 to 1.58.
 
 =item *
 
-L<B::Concise> has been upgraded from version 0.993 to 0.994.
-
-Null ops that are part of the execution chain are now given sequence
-numbers.
-
-Private flags for nulled ops are now dumped with mnemonics as they would be
-for the non-nulled counterparts.
+L<B::Deparse> has been upgraded from version 1.34 to 1.35.
 
-L<B::Deparse> has been upgraded from version 1.28 to 1.29.
-
-Parenthesised arrays in lists passed to C<\> are now correctly deparsed
-with parentheses (e.g., C<\(@a, (@b), @c)> now retains the parentheses
-around @b), this preserving the flattening behaviour of referenced
-parenthesised arrays.  Formerly, it only worked for one array: C<\(@a)>.
-
-C<local our> is now deparsed correctly, with the C<our> included.
-
-C<for($foo; !$bar; $baz) {...}> was deparsed without the C<!> (or C<not>).
-This has been fixed.
-
-Core keywords that conflict with lexical subroutines are now deparsed with
-the C<CORE::> prefix.
-
-C<foreach state $x (...) {...}> now deparses correctly with C<state> and
-not C<my>.
-
-C<our @array = split(...)> now deparses correctly with C<our> in those
-cases where the assignment is optimized away.
+C<< <<>> >> is now correctly deparsed.
 
 =item *
 
-L<B::Debug> has been upgraded from version 1.21 to 1.22.
+L<Config::Perl::V> has been upgraded from version 0.23 to 0.24.
 
 =item *
 
-L<B::Deparse> has been upgraded from version 1.28 to 1.29.
+L<CPAN> has been upgraded from version 2.10 to 2.11.
 
 =item *
 
-L<Compress::Raw::Bzip2> has been upgraded from version 2.064 to 2.066.
+L<Cwd> has been upgraded from version 3.55 to 3.56.
 
 =item *
 
-L<Compress::Raw::Zlib> has been upgraded from version 2.065 to 2.066.
+L<ExtUtils::Miniperl> has been upgraded from version 1.04 to 1.05.
 
 =item *
 
-L<CPAN::Meta> has been upgraded from version 2.142060 to 2.142690.
+L<ExtUtils::ParseXS> has been upgraded from version 3.27 to 3.28.
 
 =item *
 
-L<DynaLoader> has been upgraded from version 1.26 to 1.27.
-
-Remove dl_nonlazy global if unused in Dynaloader. [perl #122926]
+L<ExtUtils::Typemaps> has been upgraded from version 3.25 to 3.28.
 
 =item *
 
-L<Errno> has been upgraded from version 1.20_04 to 1.21.
+L<File::Spec> has been upgraded from version 3.55 to 3.56.
 
 =item *
 
-L<experimental> has been upgraded from version 0.010 to 0.012.
-
-=item *
+L<if> has been upgraded from version 0.0603 to 0.0604.
 
-L<ExtUtils::CBuilder> has been upgraded from version 0.280219 to 0.280220.
+The documentation now notes that this module also works with C<no>.
 
 =item *
 
-L<ExtUtils::Miniperl> has been upgraded from version 1.02 to 1.03.
+L<IO::Socket::IP> has been upgraded from version 0.36 to 0.37.
 
 =item *
 
-L<Fcntl> has been upgraded from version 1.11 to 1.13.
-
-Add support for the Linux pipe buffer size fcntl() commands.
-
-=item *
+L<Module::CoreList> has been upgraded from version 5.20150320 to 5.20150420.
 
-L<feature> has been upgraded from version 1.37 to 1.38.
+Updated to cover the latest releases of Perl.  Also fixes a fencepost error in
+is_core() and copes with versions that do not match x.yyyzzz.
 
 =item *
 
-L<File::Find> has been upgraded from version 1.28 to 1.29.
+L<perl5db.pl> has been upgraded from 1.48 to 1.49.
 
-Slightly faster module loading time.
+The debugger would cause an assertion failure.
+L<[perl #124127]|https://rt.perl.org/Ticket/Display.html?id=124127>
 
 =item *
 
-L<File::Spec> has been upgraded from version 3.50 to 3.51.
+L<PerlIO::mmap> has been upgraded from version 0.013 to 0.014.
 
 =item *
 
-L<HTTP::Tiny> has been upgraded from version 0.049 to 0.050.
+L<utf8> has been upgraded from version 1.15 to 1.16.
 
-=item *
-
-The IO-Compress set of modules has been upgraded from version 2.064 to 2.066.
+Minor documentation update only.
 
 =item *
 
-L<JSON::PP> has been upgraded from version 2.27203 to 2.27300.
-
-=item *
+L<warnings> has been upgraded from version 1.31 to 1.32.
 
-The libnet collection of modules has been upgraded from version 1.27 to 3.02.
-
-Support for IPv6 and SSL to Net::FTP, Net::NNTP, Net::POP3 and Net::SMTP.
-
-Improvements in Net::SMTP authentication.
-
-=item *
-
-L<Module::CoreList> has been upgraded from version 5.20140920 to 5.20141020.
-
-Updated to cover the latest releases of Perl.
-
-=item *
-
-L<Opcode> has been upgraded from version 1.28 to 1.29.
-
-=item *
+=back
 
-The PathTools module collection has been upgraded from version 3.50 to 3.51.
+=head1 Documentation
 
-Slightly faster module loading time.
+=head2 Changes to Existing Documentation
 
-=item *
+=head3 L<perlebcdic>
 
-L<perlfaq> has been upgraded from version 5.0150045 to version 5.0150046.
-[perl #123008]
+=over 4
 
 =item *
 
-L<POSIX> has been upgraded from version 1.43 to 1.45.
+This document has been significantly updated in the light of recent
+improvements to EBCDIC support.
 
-POSIX::tmpnam() now produces a deprecation warning.  [perl #122005]
-
-=item *
-
-L<re> has been upgraded from version 0.26 to 0.27.
+=back
 
-=item *
+=head3 L<perlfunc>
 
-L<Socket> has been upgraded from version 2.015 to 2.016.
+=over 4
 
 =item *
 
-L<Test::Simple> has been upgraded from version 1.001006 to 1.001008.
-
-=item *
+Mention that C<study()> is currently a no-op.
 
-L<threads::shared> has been upgraded from version 1.46 to 1.47.
+=back
 
-=item *
+=head3 L<perlguts>
 
-L<warnings> has been upgraded from version 1.26 to 1.28.
+=over 4
 
 =item *
 
-L<XSLoader> has been upgraded from version 0.17 to 0.18.
-
-Allow XSLoader to load modules from a different namespace.
-[perl #122455]
+The OOK example has been updated to account for COW changes and a change in the
+storage of the offset.
 
 =back
 
-=head1 Documentation
-
-=head2 Changes to Existing Documentation
-
-=head3 L<perlrecharclass>
+=head3 L<perlhacktips>
 
 =over 4
 
 =item *
 
-Clarifications have been added to L<perlrecharclass/Character Ranges>
-to the effect that Perl guarantees that C<[A-Z]>, C<[a-z]>, C<[0-9]> and
-any subranges thereof in regular expression bracketed character classes
-are guaranteed to match exactly what a naive English speaker would
-expect them to match, even on platforms (such as EBCDIC) where special
-handling is required to accomplish this.
+Documentation has been added illustrating the perils of assuming the contents
+of static memory pointed to by the return values of Perl wrappers for C library
+functions doesn't change.
 
 =back
 
-=head1 Diagnostics
-
-The following additions or changes have been made to diagnostic output,
-including warnings and fatal error messages.  For the complete list of
-diagnostic messages, see L<perldiag>.
-
-=head2 New Diagnostics
-
-=head3 New Errors
+=head3 L<perlport>
 
 =over 4
 
 =item *
 
-L<Cannot chr %f|perldiag/"Cannot chr %f">
-
-=item *
+Out-of-date VMS-specific information has been fixed/simplified.
 
-L<Cannot compress %f in pack|perldiag/"Cannot compress %f in pack">
+=back
 
-=item *
+=head3 L<perluniintro>
 
-L<Cannot pack %f with '%c'|perldiag/"Cannot pack %f with '%c'">
+=over 4
 
 =item *
 
-L<Cannot print %f with '%c'|perldiag/"Cannot printf %f with '%c'">
+Advice for how to make sure your strings and regular expression patterns are
+interpreted as Unicode has been revised to account for the new Perl 5.22 EBCDIC
+handling.
 
 =back
 
-=head2 Changes to Existing Diagnostics
+=head3 L<perlvms>
 
 =over 4
 
 =item *
 
-'"my" variable &foo::bar can't be in a package' has been reworded to say
-'subroutine' instead of 'variable'.
+Out-of-date and/or incorrect material has been removed.
 
 =back
 
@@ -388,33 +194,27 @@ L<Cannot print %f with '%c'|perldiag/"Cannot printf %f with '%c'">
 
 =item *
 
-Some regular expression tests are written in such a way that they will
-run very slowly if certain optimizations break. These tests have been
-moved into new files, F<< t/re/speed.t >> and F<< t/re/speed_thr.t >>,
-and are run with a C<< watchdog() >>.
+F<t/porting/re_context.t> has been added to test that L<utf8> and its
+dependencies only use the subset of the C<$1..$n> capture vars that
+Perl_save_re_context() is hard-coded to localize, because that function has no
+efficient way of determining at runtime what vars to localize.
 
 =back
 
 =head1 Platform Support
 
-=head2 Regained Platforms
-
-IRIX and Tru64 platforms are working again.
-(Some C<make test> failures remain.)
-
 =head2 Platform-Specific Notes
 
 =over 4
 
-=item EBCDIC
+=item Win32
 
-Special handling is required on EBCDIC platforms to get C<qr/[i-j]/> to
-match only C<"i"> and C<"j">, since there are 7 characters between the
-code points for C<"i"> and C<"j">.  This special handling had only been
-invoked when both ends of the range are literals.  Now it is also
-invoked if any of the C<\N{...}> forms for specifying a character by
-name or Unicode code point is used instead of a literal.  See
-L<perlrecharclass/Character Ranges>.
+F<miniperl.exe> is now built with C<-fno-strict-aliasing>, allowing 64-bit
+builds to complete on GCC 4.8.
+L<[perl #123976]|https://rt.perl.org/Ticket/Display.html?id=123976>
+
+C<test-prep> again depends on C<test-prep-gcc> for GCC builds.
+L<[perl #124221]|https://rt.perl.org/Ticket/Display.html?id=124221>
 
 =back
 
@@ -424,62 +224,54 @@ L<perlrecharclass/Character Ranges>.
 
 =item *
 
-SVs of type SVt_NV are now bodyless when a build configure and platform allow
-it, specifically C<sizeof(NV) <= sizeof(IV)>. The bodyless trick is the same one
-as for IVs since 5.9.2, but for NVs, unlike IVs, is not guaranteed on all
-platforms and build configurations.
-
-=item *
-
-The C<$DB::single>, C<$DB::signal> and C<$DB::trace> now have set and
-get magic that stores their values as IVs and those IVs are used when
-testing their values in C<pp_dbstate>.  This prevents perl from
-recursing infinity if an overloaded object is assigned to any of those
-variables. [perl #122445]
-
-=item *
+Perl 5.21.2 introduced a new build option, C<-DPERL_OP_PARENT>, which causes
+the last C<op_sibling> pointer to refer back to the parent rather than being
+C<NULL>, and where instead a new flag indicates the end of the chain.  In this
+release, the new implementation has been revised; in particular:
 
-C<Perl_tmps_grow> which is marked as public API but undocumented has been
-removed from public API. If you use C<EXTEND_MORTAL> macro in your XS code to
-preextend the mortal stack, you are unaffected by this change.
+=over 4
 
 =item *
 
-C<cv_name>, which was introduced in 5.21.4, has been changed incompatibly.
-It now has a flags field that allows the caller to specify whether the name
-should be fully qualified.  See L<perlapi/cv_name>.
+On C<PERL_OP_PARENT> builds, the C<op_sibling> field has been renamed
+C<op_sibparent> to reflect its new dual purpose.  Since the intention is that
+this field should primarily be accessed via macros, this change should be
+transparent for code written to work under C<PERL_OP_PARENT>.
 
 =item *
 
-Internally Perl no longer uses the C<SVs_PADMY> flag.  C<SvPADMY()> now
-returns a true value for anything not marked PADTMP.  C<SVs_PADMY> is now
-defined as 0.
+The newly-introduced C<op_lastsib> flag bit has been renamed C<op_moresib> and
+its logic inverted; i.e. it is initialised to zero in a new op, and is changed
+to 1 when an op gains a sibling.
 
 =item *
 
-The macros SETsv and SETsvUN have been removed. They were no longer used
-in the core since commit 6f1401dc2a, and have not been found present on
-CPAN.
+The function C<Perl_op_parent> is now only available on C<PERL_OP_PARENT>
+builds.  Using it on a plain build will be a compile-timer error.
 
 =item *
 
-The C<< SvFAKE >> bit (unused on HVs) got informally reserved by
-David Mitchell for future work on vtables.
+Three new macros, C<OpMORESIB_set>, C<OpLASTSIB_set>, C<OpMAYBESIB_set> have
+been added, which are intended to be a low-level portable way to set
+C<op_sibling> / C<op_sibparent> while also updating C<op_moresib>.  The first
+sets the sibling pointer to a new sibling, the second makes the op the last
+sibling, and the third conditionally does the first or second action.  The
+C<op_sibling_splice()> function is retained as a higher-level interface that
+can also maintain consistency in the parent at the same time (e.g. by updating
+C<op_first> and C<op_last> where appropriate).
 
 =item *
 
-The C<sv_catpvn_flags> function accepts C<SV_CATBYTES> and C<SV_CATUTF8>
-flags, which specify whether the appended string is bytes or utf8,
-respectively.
+The macro C<OpSIBLING_set>, added in Perl 5.21.2, has been removed.  It didn't
+manipulate C<op_moresib> and has been superseded by C<OpMORESIB_set> et al.
 
 =item *
 
-A new opcode class, C<< METHOP >> has been introduced, which holds
-class/method related info needed at runtime to improve performance
-of class/object method calls.
+The C<op_sibling_splice> function now accepts a null C<parent> argument where
+the splicing doesn't affect the first or last ops in the sibling chain, and
+thus where the parent doesn't need to be updated accordingly.
 
-C<< OP_METHOD >> and C<< OP_METHOD_NAMED >> are moved from being
-C<< UNOP/SVOP >> to being C<< METHOD >>.
+=back
 
 =back
 
@@ -489,131 +281,116 @@ C<< UNOP/SVOP >> to being C<< METHOD >>.
 
 =item *
 
-Locking and unlocking values via L<Hash::Util> or C<Internals::SvREADONLY>
-no longer has any effect on values that are read-only to begin.
-Previously, unlocking such values could result in crashes, hangs or
-other erratic behaviour.
-
-=item *
-
-The internal C<looks_like_number> function (which L<Scalar::Util> provides
-access to) began erroneously to return true for "-e1" in 5.21.4, affecting
-also C<-'-e1'>.  This has been fixed.
-
-=item *
-
-The flip-flop operator (C<..> in scalar context) would return the same
-scalar each time, unless the containing subroutine was called recursively.
-Now it always returns a new scalar.  [perl #122829]
-
-=item *
-
-Some unterminated C<(?(...)...)> constructs in regular expressions would
-either crash or give erroneous error messages.  C</(?(1)/> is one such
-example.
-
-=item *
-
-C<pack "w", $tied> no longer calls FETCH twice.
+C<pack("D", $x)> and C<pack("F", $x)> now zero the padding on x86 long double
+builds.  GCC 4.8 and later, under some build options, would either overwrite
+the zero-initialized padding, or bypass the initialized buffer entirely.  This
+caused F<op/pack.t> to fail.
+L<[perl #123971]|https://rt.perl.org/Ticket/Display.html?id=123971>
 
 =item *
 
-List assignments like C<($x, $z) = (1, $y)> now work correctly if $x and $y
-have been aliased by C<foreach>.
+Extending an array cloned from a parent thread could result in "Modification of
+a read-only value attempted" errors when attempting to modify the new elements.
+L<[perl #124127]|https://rt.perl.org/Ticket/Display.html?id=124127>
 
 =item *
 
-Some patterns including code blocks with syntax errors, such as
-C</ (?{(^{})/>, would hang or fail assertions on debugging builds.  Now
-they produce errors.
+An assertion failure and subsequent crash with C<< *x=<y> >> has been fixed.
+L<[perl #123790]|https://rt.perl.org/Ticket/Display.html?id=123790>
 
 =item *
 
-An assertion failure when parsing C<sort> with debugging enabled has been
-fixed.  [perl #122771]
+An optimization for state variable initialization introduced in Perl 5.21.6 has
+been reverted because it was found to exacerbate some other existing buggy
+behaviour.
+L<[perl #124160]|https://rt.perl.org/Ticket/Display.html?id=124160>
 
 =item *
 
-C<*a = *b; @a = split //, $b[1]> could do a bad read and produce junk
-results.
+The extension of another optimization to cover more ops in Perl 5.21 has also
+been reverted to its Perl 5.20 state as a temporary fix for regression issues
+that it caused.
+L<[perl #123790]|https://rt.perl.org/Ticket/Display.html?id=123790>
 
 =item *
 
-In C<() = @array = split>, the C<() => at the beginning no longer confuses
-the optimizer, making it assume a limit of 1.
+New bitwise ops added in Perl 5.21.9 accidentally caused C<$^H |= 0x1c020000>
+to enable all features.  This has now been fixed.
 
 =item *
 
-Fatal warnings no longer prevent the output of syntax errors.
-[perl #122966]
+A possible crashing/looping bug has been fixed.
+L<[perl #124099]|https://rt.perl.org/Ticket/Display.html?id=124099>
 
 =item *
 
-Fixed a NaN double to long double conversion error on VMS. For quiet NaNs
-(and only on Itanium, not Alpha) negative infinity instead of NaN was
-produced. 
+UTF-8 variable names used in array indexes, unquoted UTF-8 HERE-document
+terminators and UTF-8 function names all now work correctly.
+L<[perl #124113]|https://rt.perl.org/Ticket/Display.html?id=124113>
 
 =item *
 
-Fixed the issue that caused C<< make distclean >> to leave files behind
-that shouldn't. [perl #122820]
+Breakage in C<require(VERSION)> (with parentheses), introduced in Perl 5.21.6,
+has been fixed.
+L<[perl #124135]|https://rt.perl.org/Ticket/Display.html?id=124135>
 
 =item *
 
-AIX now sets the length in C<< getsockopt >> correctly. [perl #120835],
-[rt #91183], [rt #85570].
+Wide char warnings, wrongly raised in UTF-8 locales since Perl 5.21.8, are now
+suppressed.
+L<[perl #123527]|https://rt.perl.org/Ticket/Display.html?id=123527>
 
 =item *
 
-During the pattern optimization phase, we no longer recurse into
-GOSUB/GOSTART when not SCF_DO_SUBSTR. This prevents the optimizer
-to run "forever" and exhaust all memory. [perl #122283]
+A subtle bug introduced in Perl 5.21.4 involving UTF-8 in regular expressions
+and sometimes causing a crash has been fixed.  A new test script has been added
+to test this fix; see under L</Testing>.
+L<[perl #124109]|https://rt.perl.org/Ticket/Display.html?id=124109>
 
 =item *
 
-F<< t/op/crypt.t >> now performs SHA-256 algorithm if the default one
-is disabled. [perl #121591]
+A change introduced in Perl 5.21.10 that broke the autovivification CPAN module
+has been reverted.
 
 =item *
 
-Fixed an off-by-one error when setting the size of shared array.
-[perl #122950]
+A bug whereby C<< 'FOO'->f() >> lost the read-only status of C<FOO>, introduced
+in Perl 5.21.7, has been fixed.
+L<[perl #123619]|https://rt.perl.org/Ticket/Display.html?id=123619>
 
 =item *
 
-Fixed a bug that could cause perl to execute an infinite loop during
-compilation. [perl #122995]
+A regression in Perl 5.21 in the matching of C</[A-Z]/ai> has been fixed.
 
 =back
 
 =head1 Acknowledgements
 
-Perl 5.21.5 represents approximately 4 weeks of development since Perl 5.21.4
-and contains approximately 40,000 lines of changes across 530 files from 33
+Perl 5.21.11 represents approximately 4 weeks of development since Perl 5.21.10
+and contains approximately 5,800 lines of changes across 240 files from 24
 authors.
 
 Excluding auto-generated files, documentation and release tools, there were
-approximately 29,000 lines of changes to 390 .pm, .t, .c and .h files.
+approximately 1,700 lines of changes to 160 .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.21.5:
+of users and developers.  The following people are known to have contributed
+the improvements that became Perl 5.21.11:
 
-Aaron Crane, Abigail, Alberto Simões, Andrew Fresh, Chris 'BinGOs' Williams,
-Craig A. Berry, Dagfinn Ilmari Mannsåker, Daniel Dragan, David Mitchell, Doug
-Bell, Ed J, Father Chrysostomos, George Greer, Graham Knop, James E Keenan,
-Jarkko Hietaniemi, Karen Etheridge, Karl Williamson, Leon Timmermans, Lukas
-Mai, Niko Tyni, Peter Martini, Petr Písař, Rafael Garcia-Suarez, Reini Urban,
-Ricardo Signes, Shlomi Fish, Steve Hay, syber, Tony Cook, Vincent Pit, Yves
-Orton, Ævar Arnfjörð Bjarmason.
+Alex Vandiver, Andreas König, Craig A. Berry, Dagfinn Ilmari Mannsåker, Daniel
+Dragan, David Golden, David Mitchell, Father Chrysostomos, H.Merijn Brand,
+Herbert Breunung, Hugo van der Sanden, James E Keenan, James McCoy, Karl
+Williamson, Matthew Horsfall, Max Maischein, Nicholas Clark, Rafael
+Garcia-Suarez, Randy Stauner, Ricardo Signes, Shirakata Kentaro, Steffen
+Müller, Steve Hay, Tony Cook.
 
 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
+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
+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