This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta: typo fixes and wordsmithing
authorAaron Crane <arc@cpan.org>
Sat, 16 May 2015 16:05:42 +0000 (17:05 +0100)
committerAaron Crane <arc@cpan.org>
Sat, 16 May 2015 16:07:26 +0000 (17:07 +0100)
pod/perldelta.pod

index 50a4c7e..2c57317 100644 (file)
@@ -60,14 +60,14 @@ See L<perlrebackslash/\b{}, \b, \B{}, \B> for details.
 
 =head2 C<no re> covers more and is lexical
 
-Previously running C<no re> would only turn off a few things. Now it
+Previously running C<no re> would turn off only a few things. Now it
 turns off all the enabled things. For example, previously, you
 couldn't turn off debugging, once enabled, inside the same block.
 
 =head2 Non-Capturing Regular Expression Flag
 
 Regular expressions now support a C</n> flag that disables capturing
-and filling in C<$1>, C<$2>, etc... inside of groups:
+and filling in C<$1>, C<$2>, etc inside of groups:
 
   "hello" =~ /(hi|hello)/n; # $1 is not set
 
@@ -78,12 +78,12 @@ See L<perlre/"n"> for more information.
 =head2 C<use re 'strict'>
 
 This applies stricter syntax rules to regular expression patterns
-compiled within its scope, which hopefully will alert you to typos and
+compiled within its scope. This will hopefully alert you to typos and
 other unintentional behavior that backwards-compatibility issues prevent
-us from doing in normal regular expression compilations.  Because the
+us from reporting in normal regular expression compilations.  Because the
 behavior of this is subject to change in future Perl releases as we gain
-experience, using this pragma will raise a category
-C<experimental::re_strict> warning.
+experience, using this pragma will raise a warning of category
+C<experimental::re_strict>.
 See L<'strict' in re|re/'strict' mode>.
 
 =head2 Unicode 7.0 (with correction) is now supported
@@ -129,7 +129,8 @@ 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
+Aliasing can also be accomplished
+by using a backslash before a C<foreach> iterator variable; this is
 perhaps the most useful idiom this feature provides:
 
     foreach \%hash (@array_of_hash_refs) { ... }
