This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for 8e88cfee26d866223a6b3bfffce6270271de00db
[perl5.git] / pod / perldelta.pod
index 899e4ed..5415bbc 100644 (file)
@@ -1,8 +1,7 @@
 =encoding utf8
 
 =for comment
-This has been completed up to 7c7df81, except for:
-d9a4b459f94297889956ac3adc42707365f274c2
+This has been completed up to 91fad77.
 
 =head1 NAME
 
@@ -91,6 +90,54 @@ L<perlunicode/The "Unicode Bug"> for details.)  If their is a
 possibility that your code will process Unicode strings, you are
 B<strongly> encouraged to use this subpragma to avoid nasty surprises.
 
+This availability of this should strongly affect the whole tone of
+various documents, such as L<perlunicode> and L<perluniintro>, but this
+work has not been done yet.
+
+=head2 Exception Handling Backcompat Hack
+
+When an exception is thrown in an C<eval BLOCK>, C<$@> is now set before
+unwinding, as well as being set after unwinding as the eval block exits.  This
+early setting supports code that has historically treated C<$@> during unwinding
+as an indicator of whether the unwinding was due to an exception.  These modules
+had been broken by 5.13.1's change from setting C<$@> early to setting it late.
+This double setting arrangement is a stopgap until the reason for unwinding can
+be made properly introspectable.  C<$@> has never been a reliable indicator of
+this.
+
+=head2 printf-like functions understand size modifiers "hh", "z", "t", and sometimes "j"
+
+Perl's printf and sprintf operators, and Perl's internal printf replacement
+function, now understand the C90 size modifiers "hh" (C<char>), "z"
+(C<size_t>), and "t" (C<ptrdiff_t>).  Also, when compiled with a C99
+compiler, Perl now understands the size modifier "j" (C<intmax_t>).
+
+So, for example, on any modern machine, C<sprintf('%hhd', 257)> returns '1'.
+
+=head2 DTrace probes now include package name
+
+The DTrace probes now include an additional argument (C<arg3>) which contains
+the package the subroutine being entered or left was compiled in.
+
+For example using the following DTrace script:
+
+  perl$target:::sub-entry
+  {
+      printf("%s::%s\n", copyinstr(arg0), copyinstr(arg3));
+  }
+
+and then running:
+
+  perl -e'sub test { }; test'
+
+DTrace will print:
+
+  main::test
+
+=head2 Stacked labels
+
+Multiple statement labels can now appear before a single statement.
+
 =head1 Security
 
 XXX Any security-related notices go here.  In particular, any security
@@ -116,6 +163,19 @@ If it is absolutely necessary to have empty attribute lists (for example,
 because of a code generator) then avoid the error by adding a space before
 the C<=>.
 
+=head2 Run-time code block in regular expressions
+
+Code blocks in regular expressions (C<(?{...})> and C<(??{...})>) used not
+to inherit any pragmata (strict, warnings, etc.) if the regular expression
+was compiled at run time as happens in cases like these two:
+
+  use re 'eval';
+  $foo =~ $bar; # when $bar contains (?{...})
+  $foo =~ /$bar(?{ $finished = 1 })/;
+
+This was a bug, which has now been fixed. But it has the potential to break
+any code that was relying on this bug.
+
 =head1 Deprecations
 
 XXX Any deprecated features, syntax, modules etc. should be listed here.
@@ -195,10 +255,52 @@ XXX
 
 =item *
 
