This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for 8c9d3376fbf
[perl5.git] / pod / perldelta.pod
index 42b1128..c59b99b 100644 (file)
@@ -1,5 +1,9 @@
 =encoding utf8
 
+=for comment
+To do:
+3f40aba3 Merge branch 'ebcdic' into blead
+
 =head1 NAME
 
 [ this is a template for a new perldelta file.  Any text flagged as XXX needs
@@ -39,12 +43,15 @@ platform to platform, from the 15 bits of C<rand()> on Win32 to
 Perl now uses its own internal C<drand48()> implementation on all
 platforms.  [perl #115928]
 
-=head2 64-bit array offsets
+=head2 Better 64-bit support
 
 On 64-bit platforms, the internal array functions now use 64-bit offsets,
 allowing Perl arrays to hold more than 2**31 elements, if you have the
 memory available.
 
+The regular expression engine now supporst strings longer than 2**31
+characters.  [perl #112790, #116907]
+
 =head1 Security
 
 XXX Any security-related notices go here.  In particular, any security
@@ -177,6 +184,11 @@ internally represented.
 
 =item *
 
+C<Carp> now takes care not to clobber the status variables C<$!> and
+C<$^E>.
+
+=item *
+
 C<Carp> now won't vivify the C<overload::StrVal> glob or subroutine or the
 C<overload> stash.
 
@@ -818,6 +830,77 @@ This has been fixed.  [perl #118931]
 On 64-bit platforms, large ranges like 1..1000000000000 no longer crash,
 but eat up all your memory instead.  [perl #119161]
 
+=item *
+
+C<__DATA__> now puts the C<DATA> handle in the right package, even if the
+current package has been renamed through glob assignment.
+
+=item *
+
+The string position set by C<pos> could shift if the string changed
+representation internally to or from utf8.  This could happen, e.g., with
+references to objects with string overloading.
+
+=item *
+
+Taking references to the return values of two C<pos> calls with the same
+argument, and then assigning a reference to one and C<undef> to the other,
+could result in assertion failures or memory leaks.
+
+=item *
+
+Elements of C<@-> and C<@+> now update correctly when they refer to
+nonexistent captures.  Previously, a referenced element (C<$ref = \$-[1]>) 
+could refer to the wrong match after subsequent matches.
+
+=item *
+
+When C<die>, C<last>, C<next>, C<redo>, C<goto> and C<exit> unwind the
+scope, it is possible for DESTROY recursively to call a subroutine or
+format that is currently being exited.  It that case, sometimes the lexical
+variables inside the sub would start out having values from the outer call,
+instead of being undefined as they should.  This has been fixed.
+[perl #119311].
+
+=item *
+
+C<${^MPEN>} is no longer treated as a synonym for C<${^MATCH}>.
+
+=item *
+
+Perl now tries a little harder to return the correct line number in
+C<(caller)[2]>.  [perl #115768]
+
+=item *
+
+Line numbers inside multiline quote-like operators are now reported correctly.  [perl #3643]
+
+=item *
+
+C<#line> directives inside code embedded in quote-like operators are now respected.
+
+=item *
+
+Perl 5.19.2 inadvertently stopped some lines of code from being available
+to the debugger if C<< => >> occurred at the beginning of a line and the
+previous line ended with a keyword.  This is now fixed.
+
+=item *
+
+An optimisation 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 C<my(...)> list might fail to be cleared on scope exit.
+
+=item *
+
+C<&xsub> and C<goto &xsub> calls now allow the called subroutine to
+autovivify elements of @_.
+
+=item *
+
+C<&xsub> and C<goto &xsub> no longer crash if C<*_> has been undefined and
+has no ARRAY entry (i.e., @_ does not exist).
+
 =back
 
 =head1 Known Problems