@@ -145,9 +146,9 @@ See L<perlref/Assigning to References>
 C<prototype()> with no arguments now infers C<$_>.
 L<[perl #123514]|https://rt.perl.org/Ticket/Display.html?id=123514>.
 
-=head2 New "const" subroutine attribute
+=head2 New C<:const> subroutine attribute
 
-The "const" attribute can be applied to an anonymous subroutine.  It
+The C<const> attribute can be applied to an anonymous subroutine.  It
 causes the new sub to be executed immediately whenever one is created
 (i.e. when the C<sub> expression is evaluated).  Its value is captured
 and used to create a new constant subroutine that is returned.  This
@@ -191,10 +192,10 @@ as the left-hand side is a valid lvalue.  This allows S<C<(undef,undef,$foo)
 
 =head2 Infinity and NaN (not-a-number) handling improved
 
-Floating point values are able to hold the special values infinity (also
--infinity), and NaN (not-a-number).  Now we more robustly recognize and
-propagate the value in computations, and on output normalize them to C<Inf> and
-C<NaN>.
+Floating point values are able to hold the special values infinity, negative
+infinity, and NaN (not-a-number).  Now we more robustly recognize and
+propagate the value in computations, and on output normalize them to C<Inf>,
+C<-Inf>, or C<NaN>.
 
 See also the L<POSIX> enhancements.
 
@@ -204,7 +205,8 @@ Parsing and printing of floating point values has been improved.
 
 As a completely new feature, hexadecimal floating point literals
 (like C<0x1.23p-4>)  are now supported, and they can be output with
-C<printf %a>.
+C<printf "%a">. See L<perldata/Scalar value constructors> for more
+details.
 
 =head2 Packing infinity or not-a-number into a character is now fatal
 
@@ -260,9 +262,10 @@ and OS X has enforced the same for many years.
 =head2 Subroutine signatures moved before attributes
 
 The experimental sub signatures feature, as introduced in 5.20, parsed
-signatures after attributes.  In this release, the positioning has been
-moved such that signatures occur after the subroutine name (if any) and
-before the attribute list (if any).
+signatures after attributes. In this release, following feedback from users
+of the experimental feature, the positioning has been moved such that
+signatures occur after the subroutine name (if any) and before the attribute
+list (if any).
 
 =head2 C<&> and C<\&> prototypes accepts only subs
 
@@ -286,10 +289,10 @@ unrelated modules that are included in the same program.
 
 =head2 List slices returning empty lists
 
-List slices return an empty list now only if the original list was empty
+List slices now return an empty list only if the original list was empty
 (or if there are no indices).  Formerly, a list slice would return an empty
 list if all indices fell outside the original list; now it returns a list
-of undef values.
+of undef values in that case.
 L<[perl #114498]|https://rt.perl.org/Ticket/Display.html?id=114498>.
 
 =head2 C<\N{}> with a sequence of multiple spaces is now a fatal error
@@ -300,7 +303,7 @@ This has been deprecated since v5.18.
 =head2 S<C<use UNIVERSAL '...'>> is now a fatal error
 
 Importing functions from C<UNIVERSAL> has been deprecated since v5.12, and
-is now a fatal error.  S<C<"use UNIVERSAL">> without any arguments is still
+is now a fatal error.  S<C<use UNIVERSAL>> without any arguments is still
 allowed.
 
 =head2 In double-quotish C<\cI<X>>, I<X> must now be a printable ASCII character
@@ -355,14 +358,14 @@ Really old Perl let you omit the C<@> on array names and the C<%> on hash
 names in some spots.  This has issued a deprecation warning since Perl
 5.000, and is no longer permitted.
 
-=head2 C<"$!"> text is now in English outside C<"use locale"> scope
+=head2 C<"$!"> text is now in English outside the scope of C<use locale>
 
 Previously, the text, unlike almost everything else, always came out
 based on the current underlying locale of the program.  (Also affected
-on some systems is C<"$^E>".)  For programs that are unprepared to
-handle locale, this can cause garbage text to be displayed.  It's better
-to display text that is translatable via some tool than garbage text
-which is much harder to figure out.
+on some systems is C<"$^E">.)  For programs that are unprepared to
+handle locale differences, this can cause garbage text to be displayed.
+It's better to display text that is translatable via some tool than
+garbage text which is much harder to figure out.
 
 =head2 C<"$!"> text will be returned in UTF-8 when appropriate
 
@@ -371,20 +374,20 @@ when the text is actually non-ASCII UTF-8.  This will enable programs
 that are set up to be locale-aware to properly output messages in the
 user's native language.  Code that needs to continue the 5.20 and
 earlier behavior can do the stringification within the scopes of both
-S<C<'use bytes'>> and S<C<'use locale ":messages">>.  No other Perl
+S<C<use bytes>> and S<C<use locale ":messages">>.  No other Perl
 operations will
 be affected by locale; only C<$!> and C<$^E> stringification.  The
-'bytes' pragma causes the UTF-8 flag to not be set, just as in previous
+C<bytes> pragma causes the UTF-8 flag to not be set, just as in previous
 Perl releases.  This resolves
 L<[perl #112208]|https://rt.perl.org/Ticket/Display.html?id=112208>.
 
 =head2 Support for C<?PATTERN?> without explicit operator has been removed
 
-Starting regular expressions matching only once directly with the
-question mark delimiter is now a syntax error, so that the question mark
-can be available for use in new operators.  Write C<m?PATTERN?> instead,
-explicitly using the C<m> operator: the question mark delimiter still
-invokes match-once behaviour.
+The C<m?PATTERN?> construct, which allows matching a regex only once,
+previously had an alternative form that was written directly with a question
+mark delimiter, omitting the explicit C<m> operator.  This usage has produced
+a deprecation warning since 5.14.0.  It is now a syntax error, so that the
+question mark can be available for use in new operators.
 
 =head2 C<defined(@array)> and C<defined(%hash)> are now fatal errors
 
@@ -417,8 +420,8 @@ which brings it into conformity with similarly prototyped built-in functions:
 
 =head2 Setting C<${^ENCODING}> to anything but C<undef>
 
-This variable allows Perl scripts to be written in a non-ASCII,
-non-UTF-8 encoding.  However, it affects all modules globally, leading
+This variable allows Perl scripts to be written in an encoding other than
+ASCII or UTF-8.  However, it affects all modules globally, leading
 to wrong answers and segmentation faults.  New scripts should be written
 in UTF-8; old scripts should be converted to UTF-8, which is easily done
 with the L<encoding> pragma.
@@ -430,8 +433,8 @@ for longer variable names, allowing the one-character name to be a
 punctuation character or even invisible (a non-graphic).  Perl v5.20
 deprecated the ASCII-range controls as such a name.  Now, all
 non-graphic characters that formerly were allowed are deprecated.
-The practical effect of this occurs only when not under C<S<"use
-utf8">>, and affects just the C1 controls (code points 0x80 through
+The practical effect of this occurs only when not under C<S<use
+utf8>>, and affects just the C1 controls (code points 0x80 through
 0xFF), NO-BREAK SPACE, and SOFT HYPHEN.
 
 =head2 Inlining of C<sub () { $var }> with observable side-effects
@@ -490,7 +493,7 @@ It is now deprecated to say something like any of the following:
 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
+Perl release having C</xx> permit white-space for readability in
 bracketed character classes (those enclosed in square brackets:
 C<[...]>).
 
@@ -513,7 +516,7 @@ release; it will allow future extensions to the language to happen.
 =head2 Making all warnings fatal is discouraged
 
 The documentation for L<fatal warnings|warnings/Fatal Warnings> notes that
-C<< use warnings FATAL => 'all' >> is discouraged and provides stronger
+C<< use warnings FATAL => 'all' >> is discouraged, and provides stronger
 language about the risks of fatal warnings in general.
 
 =head1 Performance Enhancements
@@ -539,7 +542,8 @@ C<(...)x1>, C<("constant")x0> and C<($scalar)x0> are now optimised in list
 context.  If the right-hand argument is a constant 1, the repetition
 operator disappears.  If the right-hand argument is a constant 0, the whole
 expression is optimised to the empty list, so long as the left-hand
-argument is a simple scalar or constant.  C<(foo())x0> is not optimised.
+argument is a simple scalar or constant.  (That is, C<(foo())x0> is not
+subject to this optimisation.)
 
 =item *
 
@@ -569,19 +573,20 @@ used to sometimes.
 
 =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 is in scope of C<use bytes>.
+There is a performance improvement of up to 20% when C<length> is applied to
+a non-magical, non-tied string, and either C<use bytes> is in scope or the
+string doesn't use UTF-8 internally.
 
 =item *
 
-On most perl builds with 64 bit integers, non-magical/non-tied scalars
-that contain only a floating point value now use between 8 and 32 less bytes
-of memory, depending on OS.
+On most perl builds with 64-bit integers, memory usage for non-magical,
+non-tied scalars containing only a floating point value has been reduced
+by between 8 and 32 bytes, depending on OS.
 
 =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
+In C<@array = split>, the assignment can be optimized away, so that C<split>
+writes directly to the array.  This optimisation was happening only for
 package arrays other than C<@_>, and only sometimes.  Now this
 optimisation happens almost all the time.
 
@@ -590,7 +595,7 @@ optimisation happens almost all the time.
 C<join> is now subject to constant folding.  So for example
 C<join "-", "a", "b"> is converted at compile-time to C<"a-b">.
 Moreover, C<join> with a scalar or constant for the separator and a
-single-item list to join is simplified to a stringification.  The
+single-item list to join is simplified to a stringification, and the
 separator doesn't even get evaluated.
 
 =item *
@@ -624,7 +629,7 @@ Hash lookups where the key is a constant are faster.
 
 =item *
 
-Subroutines with an empty prototype and bodies containing just C<undef> are now
+Subroutines with an empty prototype and a body containing just C<undef> are now
 eligible for inlining.
 L<[perl #122728]|https://rt.perl.org/Ticket/Display.html?id=122728>
 
@@ -651,7 +656,7 @@ platforms.
 
 Win32 Perl uses 8 KB less of per-process memory than before for every perl
 process, because some data is now memory mapped from disk and shared
-between perl processes from the same perl binary.
+between processes from the same perl binary.
 
 =back
 
@@ -731,7 +736,8 @@ Clarify where C<NUL> may be embedded or is required to terminate a string.
 
 =item *
 
-Previously missing documentation due to formatting errors are now included.
+Some documentation that was previously missing due to formatting errors is
+now included.
 
 =item *
 
@@ -793,8 +799,8 @@ L<[perl #121523]|https://rt.perl.org/Ticket/Display.html?id=121523>
 =item *
 
 Note that C<exec LIST> and C<system LIST> may fall back to the shell on
-Win32. Only C<exec PROGRAM LIST> and C<system PROGRAM LIST> indirect object
-syntax will reliably avoid using the shell.
+Win32. Only the indirect-object syntax C<exec PROGRAM LIST> and
+C<system PROGRAM LIST> will reliably avoid using the shell.
 
 This has also been noted in L<perlport>.
 
@@ -831,13 +837,14 @@ Information on EBCDIC handling has been added
 
 =item *
 
-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.
+Documentation has been added illustrating the perils of assuming that
+there is no change to the contents of static memory pointed to by the
+return values of Perl's wrappers for C library functions.
 
 =item *
 
-Recommended replacements for tmpfile, atoi, strtol, and strtoul added.
+Replacements for C<tmpfile>, C<atoi>, C<strtol>, and C<strtoul> are now
+recommended.
 
 =item *
 
@@ -880,7 +887,7 @@ set out.
 
 =item *
 
-Out-of-date VMS-specific information has been fixed/simplified.
+Out-of-date VMS-specific information has been fixed and/or simplified.
 
 =item *
 
@@ -894,8 +901,8 @@ Notes about EBCDIC have been added.
 
 =item *
 
-The C</x> modifier has been clarified to note that comments cannot be continued
-onto the next line by escaping them.
+The description of the C</x> modifier has been clarified to note that
+comments cannot be continued onto the next line by escaping them.
 
 =back
 
@@ -1855,7 +1862,7 @@ C<USE_CPLUSPLUS> to the value "define".
 
 =item *
 
-List form of pipe open has been implemented for Win32.  Note: unlike
+The list form of piped open has been implemented for Win32.  Note: unlike
 C< system LIST >> this does not fall back to the shell.
 L<[perl #121159]|https://rt.perl.org/Ticket/Display.html?id=121159>
 
@@ -1882,8 +1889,8 @@ already not supported by F<Configure> on POSIX systems.
 
 =item *
 
-Between 2 and 6 ms and 7 I/O calls have been saved per attempt to open a perl
-module for each path in C<@INC>.
+Between 2 and 6 milliseconds and seven I/O calls have been saved per attempt
+to open a perl module for each path in C<@INC>.
 
 =item *
 
@@ -1896,8 +1903,8 @@ C<%I64d> is now being used instead of C<%lld> for MinGW.
 =item *
 
 In the experimental C<:win32> layer, a crash in C<open> was fixed. Also
-opening C</dev/null>, which works the Win32 Perl's normal C<:unix> layer, was
-implemented for C<:win32>.
+opening C</dev/null> (which works under Win32 Perl's default C<:unix>
+layer) was implemented for C<:win32>.
 L<[perl #122224]|https://rt.perl.org/Ticket/Display.html?id=122224>
 
 =item *
@@ -1936,8 +1943,8 @@ L<[perl #120120]|https://rt.perl.org/Ticket/Display.html?id=120120>
 
 =item *
 
-C<c99> options have been cleaned up, hints look for C<solstudio>
-as well as C<SUNWspro>, and support for native C<setenv> has been added.
+C<c99> options have been cleaned up; hints look for C<solstudio>
+as well as C<SUNWspro>; and support for native C<setenv> has been added.
 
 =back
 
@@ -1974,7 +1981,7 @@ should now be written as:
 
     for (; OpHAS_SIBLING(kid); kid = OpSIBLING(kid)) { ...  }
 
-For altering optrees, A general-purpose function C<op_sibling_splice()>
+For altering optrees, a general-purpose function C<op_sibling_splice()>
 has been added, which allows for manipulation of a chain of sibling ops.
 By analogy with the Perl function C<splice()>, it allows you to cut out
 zero or more ops from a sibling chain and replace them with zero or more
@@ -1991,7 +1998,7 @@ C<op_sibling_splice()> these macros won't maintain consistency in the
 parent at the same time (e.g. by updating C<op_first> and C<op_last> where
 appropriate).
 
-A C-level C<Perl_op_parent()> function and a perl-level C<B::OP::parent()>
+A C-level C<Perl_op_parent()> function and a Perl-level C<B::OP::parent()>
 method have been added. The C function only exists under
 C<-DPERL_OP_PARENT> builds (using it is build-time error on vanilla
 perls).  C<B::OP::parent()> exists always, but on a vanilla build it
@@ -2072,22 +2079,24 @@ L<[perl #123103]|https://rt.perl.org/Ticket/Display.html?id=123103>.
 
 =item *
 
-Accessing L<perlapi/CvPADLIST> in an XSUB is now forbidden.
-C<CvPADLIST> has been reused for a different internal purpose for XSUBs. Guard all
-C<CvPADLIST> expressions with C<CvISXSUB()> if your code doesn't already block
-XSUB CV*s from going through optree CV* expecting code.
+Accessing L<perlapi/CvPADLIST> on an XSUB is now forbidden.
+
+C<CvPADLIST> has been reused for a different internal purpose for XSUBs.
+Padlist-inspecting code that isn't otherwise prevented from seeing an XSUB
+C<CV*> should guard all C<CvPADLIST> expressions with C<CvISXSUB()>.
 
 =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.
+SVs of type C<SVt_NV> are now bodyless when the build configuration and
+platform allow it; specifically, bodyless NVs require C<< sizeof(NV) <=
+sizeof(IV) >>. The bodyless trick is the same one as used for IVs since
+5.9.2 (though in the case of IVs, it is used of platform and build
+configuration).
 
 =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
+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 infinitely if an overloaded object is assigned to any of those
 variables.
@@ -2095,9 +2104,9 @@ L<[perl #122445]|https://rt.perl.org/Ticket/Display.html?id=122445>.
 
 =item *
 
-C<Perl_tmps_grow> which is marked as public API but is 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.
+C<Perl_tmps_grow>, which is marked as public API but is undocumented, has
+been removed from the public API. This change does not affect XS code that
+uses the C<EXTEND_MORTAL> macro to preextend the mortal stack.
 
 =item *
 
@@ -2107,13 +2116,13 @@ should be fully qualified.  See L<perlapi/cv_name>.
 
 =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
+Perl's internals no longer uses the C<SVs_PADMY> flag.  C<SvPADMY()> now
+returns a true value for anything not marked C<PADTMP>.  C<SVs_PADMY> is now
 defined as 0.
 
 =item *
 
-The macros SETsv and SETsvUN have been removed. They were no longer used
+The macros C<SETsv> and C<SETsvUN> have been removed. They were no longer used
 in the core since commit 6f1401dc2a, and have not been found present on
 CPAN.
 
@@ -2131,10 +2140,10 @@ respectively.
 =item *
 
 A new opcode class, C<< METHOP >>, has been introduced. It holds
-class/method related info needed at runtime to improve performance
+information used at runtime for improve the performance
 of class/object method calls.
 
-C<< OP_METHOD >> and C<< OP_METHOD_NAMED >> are moved from being
+C<< OP_METHOD >> and C<< OP_METHOD_NAMED >> have changed from being
 C<< UNOP/SVOP >> to being C<< METHOP >>.
 
 =item *
@@ -2169,9 +2178,10 @@ L<[perl #120441]|https://rt.perl.org/Ticket/Display.html?id=120441>
 
 =item *
 
-Added L<perlapi/sync_locale>.  Changing the program's locale should be avoided
-by XS code.  Nevertheless, certain non-Perl libraries called from XS, such as
-C<Gtk> do so.  When this happens, Perl needs to be told that the locale has
+The L<perlapi/sync_locale> function has been added to the public API.
+Changing the program's locale should be avoided by XS code. Nevertheless,
+certain non-Perl libraries called from XS need to do so, such as C<Gtk>.
+When this happens, Perl needs to be told that the locale has
 changed.  Use this function to do so, before returning to Perl.
 
 =item *
@@ -2180,8 +2190,8 @@ The defines and labels for the flags in the C<op_private> field of OPs are now
 auto-generated from data in F<regen/op_private>.  The noticeable effect of this
 is that some of the flag output of C<Concise> might differ slightly, and the
 flag output of C<perl -Dx> may differ considerably (they both use the same set
-of labels now).  Also in debugging builds, there is a new assert in
-C<op_free()> that checks that the op doesn't have any unrecognized flags set in
+of labels now).  Also, debugging builds now have a new assertion in
+C<op_free()> to ensure that the op doesn't have any unrecognized flags set in
 C<op_private>.
 
 =item *
@@ -2216,7 +2226,7 @@ C<Perl_cast_ulong>,  C<Perl_cast_i32>, C<Perl_cast_iv>,    C<Perl_cast_uv>,
 C<Perl_cv_const_sv>, C<Perl_mg_find>,  C<Perl_mg_findext>, C<Perl_mg_magical>,
 C<Perl_mini_mktime>, C<Perl_my_dirfd>, C<Perl_sv_backoff>, C<Perl_utf8_hop>.
 
-Users of the public API prefix-less calls remain unaffected.
+Uses of the prefix-less calls that form the public API remain unaffected.
 
 =item *
 
@@ -2259,7 +2269,8 @@ index is still done using C<aelemfast>.
 =item *
 
 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
+builds.  Under some build options on GCC 4.8 and later, they 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>
@@ -2296,8 +2307,8 @@ L<[perl #124099]|https://rt.perl.org/Ticket/Display.html?id=124099>
 
 =item *
 
-UTF-8 variable names used in array indexes, unquoted UTF-8 HERE-document
-terminators and UTF-8 function names all now work correctly.
+UTF-8 now works correctly in function names, in unquoted HERE-document
+terminators, and in variable names used as array indexes.
 L<[perl #124113]|https://rt.perl.org/Ticket/Display.html?id=124113>
 
 =item *
@@ -2317,7 +2328,7 @@ L<[perl #123995]|https://rt.perl.org/Ticket/Display.html?id=123995>
 
 =item *
 
-C<split> in the scope of lexical C<$>_ has been fixed not to fail assertions.
+C<split> in the scope of lexical C<$_> has been fixed not to fail assertions.
 L<[perl #123763]|https://rt.perl.org/Ticket/Display.html?id=123763>
 
 =item *
@@ -2348,8 +2359,8 @@ L<[perl #124004]|https://rt.perl.org/Ticket/Display.html?id=124004>
 
 =item *
 
-A regression in the behaviour of the C<readline> built-in function, caused by
-the introduction of the C<< <<>> >> operator, has been fixed.
+A regression has been fixed in the behaviour of the C<readline> built-in
+function, caused by the introduction of the C<<< <<>> >>> operator.
 L<[perl #123990]|https://rt.perl.org/Ticket/Display.html?id=123990>
 
 =item *
@@ -2446,8 +2457,8 @@ L<[perl #100819]|https://rt.cpan.org/Ticket/Display.html?id=100819>.
 
 A bug in regular expression patterns that could lead to segfaults and
 other crashes has been fixed.  This occurred only in patterns compiled
-with C<"/i">, while taking into account the current POSIX locale (this usually
-means they have to be compiled within the scope of C<S<"use locale">>),
+with C</i> while taking into account the current POSIX locale (which usually
+means they have to be compiled within the scope of C<S<use locale>>),
 and there must be a string of at least 128 consecutive bytes to match.
 L<[perl #123539]|https://rt.perl.org/Ticket/Display.html?id=123539>.
 
@@ -2484,7 +2495,7 @@ longer do.
 =item *
 
 Some cases of nested lexical state subs inside anonymous subs could cause
-'Bizarre copy' errors or possibly even crash.
+'Bizarre copy' errors or possibly even crashes.
 
 =item *
 
@@ -2495,7 +2506,7 @@ L<[perl #123553]|https://rt.perl.org/Ticket/Display.html?id=123553>.
 
 =item *
 
-Certain syntax errors in substitutions, such as C<< s/${E<lt>E<gt>{})// >>, would
+Certain syntax errors in substitutions, such as C<< s/${<>{})// >>, would
 crash, and had done so since Perl 5.10.  (In some cases the crash did not
 start happening till 5.16.)  The crash has, of course, been fixed.
 L<[perl #123542]|https://rt.perl.org/Ticket/Display.html?id=123542>.
@@ -2530,13 +2541,13 @@ L<[perl #122703]|https://rt.perl.org/Ticket/Display.html?id=122703>.
 
 =item *
 
-op_free() no longer crashes due to a stack overflow when freeing a
+C<op_free()> no longer crashes due to a stack overflow when freeing a
 deeply recursive op tree.
 L<[perl #108276]|https://rt.perl.org/Ticket/Display.html?id=108276>.
 
 =item *
 
-scalarvoid() would crash due to a stack overflow when processing a
+C<scalarvoid()> would crash due to a stack overflow when processing a
 deeply recursive op tree.
 L<[perl #108276]|https://rt.perl.org/Ticket/Display.html?id=108276>.
 
@@ -2560,7 +2571,7 @@ L<[perl #122695]|https://rt.perl.org/Ticket/Display.html?id=122695>.
 
 =item *
 
-Sometimes the assignment in C<@array = split> gets optimised and C<split>
+Sometimes the assignment in C<@array = split> gets optimised so that C<split>
 itself writes directly to the array.  This caused a bug, preventing this
 assignment from being used in lvalue context.  So
 C<(@a=split//,"foo")=bar()> was an error.  (This bug probably goes back to
@@ -2570,7 +2581,7 @@ L<[perl #123057]|https://rt.perl.org/Ticket/Display.html?id=123057>.
 
 =item *
 
-When argument lists that fail the checks installed by subroutine
+When an argument list fails the checks installed by subroutine
 signatures, the resulting error messages now give the file and line number
 of the caller, not of the called subroutine.
 L<[perl #121374]|https://rt.perl.org/Ticket/Display.html?id=121374>.
@@ -2601,7 +2612,7 @@ $_.
 =item *
 
 C<(...) x ...> in scalar context used to corrupt the stack if one operand
-were an object with "x" overloading, causing erratic behaviour.
+was an object with "x" overloading, causing erratic behaviour.
 L<[perl #121827]|https://rt.perl.org/Ticket/Display.html?id=121827>.
 
 =item *
@@ -2617,7 +2628,7 @@ and C<setpgrp>.
 =item *
 
 List assignments were sometimes buggy if the same scalar ended up on both
-sides of the assignment due to used of C<tied>, C<values> or C<each>.  The
+sides of the assignment due to use of C<tied>, C<values> or C<each>.  The
 result would be the wrong value getting assigned.
 
 =item *
@@ -2647,8 +2658,8 @@ throw the attributes away.  An exception is made for the little-known
 =item *
 
 Inlining of subs with an empty prototype is now more consistent than
-before.  Previously, a sub with multiple statements, all but the last
-optimised away, would be inlinable only if it were an anonymous sub
+before. Previously, a sub with multiple statements, of which all but the last
+were optimised away, would be inlinable only if it were an anonymous sub
 containing a string C<eval> or C<state> declaration or closing over an
 outer lexical variable (or any anonymous sub under the debugger).  Now any
 sub that gets folded to a single constant after statements have been
@@ -2740,12 +2751,12 @@ fixed.
 
 =item *
 
-system() and friends should now work properly on more Android builds.
+C<system()> and friends should now work properly on more Android builds.
 
 Due to an oversight, the value specified through C<-Dtargetsh> to F<Configure>
 would end up being ignored by some of the build process.  This caused perls
 cross-compiled for Android to end up with defective versions of C<system()>,
-exec() and backticks: the commands would end up looking for C</bin/sh>
+C<exec()> and backticks: the commands would end up looking for C</bin/sh>
 instead of C</system/bin/sh>, and so would fail for the vast majority
 of devices, leaving C<$!> as C<ENOENT>.
 
@@ -2763,7 +2774,7 @@ mirror character.
 
 =item *
 
-C<< s///e >> on tainted utf8 strings got C<< pos() >> messed up. This bug,
+C<< s///e >> on tainted utf8 strings corrupted C<< pos() >>. This bug,
 introduced in 5.20, is now fixed.
 L<[perl #122148]|https://rt.perl.org/Ticket/Display.html?id=122148>.
 
@@ -2815,7 +2826,7 @@ L<[perl #69456]|https://rt.perl.org/Ticket/Display.html?id=69456>
 
 =item *
 
-When parsing a funny character (C<$> C<@> C<%> C<&)> followed by braces,
+When parsing a sigil (C<$> C<@> C<%> C<&)> followed by braces,
 the parser no
 longer tries to guess whether it is a block or a hash constructor (causing a
 syntax error when it guesses the latter), since it can only be a block.
@@ -2900,10 +2911,10 @@ compilation were being output more than once.  This has now been fixed.
 
 =item *
 
-A regression has been fixed that was introduced in Perl 5.20.0 (fixed in Perl
-5.20.1 as well as here) in which a UTF-8 encoded regular expression pattern
-that contains a single ASCII lowercase letter does not match its uppercase
-counterpart.
+Perl 5.20.0 introduced a regression in which a UTF-8 encoded regular
+expression pattern that contains a single ASCII lowercase letter did not
+match its uppercase counterpart. That has been fixed in both 5.20.1 and
+5.22.0.
 L<[perl #122655]|https://rt.perl.org/Ticket/Display.html?id=122655>
 
 =item *
@@ -2938,7 +2949,8 @@ as C<"(unknown)">.
 
 =item *
 
-C<sort subname LIST> now supports lexical subs for the comparison routine.
+C<sort subname LIST> now supports using a lexical sub as the comparison
+routine.
 
 =item *
 
@@ -2956,11 +2968,11 @@ ago.
 
 =item *
 
-An optimization in C<split> to treat C<split/^/> like C<split/^/m> had the
-unfortunate side-effect of also treating C<split/\A/> like C<split/^/m>, which
-it should not.  This has been fixed.  (Note, however, that C<split/^x/> does
-not behave like C<split/^x/m>, which is also considered to be a bug and will be
-fixed in a future version.)
+An optimization in C<split> to treat C<split /^/> like C<split /^/m> had the
+unfortunate side-effect of also treating C<split /\A/> like C<split /^/m>,
+which it should not.  This has been fixed.  (Note, however, that C<split /^x/>
+does not behave like C<split /^x/m>, which is also considered to be a bug and
+will be fixed in a future version.)
 L<[perl #122761]|https://rt.perl.org/Ticket/Display.html?id=122761>
 
 =item *
@@ -3018,7 +3030,7 @@ results.
 =item *
 
 In S<C<() = @array = split>>, the S<C<() =>> at the beginning no longer confuses
-the optimizer, making it assume a limit of 1.
+the optimizer into assuming a limit of 1.
 
 =item *
 
@@ -3027,14 +3039,14 @@ L<[perl #122966]|https://rt.perl.org/Ticket/Display.html?id=122966>.
 
 =item *
 
-Fixed a NaN double to long double conversion error on VMS. For quiet NaNs
+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.
 
 =item *
 
-Fixed the issue that caused C<< make distclean >> to leave files behind
-that shouldn't.
+Fixed the issue that caused C<< make distclean >> to incorrectly leave some
+files behind.
 L<[perl #122820]|https://rt.perl.org/Ticket/Display.html?id=122820>.
 
 =item *
@@ -3047,33 +3059,33 @@ L<[cpan #85570]|https://rt.cpan.org/Ticket/Display.html?id=85570>.
 =item *
 
 During the pattern optimization phase, we no longer recurse into
-C<GOSUB>/C<GOSTART> when not C<SCF_DO_SUBSTR>. This prevents the optimizer
-to run "forever" and exhaust all memory.
+C<GOSUB>/C<GOSTART> when C<SCF_DO_SUBSTR> is false. This prevents the
+optimizer from running "forever" and exhausting all memory.
 L<[perl #122283]|https://rt.perl.org/Ticket/Display.html?id=122283>.
 
 =item *
 
-F<< t/op/crypt.t >> now performs SHA-256 algorithm if the default one
+F<< t/op/crypt.t >> now uses the SHA-256 algorithm if the default one
 is disabled.
 L<[perl #121591]|https://rt.perl.org/Ticket/Display.html?id=121591>.
 
 =item *
 
-Fixed an off-by-one error when setting the size of shared array.
+Fixed an off-by-one error when setting the size of shared array.
 L<[perl #122950]|https://rt.perl.org/Ticket/Display.html?id=122950>.
 
 =item *
 
-Fixed a bug that could cause perl to execute an infinite loop during
+Fixed a bug that could cause perl to enter an infinite loop during
 compilation.
 L<[perl #122995]|https://rt.perl.org/Ticket/Display.html?id=122995>.
 
 =item *
 
-On Win32, restoring in a child pseudo-process a variable that was
-C<local()>ed in a parent pseudo-process before the C<fork> happened caused
-memory corruption and a crash in the child pseudo-process (and therefore OS
-process).
+On Win32, if a variable was C<local>-ized in a pseudo-process that then
+forked, restoring the original value in the child pseudo-process caused
+memory corruption and a crash in the child pseudo-process (and therefore the
+OS process).
 L<[perl #40565]|https://rt.perl.org/Ticket/Display.html?id=40565>.
 
 =item *
@@ -3085,8 +3097,8 @@ L<[perl #123245]|https://rt.perl.org/Ticket/Display.html?id=123245>.
 
 =item *
 
-Non-ASCII lexical sub names (use in error messages) on longer have extra
-junk on the end.
+Non-ASCII lexical sub names now appear without trailing junk when they
+appear in error messages.
 
 =item *
 
@@ -3121,7 +3133,7 @@ global variable even with a lexical variable in scope.
 =item *
 
 In perl 5.20.0, C<sort CORE::fake> where 'fake' is anything other than a
-keyword started chopping of the last 6 characters and treating the result
+keyword started chopping off the last 6 characters and treating the result
 as a sort sub name.  The previous behaviour of treating "CORE::fake" as a
 sort sub name has been restored.
 L<[perl #123410]|https://rt.perl.org/Ticket/Display.html?id=123410>.
@@ -3173,7 +3185,7 @@ characters.
 
 Ranges containing C<\N{...}> in the C<tr///> (and C<y///>)
 transliteration operators are treated differently than the equivalent
-ranges in regular expression pattersn.  They should, but don't, cause
+ranges in regular expression patterns.  They should, but don't, cause
 the values in the ranges to all be treated as Unicode code points, and
 not native ones.  (L<perlre/Version 8 Regular Expressions> gives
 details as to how it should work.)