This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for b846c0c86e5
[perl5.git] / pod / perldelta.pod
index fe9031d..86ea9a9 100644 (file)
@@ -1,5 +1,11 @@
 =encoding utf8
 
+=for comment
+To do:
+3f40aba3 Merge branch 'ebcdic' into blead
+df8c7dee Fix segfault in filehandle duplication
+b66f3475 Fix PerlIO_get_cnt and friends
+
 =head1 NAME
 
 [ this is a template for a new perldelta file.  Any text flagged as XXX needs
@@ -39,12 +45,20 @@ 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]
+
+=head2 New slice syntax
+
+The new C<%hash{...}> and C<@array[...]> syntax returns a list of key/value
+(or index/value) pairs.
+
 =head1 Security
 
 XXX Any security-related notices go here.  In particular, any security
@@ -177,6 +191,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.
 
@@ -279,10 +298,10 @@ full details.
 
 =item *
 
-L<ExtUtils::ParseXS> has been upgraded from version 3.21 to 3.22.
+L<ExtUtils::ParseXS> has been upgraded from version 3.21 to 3.23.
 
-No changes have been made to the installed code other than the version bump to
-keep in sync with the latest CPAN release.
+Unquoted "here-doc" markers for typemaps can now be optionally followed by
+a semicolon, just like quoted markers.  [perl #119761]
 
 =item *
 
@@ -829,6 +848,92 @@ 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 *
+
+Line numbers are now correct inside the second here-doc when two here-doc
+markers occur on the same line.
+
+=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 *
+
+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 *
+
+Perl 5.19.2 allowed the PERL5DB environment variable to contain multiple
+lines of code.  But those lines were not made available to the debugger.
+Now the are all stuffed into line number 0, accessible via C<$dbline[0]>
+in the debugger.
+
+=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).
+
+=item *
+
+C<&xsub> and C<goto &xsub> now work with tied @_.
+
+=item *
+
+Overlong identifiers no longer cause a buffer overflow (and a crash).  They
+started doing so in Perl 5.18.
+
 =back
 
 =head1 Known Problems