This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Version bump and perldelta for Carp
[perl5.git] / pod / perldelta.pod
index 288691e..a5ed058 100644 (file)
@@ -53,6 +53,21 @@ The C<"d"> modifier is used in the scope of C<use locale> to compile the
 regular expression as if it were not in that scope.
 See L<perlre/(?dlupimsx-imsx)>.
 
+=head2 C<\N{...}> now handles Unicode named character sequences
+
+Unicode has a number of named character sequences, in which particular sequences
+of code points are given names.  C<\N{...}> now recognizes these.
+See L<charnames>.
+
+=head2 New function C<charnames::string_vianame()>
+
+This function is a run-time version of C<\N{...}>, returning the string
+of characters whose Unicode name is its parameter.  It can handle
+Unicode named character sequences, whereas the pre-existing
+C<charnames::vianame()> cannot, as the latter returns a single code
+point.
+See L<charnames>.
+
 =head1 Security
 
 XXX Any security-related notices go here.  In particular, any security
@@ -72,7 +87,7 @@ not have to change (after this one time), as the stringification will
 automatically incorporate the new modifiers.
 
 Code that needs to work properly with both old- and new-style regexes
-can avoid the whole issue by using:
+can avoid the whole issue by using (for Perls since 5.9.5):
 
  use re qw(regexp_pattern);
  my ($pat, $mods) = regexp_pattern($re_ref);
@@ -82,8 +97,8 @@ return, C<$mods> will be a string containing all the non-default
 modifiers used when the regular expression was compiled, and C<$pattern>
 the actual pattern.
 
-If the actual stringification is important, you can use something like
-the following:
+If the actual stringification is important, or older Perls need to be
+supported, you can use something like the following:
 
     # Accept both old and new-style stringification
     my $modifiers = (qr/foobar/ =~ /\Q(?^/) ? '^' : '-xism';
@@ -154,6 +169,27 @@ XXX
 
 =item *
 
+C<Carp> has been upgraded from version 1.18 to 1.19.
+
+It no longer autovivifies the C<*CORE::GLOBAL::caller> glob, something it
+started doing in 1.18, which was released with perl 5.13.4
+L<[perl #78082]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=78082>
+
+=item *
+
+C<Data::Dumper> has been upgraded from version 2.128 to 2.129.
+
+C<Dumpxs> no longer crashes with globs returned by C<*$io_ref>
+L<[perl #72332]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72332>.
+
+=item *
+
+C<Digest::MD5> has been upgraded from version 2.40 to 2.50.
+
+It is now safe to use this module in combination with threads.
+
+=item *
+
 C<File::DosGlob> has been upgraded from version 1.02 to 1.03.
 
 It allows patterns containing literal parentheses (they no longer need to
@@ -172,6 +208,27 @@ L<[perl #71710]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71710>.
 
 =item *
 
+C<if> has been upgraded from version 0.05 to 0.06
+
+=item *
+
+C<IPC::Open3> has been upgraded from version 1.06 to 1.07.
+
+The internal C<xclose> routine now knows how to handle file descriptors, as
+documented, so duplicating STDIN in a child process using its file
+descriptor now works
+L<[perl #76474]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71710>.
+
+=item *
+
+C<Locale::Maketext> has been upgraded from version 1.15 to 1.16.
+
+It fixes an infinite loop in C<Locale::Maketext::Guts::_compile()> when
+working with tainted values
+(L<CPAN RT #40727|https://rt.cpan.org/Public/Bug/Display.html?id=40727>).
+
+=item *
+
 C<NEXT> has been upgraded from version 0.64 to 0.65.
 
 =item *
@@ -231,7 +288,8 @@ section.
 
 =item *
 
-XXX Description of the change here
+The documentation for the C<SvTRUE> macro was simply wrong in stating that
+get-magic is not processed. It has been corrected.
 
 =back
 
@@ -266,7 +324,24 @@ XXX Changes (i.e. rewording) of diagnostic messages go here
 
 =item *
 
-XXX
+The 'Layer does not match this perl' error message has been replaced with
+these more helpful messages:
+
+=over 4
+
+=item *
+
+PerlIO layer function table size (%d) does not match size expected by this
+perl (%d)
+
+=item *
+
+PerlIO layer instance size (%d) does not match size expected by this perl
+(%d)
+
+=back
+
+L<[perl #73754]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=73754>
 
 =back
 
@@ -388,6 +463,37 @@ be noted as well.
 See L</Regular expressions retain their localeness when interpolated>,
 above.
 
+=item *
+
+The C<sv_cmp_flags>, C<sv_cmp_locale_flags>, C<sv_eq_flags> and
+C<sv_collxfrm_flags> functions have been added. These are like their
+non-_flags counterparts, but allow one to specify whether get-magic is
+processed.
+
+The C<sv_cmp>, C<sv_cmp_locale>, C<sv_eq> and C<sv_collxfrm> functions have
+been replaced with wrappers around the new functions. 
+
+=item *
+
+A new C<sv_2bool_flags> function has been added.
+
+This is like C<sv_2bool>, but it lets the calling code decide whether
+get-magic is handled. C<sv_2bool> is now a macro that calls the new
+function.
+
+=item *
+
+A new macro, C<SvTRUE_nomg>, has been added.
+
+This is like C<SvTRUE>, except that it does not process magic. It uses the
+new C<sv_2bool_flags> function.
+
+=item *
+
+C<sv_catsv_flags> no longer calls C<mg_get> on its second argument (the
+source string) if the flags passed to it do not include SV_GMAGIC. So it
+now matches what the documentation says it does.
+
 =back
 
 =head1 Selected Bug Fixes
@@ -436,6 +542,49 @@ sometimes did not, depending on what order things happened to be arranged
 in memory
 L<[perl #71806]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71806>.
 
+=item *
+
+The C<y///> or C<tr///> operator now calls get-magic (e.g., the C<FETCH>
+method of a tie) on its left-hand side just once, not twice
+L<[perl #76814]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=76814>.
+
+=item *
+
+String comparison (C<eq>, C<ne>, C<lt>, C<gt>, C<le>, C<ge> and
+C<cmp>) and logical not (C<not> and C<!>) operators no longer call magic
+(e.g., tie methods) twice on their operands
+L<[perl #76814]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=76814>.
+
+This bug was introduced in an earlier 5.13 release, and does not affect
+perl 5.12.
+
+=item *
+
+When a tied (or other magic) variable is used as, or in, a regular
+expression, it no longer has its C<FETCH> method called twice
+L<[perl #76814]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=76814>.
+
+This bug was introduced in an earlier 5.13 release, and does not affect
+perl 5.12.
+
+=item *
+
+The C<-C> option can now be followed by other options
+L<[perl #72434]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72434>.
+
+=item *
+
+Assigning a glob to a PVLV used to convert it to a plain string. Now it
+works correctly, and a PVLV can hold a glob. This would happen when a
+nonexistent hash or array element was passed to a subroutine:
+
+  sub { $_[0] = *foo }->($hash{key});
+  # $_[0] would have been the string "*main::foo"
+
+It also happened when a glob was assigned to, or returned from, an element
+of a tied array or hash
+L<[perl #36051]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=36051>.
+
 =back
 
 =head1 Known Problems
@@ -462,6 +611,16 @@ XXX
 XXX If any significant core contributor has died, we've added a short obituary
 here.
 
+=head1 Errata
+
+=over 4
+
+=item *
+
+Fixed a typo in L<perl5135delta> regarding array slices and smart matching
+
+=back
+
 =head1 Acknowledgements
 
 XXX The list of people to thank goes here.