This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta: another to-do
[perl5.git] / pod / perldelta.pod
index 81a267a..e61dd43 100644 (file)
@@ -1,5 +1,13 @@
 =encoding utf8
 
+=for comment
+Stuff that needs to be done still:
+e82485c [MERGE] refactor pp_match(), pp_subst(), regexec()
+6136213 [perl #52000] Warn/abort on attempted perl exit
+cccbbce Reap child in case where exception has been thrown
+70502ce [perl #119101] Extraneous warnings in Parse::ErrorString::Perl
+c3923c3 reparse compile-time /(?{})/ in right scope
+
 =head1 NAME
 
 [ this is a template for a new perldelta file.  Any text flagged as XXX needs
@@ -127,11 +135,108 @@ XXX
 
 =item *
 
+L<B> has been upgraded from version 1.44 to 1.45.
+
+Calling the C<GV> method on C<B::CV> objects created from a lexical
+sub would return nonsense, possibly crashing perl. C<GV> now returns
+C<undef> for lexical subs. [perl #118525]
+
+Added the C<NAME_HEK> method to return the name of a lexical sub.
+
+=item *
+
+L<bignum> has been upgraded from version 0.35 to 0.36.
+
+L<bigrat> wasn't correctly updating an internal variable when C<use>d
+with a C<lib> option.
+
+=item *
+
+L<Carp> has been upgraded from 1.30 to 1.31
+
+L<Carp> now handles objects with string overloads. It also allows objects
+to specify how they appear in the stack dump with a C<CARP_TRACE> method,
+and also allows the user to specify their own formatter for objects without
+C<CARP_TRACE> as well as other references. [perl #92446]
+
+=item *
+
+L<Compress::Raw::Bzip2> has been upgraded from 2.061 to 2.062.
+
+=item *
+
+L<Compress::Raw::Zlib> has been upgraded from 2.061 to 2.062.
+
+=item *
+
+L<Config::Perl::V> has been upgraded from version 0.18 to 0.19.
+
+=item *
+
 L<Data::Dumper> has been upgraded from version 2.147 to 2.148.
 
 The compatbility of the XS implementation with the pure perl version
 under C<Useqq> has been improved. [perl #118933]
 
+=item *
+
+L<Devel::Peek> has been upgraded from version 1.12 to 1.13.
+
+The C<SvREFCNT_inc()> and C<SvREFCNT_dec()> functions have been
+removed and C<SvREFCNT()> will now work on non-scalars. [perl #117793]
+
+=item *
+
+L<Exporter> has been upgraded from version 5.68 to 5.69.
+
+L<Exporter> would ignore custom C<$SIG{__WARN__}> handlers in
+C<Exporter::Heavy>. [perl #39739]
+
+=item *
+
+The IO-Compress module collection has been upgraded from 2.061 to 2.062.
+
+=item *
+
+L<IPC::Cmd> has been upgraded from version 0.82 to 0.84.
+
+C<run_forked> has various fixes/improvements, L<Socket> is only used where
+needed and a regression introduced in 0.78 has been fixed.
+
+=item *
+
+The libnet module collection has been upgraded from version 1.22 to 1.23.
+
+=item *
+
+L<List::Util> has been upgraded from version 1.27 to 1.30
+
+L<List::Util> now includes C<pairgrep>, C<pairmap>, C<pairs>, C<pairkeys>,
+C<pairvalues> and C<pairfirst> functions that operate on even-sized lists of
+pairs.
+
+=item *
+
+L<parent> has been upgraded from version 0.225 to 0.226.
+
+=item *
+
+L<Socket> has been upgraded from version 2.010 to 2.011.
+
+Handle FreeBSD (or other platforms) returning shorter AF_UNIX sockaddr
+structures due to embedded sun_len. [cpan #86613]
+
+=item *
+
+L<Storable> has been upgraded from version 2.45 to 2.46.
+
+Avoid creating temporary objects for STORABLE_attach when they aren't
+required. [perl #118907]
+
+=item *
+
+L<Time::Piece> has been upgraded from version 1.21 to 1.22.
+
 =back
 
 =head2 Removed Modules and Pragmata
@@ -163,13 +268,19 @@ XXX Changes which significantly change existing files in F<pod/> go here.
 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
 section.
 
-=head3 L<XXX>
+=head3 L<perlopentut>
 
 =over 4
 
 =item *
 
-XXX Description of the change here
+The C<open> tutorial has been completely rewriten by Tom Christiansen, and now
+focuses on covering only the basics, rather than providing a comprehensive
+reference to all things openable.  This rewrite came as the result of a
+vigorous discussion on perl5-porters kicked off by a set of improvements
+written by Alexander Hartmaier to the existing C<perlopentut>.  A "more than
+you ever wanted to know about C<open>" document may follow in subsequent
+versions of perl.
 
 =back
 
@@ -334,7 +445,8 @@ well.
 
 =item *
 
-XXX
+C<sv_pos_b2u_flags> has been added to the API.  It is similar to
+C<sv_pos_b2u>, but supports long strings on 64-bit platforms.
 
 =back
 
@@ -349,7 +461,85 @@ files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
 
 =item *
 
-XXX
+Autovivifying a subroutine stub via C<\&$glob> started causing crashes in
+Perl 5.18.0 if the $glob was merely a copy of a real glob, i.e., a scalar
+that had had a glob assigned to it.  This has been fixed [perl #119051].
+
+=item *
+
+On 64-bit platforms C<pos> can now be set to a value higher than 2**31-1
+[perl #72766].
+
+=item *
+
+Perl used to leak an implementation detail when it came to referencing the
+return values of certain operators.  C<for ($a+$b) { warn \$_; warn \$_ }>
+used to display two different memory addresses, because the C<\> operator
+was copying the variable.  Under threaded builds, it would also happen for
+constants (C<for(1) { ... }>).  This has been fixed [perl #21979, #78194,
+#89188, #109746, #114838, #115388].
+
+=item *
+
+The range operator C<..> was returning the same modifiable scalars with
+each call, unless it was the only thing in a C<foreach> loop header.  This
+meant that changes to values within the list returned would be visible the
+next time the operator was executed [perl #3105].
+
+=item *
+
+Constant folding and subroutine inlining no longer cause operations that
+would normally return new modifiable scalars to return read-only values
+instead.
+
+=item *
+
+Closures of the form C<sub () { $some_variable }> are no longer inlined,
+causing changes to the variable to be ignored by callers of the subroutine
+[perl #79908].
+
+=item *
+
+Return values of certain operators such as C<ref> would sometimes be shared
+between recursive calls to the same subroutine, causing the inner call to
+modify the value returned by C<ref> in the outer call.  This has been
+fixed.
+
+=item *
+
+C<__PACKAGE__> and constants returning a package name or hash key are now
+consistently read-only.  In various previous Perl releases, they have
+become mutable under certain circumstances.
+
+=item *
+
+C</$qr/p> was broken in Perl 5.18.0; the C</p> flag was ignored.  This has
+been fixed [perl #118213].
+
+=item *
+
+Starting in v5.18.0, a construct like C</[#](?{})/x> would have its C<#>
+incorrectly interpreted as a comment.  The code block would be skipped,
+unparsed.  This has been corrected.
+
+=item *
+
+Starting in Perl 5.001, a regular expression like C</[#$a]/x> or
+C</[#]$a/x> would have its C<#> incorrectly interpreted as a comment, so
+the variable would not interpolate.  This has been corrected [perl #45667].
+
+=item *
+
+On non-threaded builds, setting C<${"_<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::>).
 
 =back