=encoding utf8
=for comment
-This has been completed up to 5dca8ed9d28, except for
+This has been completed up to 8d0b139, except for
b0f2e9e nwclark Fix two bugs related to pod files outside of pod/ (important enough?)
43d9ecf jpeacock Set all version object math ops to noop
f300909 smueller EU::ParseXS: Silence warning (probably unnecessary)
that holds the object to which the variable is tied. This allows ties to
be weakened with C<Scalar::Util::weaken(tied $tied_variable)>.
-=head2 Lvalue C<scalar>
-
-C<scalar> can now be used as an lvalue. You might consider this a new
-feature (which is why it is listed in this section), but the author of
-the change considered it a bug fix, since C<scalar> is only supposed to be
-setting scalar context, not changing lvalueness [perl #24346].
-
=head1 Security
XXX Any security-related notices go here. In particular, any security
Automatically generated file handles are now named __ANONIO__ when the
variable name cannot be determined, rather than $__ANONIO__.
+=head2 Last-accessed filehandle
+
+Perl has an internal variable that stores the last filehandle to be
+accessed. It is used by C<$.> and by C<tell> and C<eof> without arguments.
+
+It used to be possible to set it to a glob copy and then modify that glob
+copy to be something other than a glob, and still have it as the
+last-accessed filehandle after assigning a glob to it again:
+
+ my $foo = *STDOUT; # $foo is a glob copy
+ <$foo>; # $foo is now the last-accessed handle
+ $foo = 3; # no longer a glob
+ $foo = *STDERR; # still the last-accessed handle
+
+Now the C<$foo = 3> assignment unset that internal variable, so there is no
+last-accessed filehandle, just as if C<< <$foo> >> had never happened.
+
=head2 XS API tweak
The C<newCONSTSUB_flags> C-level function, added in 5.15.4, now has a
Perl 5.12.0 sped up the destruction of objects whose classes define empty
C<DESTROY> methods (to prevent autoloading), simply by not calling such
empty methods. This release takes this optimisation a step further, by not
-calling any C<DESTROY> method that begins with an C<return> statement.
+calling any C<DESTROY> method that begins with a C<return> statement.
This can be useful for destructors that are only used for debugging:
use constant DEBUG => 1;
=item *
-Assignment to a substring in void context is now more than twice its
+Assignment to C<substr> in void context is now more than twice its
previous speed. Instead of creating and returning a special lvalue scalar
that is then assigned to, C<substr> modifies the original string itself.
C<&{&}> and C<& &>, which are calls to the subroutine named "&", believe it
or not, were being deparsed as C<&&>.
+=item C<require $this + $that>
+
+In Perl 5.14, C<require> followed by any binary operator started deparsing
+as C<no>.
+
=back
=item *
+L<Carp> has been upgraded from version 1.23 to version 1.24.
+
+It now tacks the last-accessed filehandle and line number on to the end of
+the error message, just like C<die> [perl #96672].
+
+=item *
+
L<Compress::Raw::Zlib> has been upgraded from version 2.042 to version 2.045.
=item *
=item *
+L<diagnostics> has been upgraded from version 1.25 to version 1.26.
+
+It now understands the "%X" format code, which some error messages started
+using in Perl 5.14.0.
+
+=item *
+
L<Digest::SHA> has been upgraded from version 5.63 to version 5.70.
Added BITS mode to addfile method and shasum which makes partial-byte inputs
extended to apply also to user-defined subroutines with a (;$) prototype,
and not just to built-in functions.
+=item *
+
+The error messages for using C<default> and C<when> outside of a
+topicalizer have been standardised to match the messages for C<continue>
+and loop controls. They now read 'Can't "default" outside a topicalizer'
+and 'Can't "when" outside a topicalizer'. They both used to be 'Can't use
+when() outside a topicalizer' [perl #91514].
+
=back
=head1 Utility Changes
=item *
The "c [line num]" debugger command was broken by other debugger changes
-release in 5.15.3. This is now fixed.
+release in 5.15.3. This is now fixed.
=item *
Breakpoints were not properly restored after a debugger restart using the
-"R" command. This was broken in 5.15.3. This is now fixed.
+"R" command. This was broken in 5.15.3. This is now fixed.
+
+=item *
+
+The debugger prompt did not display the current line in. This was broken
+in 5.15.3. This is now fixed.
+
+=item *
+
+Class method calls still suffered from the Unicode bug with Latin-1 package
+names. This was missed in the Unicode package name cleanup in 5.15.4
+[perl #105922].
+
+=item *
+
+The debugger no longer tries to do C<local $_> when dumping data
+structures.
+
+=item *
+
+Calling C<readline($fh)> where $fh is a glob copy (e.g., after
+C<$fh = *STDOUT>), assigning something other than a glob to $fh, and then
+freeing $fh (e.g., by leaving the scope where it is defined) no longer
+causes the internal variable used by C<$.> (C<PL_last_in_gv>) to point to
+a freed scalar, that could be reused for some other glob, causing C<$.> to
+use some unrelated filehandle [perl #97988].
+
+=item *
+
+A regression in 5.14 caused these statements not to set the internal
+variable that holds the handle used by C<$.>:
+
+ my $fh = *STDOUT;
+ tell $fh;
+ eof $fh;
+ seek $fh, 0,0;
+ tell *$fh;
+ eof *$fh;
+ seek *$fh, 0,0;
+ readline *$fh;
+
+This is now fixed, but C<tell *{ *$fh }> still has the problem, and it is
+not clear how to fix it [perl #106536].
=item *
-The debugger prompt did not display the current line in. This was broken in
-5.15.3. This is now fixed.
+Version comparisons, such as those that happen implicitly with
+C<use v5.43>, no longer cause locale settings to change [perl #105784].
=back