=head1 Selected Bug Fixes
-=over 4
-
-=item *
+=head2 Perl 5 Debugger and -d
-The OP allocation code now returns correctly aligned memory in all cases
-for C<struct pmop>. Previously it could return memory only aligned to a
-4-byte boundary, which is not correct for an ithreads build with 64 bit IVs
-on some 32 bit platforms. Notably, this caused the build to fail completely
-on sparc GNU/Linux. [RT #118055]
+=over 4
=item *
=item *
+Under copy-on-write builds (the default as of 5.20.0) C<< ${'_<-e'}[0] >>
+no longer gets mangled. This is the first line of input saved for the
+debugger's use for one-liners [perl #118627].
+
+=item *
+
+On non-threaded builds, setting C<${"_E<lt>filename"}> to a reference or
+typeglob no longer causes C<__FILE__> and some error messages to produce a
+corrupt string, and no longer prevents C<#line> directives in string evals from
+providing the source lines to the debugger. Threaded builds were unaffected.
+
+=item *
+
+Starting with Perl 5.12, line numbers were off by one if the B<-d> switch was
+used on the #! line. Now they are correct.
+
+=item *
+
+C<*DB::DB = sub {} if 0> no longer stops Perl's debugging mode from finding
+C<DB::DB> subs declared thereafter.
+
+=item *
+
+C<%{'_<...'}> hashes now set breakpoints on the corresponding C<@{'_<...'}>
+rather than whichever array C<@DB::dbline> is aliased to. [perl #119799]
+
+=item *
+
+Call set-magic when setting $DB::sub. [perl #121255]
+
+=item *
+
+The debugger's "n" command now respects lvalue subroutines and steps over
+them [perl #118839].
+
+=back
+
+=over 4
+
+=item *
+
+The OP allocation code now returns correctly aligned memory in all cases
+for C<struct pmop>. Previously it could return memory only aligned to a
+4-byte boundary, which is not correct for an ithreads build with 64 bit IVs
+on some 32 bit platforms. Notably, this caused the build to fail completely
+on sparc GNU/Linux. [RT #118055]
+
+=item *
+
Evaluating large hashes in scalar context is now much faster, as the number
of used chains in the hash is now cached for larger hashes. Smaller hashes
continue not to store it and calculate it when needed, as this saves one IV.
=item *
-Under copy-on-write builds (the default as of 5.20.0) C<< ${'_<-e'}[0] >>
-no longer gets mangled. This is the first line of input saved for the
-debugger's use for one-liners [perl #118627].
-
-=item *
-
Assigning a vstring to a tied variable or to a subroutine argument aliased
to a nonexistent hash or array element now works, without flattening the
vstring into a regular string.
=item *
-On non-threaded builds, setting C<${"_E<lt>filename"}> to a reference or
-typeglob no longer causes C<__FILE__> and some error messages to produce a
-corrupt string, and no longer prevents C<#line> directives in string evals from
-providing the source lines to the debugger. Threaded builds were unaffected.
-
-=item *
-
Enabling "used once" warnings no longer causes crashes on stash circularities
created at compile time (C<*Foo::Bar::Foo:: = *Foo::>).
=item *
-Starting with Perl 5.12, line numbers were off by one if the B<-d> switch was
-used on the #! line. Now they are correct.
-
-=item *
-
An optimization in Perl 5.18 made incorrect assumptions causing a bad
interaction with the L<Devel::CallParser> CPAN module. If the module was
loaded then lexical variables declared in separate statements following a
=item *
-C<*DB::DB = sub {} if 0> no longer stops Perl's debugging mode from finding
-C<DB::DB> subs declared thereafter.
-
-=item *
-
C<stat> and C<readline> remember the last handle used; the former
for the special C<_> filehandle, the latter for C<${^LAST_FH}>.
C<eval "*foo if 0"> where *foo was the last handle passed to C<stat>
=item *
-C<%{'_<...'}> hashes now set breakpoints on the corresponding C<@{'_<...'}>
-rather than whichever array C<@DB::dbline> is aliased to. [perl #119799]
-
-=item *
-
Setting C<$!> to EACCESS before calling C<require> could affect
C<require>'s behaviour. This has been fixed.
=item *
-That compile-time field checking also applies now to the C<%$obj{'key'}>
-syntax.
-
-=item *
-
A nonexistent array element with a large index passed to a subroutine that
ties the array and then tries to access the element no longer results in a
crash.
=item *
-C<<<`...`> here-docs (with backticks as the delimiters) now call
+C<<<<`...`> here-docs (with backticks as the delimiters) now call
C<readpipe> overrides. [perl #119827]
=item *
Strange vars like ties, overloads, or stringified refs (and in recent
perls, pure NOK vars) would generally do the wrong thing in formats
when the var is treated as a string and repeatedly chopped, as in
-^<<<~~ and similar. This has now been resolved.
+C<< ^<<<~~ >> and similar. This has now been resolved.
=item *
=item *
-A regression since v5.18.0 has been fixed in which C<qr/[[:^ascii:]]/d>
-failed to match any character in the range C<\x80> - C<\xFF> if its
-surrounding character class contained anything else. (That is, the bug
-didn't happen if the C<[:^ascii:]> was the only element of the character
-class.) [perl #120799]
-
-=item *
-
C<< readdir() >> now only sets C<$!> on error. C<$!> is no longer set
to C<EBADF> when then terminating C<undef> is read from the directory
unless the system call sets C<$!>. [perl #118651]
=item *
-Call set-magic when setting $DB::sub. [perl #121255]
-
-=item *
-
Fixed an alignment error when compiling regular expressions when built
with GCC on HP-UX 64-bit.
-=item *
-
-The debugger's "n" command now respects lvalue subroutines and steps over
-them [perl #118839].
-
=back
=head1 Known Problems