+C<Archive::Tar> has been upgraded from version 1.72 to 1.74
+
+=item *
+
+C<B::Concise> has been upgraded from version 0.81 to 0.82.
+
+It no longer produces mangled output with the C<-tree> option
+L<[perl #80632]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=80632>.
+
+=item *
+
+C<Devel::SelfStubber> has been upgraded from version 1.04 to 1.05.
+
+=item *
+
+C<Digest::SHA> has been upgraded from 5.48 to 5.50
+
+shasum now more closely mimics sha1sum/md5sum and Addfile
+accepts all POSIX filenames.
+
+=item *
+
+C<Dumpvalue> has been upgraded from version 1.14 to 1.15.
+
+=item *
+
+C<Env> has been upgraded from version 1.01 to 1.02.
+
+=item *
+
+C<ExtUtils::CBuilder> has been upgraded from 0.2703 to 0.2802
+
+=item *
+
+C<ExtUtils::Embed> has been upgraded from 1.29 to 1.30.
+
+=item *
+
 C<if> has been upgraded from 0.06 to 0.0601.
 
 =item *
 
+C<Devel::SelfStubber> has been upgraded from version 1.03 to 1.04.
+
+=item *
+
 C<IPC::Cmd> has been upgraded from 0.64 to 0.66
 
 Resolves an issue with splitting Win32 command lines
@@ -206,6 +308,10 @@ and documentation enhancements.
 
 =item *
 
+C<IPC::Open3> has been upgraded from 1.07 to 1.08.
+
+=item *
+
 C<Locale::Codes> has been upgraded from version 3.14 to 3.15
 
 =item *
@@ -229,10 +335,18 @@ L<[perl #68654]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68654>.
 
 =item *
 
+C<Net::Ping> has been upgraded from 2.36 to 2.37.
+
+=item *
+
 C<overload> has been upgraded from 1.11 to 1.12.
 
 =item *
 
+C<PerlIO::encoding> has been upgraded from 0.13 to 0.14.
+
+=item *
+
 C<PerlIO::scalar> has been upgraded from 0.10 to 0.11.
 
 A C<read> after a C<seek> beyond the end of the string no longer thinks it
@@ -258,6 +372,10 @@ correctly. The Storable minor version number changed as a result -- this means
 Storable users that set C<$Storable::accept_future_minor> to a C<FALSE> value
 will see errors (see L<Storable/FORWARD COMPATIBILITY> for more details).
 
+Freezing no longer gets confused if the Perl stack gets reallocated
+during freezing
+L<[perl #80074]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=80074>.
+
 =item *
 
 C<Time::HiRes> has been upgraded from 1.9721 to 1.9721_01.
@@ -274,6 +392,10 @@ C<Unicode::UCD> has been upgraded from 0.29 to 0.30.
 
 C<version> has been upgraded from 0.82 to 0.86.
 
+=item *
+
+C<Win32> has been upgraded from 0.039 to 0.040.
+
 =back
 
 =head2 Removed Modules and Pragmata
@@ -386,6 +508,12 @@ L</Platform Support> section, instead.
 
 =item *
 
+The C<Encode> module can now (once again) be included in a static Perl
+build.  The special-case handling for this situation got broken in Perl
+5.11.0, and has now been repaired.
+
+=item *
+
 XXX
 
 =back
@@ -456,6 +584,13 @@ L</Modules and Pragmata> section.
 The NetBSD hints file has been changed to make the system's malloc the
 default.
 
+=item Windows
+
+The option to use an externally-supplied C<crypt()>, or to build with no
+C<crypt()> at all, has been removed.  Perl supplies its own C<crypt()>
+implementation for Windows, and the political situation that required
+this part of the distribution to sometimes be omitted is long gone.
+
 =back
 
 =head1 Internal Changes
@@ -478,6 +613,13 @@ C<sv_magicext> attaches magic of a certain type and with a given virtual table
 to a scalar. This eliminates the need for extensions to walk the list of
 C<MAGIC> pointers of an C<SV> to find the magic that belongs to them.
 
+=item *
+
+The C<parse_fullexpr()>, C<parse_listexpr(), C<parse_termexpr()> and
+C<parse_arithexpr()> functions have been added.
+
+These are for parsing expressions at various precedence levels.
+
 =back
 
 =head1 Selected Bug Fixes
@@ -536,7 +678,8 @@ L<[perl #63540]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=63540>.
 =item *
 
 Calling a closure prototype (what is passed to an attribute handler for a
-closure) now results in a "Closure prototype called" error message
+closure) now results in a "Closure prototype called" error message instead
+of a crash
 L<[perl #68560]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68560>.
 
 =item *
@@ -559,6 +702,62 @@ characters that have multi-character matches, as this one does, is
 problematical in Perl.
 L<[perl #58182]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=58182>.
 
+=item *
+
+Mentioning a read-only lexical variable from the enclosing scope in a
+string C<eval> would cause the variable to become writable
+L<[perl #19135]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=19135>.
+
+=item *
+
+C<state> can now be used with attributes. It used to mean the same thing as
+C<my> if attributes were present
+L<[perl #68658]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68658>.
+
+=item *
+
+Expressions like C<< @$a > 3 >> no longer cause C<$a> to be mentioned in
+the "Use of uninitialized value in numeric gt" warning when C<$a> is
+undefined (since it is not part of the C<E<gt>> expression, but the operand
+of the C<@>)
+L<[perl #72090]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72090>.
+
+=item *
+
+C<require> no longer causes C<caller> to return the wrong file name for
+the scope that called C<require> and other scopes higher up that had the
+same file name
+L<[perl #68712]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68712>.
+
+=item *
+
+The ref types in the typemap for XS bindings now support magical variables
+L<[perl #72684]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72684>.
+
+=item *
+
+Match variables (e.g., C<$1>) no longer persist between calls to a sort
+subroutine
+L<[perl #76026]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=76026>.
+
+=item *
+
+The C<B> module was returning B::OPs instead of B::LOGOPs for C<entertry>
+L<[perl #80622]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=80622>.
+
+This was due to a bug in the perl core, not in C<B> itself.
+
+=item *
+
+Some numeric operators were converting integers to floating point,
+resulting in loss of precision on 64-bit platforms
+L<[perl #77456]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77456>.
+
+=item *
+
+The fallback behaviour of overloading on binary operators was asymmetric
+L<[perl #71286]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=71286>.
+
 =back
 
 =head1 Known Problems