This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update the perldelta for ExtUtils::Constant.
[perl5.git] / pod / perldelta.pod
index 30455c6..a539d84 100644 (file)
@@ -1,12 +1,8 @@
 =encoding utf8
 
 =for comment
-This has been completed up to 578895fb, except for:
-04777d295957ad270188e4debf51b523e07cc5b0
-c565ab54dc649bb62cd4d57149d7b2abb21df5f3
-1c8d11ca3d0ce8bc11562f159b94c2c7e62dea6c
-51698cb360d5bba06e12496ef9c7bf82e3352b71
-0c4d3b5ea916cf640ea163c5a6bcffefade55a1b
+This has been completed up to f869c5854, except for:
+249534c343ab758089ce40786709465e328c8b2d
 I may have missed a few module version bumps.
 
 =head1 NAME
@@ -141,6 +137,47 @@ introspection of the current phase of the perl interpreter. It's explained in
 detail in L<perlvar/"${^GLOBAL_PHASE}"> and
 L<perlmod/"BEGIN, UNITCHECK, CHECK, INIT and END">.
 
+=head2 Unicode Version 6.0 is now supported (mostly)
+
+Perl comes with the Unicode 6.0 data base, with one exception noted
+below.
+See L<http://unicode.org/versions/Unicode6.0.0> for details on the new
+release.  Perl does not support any Unicode provisional properties,
+including the new ones for this release, but their database files are
+packaged with Perl.
+
+Unicode 6.0 has chosen to use the name C<BELL> for the character at U+1F514,
+which is a symbol that looks like a bell, and used in Japanese cell
+phones.  This conflicts with the long-standing Perl usage of having
+C<BELL> mean the ASCII C<BEL> character, U+0007.  In Perl 5.14,
+C<\N{BELL}> will continue to mean U+0007, but its use will generate a
+deprecated warning message, unless such warnings are turned off.  The
+new name for U+0007 in Perl will be C<ALERT>, which corresponds nicely
+with the existing shorthand sequence for it, C<"\a">.  C<\N{BEL}> will
+mean U+0007, with no warning given.  The character at U+1F514 will not
+have a name in 5.14, but can be referred to by C<\N{U+1F514}>.  The plan
+is that in Perl 5.16, C<\N{BELL}> will refer to U+1F514, and so all code
+that uses C<\N{BELL}> should convert by then to using C<\N{ALERT}>,
+C<\N{BEL}>, or C<"\a"> instead.
+
+=head2 Improved support for custom OPs
+
+Custom ops can now be registered with the new C<custom_op_register> C
+function and the C<XOP> structure. This will make it easier to add new
+properties of custom ops in the future. Two new properties have been added
+already, C<xop_class> and C<xop_peep>.
+
+C<xop_class> is one of the OA_*OP constants, and allows L<B> and other
+introspection mechanisms to work with custom ops that aren't BASEOPs.
+C<xop_peep> is a pointer to a function that will be called for ops of this
+type from C<Perl_rpeep>.
+
+See L<perlguts/Custom Operators> and L<perlapi/Custom Operators> for more
+detail.
+
+The old C<PL_custom_op_names>/C<PL_custom_op_descs> interface is still
+supported but discouraged.
+
 =head1 Security
 
 XXX Any security-related notices go here.  In particular, any security
@@ -192,6 +229,9 @@ The C<*$glob> on the second line returns a new immutable glob. That new
 glob is made an alias to C<*bar>. Then it is discarded. So the second
 assignment has no effect.
 
+It also means that C<tie $handle> will now tie C<$handle> as a scalar, even
+if it has had a glob assigned to it.
+
 The upside to this incompatible change is that bugs
 L<[perl #77496]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77496>,
 L<[perl #77502]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77502>,
@@ -204,6 +244,16 @@ and maybe others, too, have been fixed.
 See L<http://rt.perl.org/rt3/Public/Bug/Display.html?id=77810> for even
 more detail.
 
+=head2 Clearing stashes
+
+Stash list assignment C<%foo:: = ()> used to make the stash anonymous
+temporarily while it was being emptied. Consequently, any of its
+subroutines referenced elsewhere would become anonymous (showing up as
+"(unknown)" in C<caller>). Now they retain their package names, such that
+C<caller> will return the original sub name if there is still a reference
+to its typeglob, or "foo::__ANON__" otherwise
+L<[perl #79208]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=79208>.
+
 =head1 Deprecations
 
 XXX Any deprecated features, syntax, modules etc. should be listed here.
@@ -212,6 +262,12 @@ listed as an updated module in the L</Modules and Pragmata> section.
 
 [ List each deprecation as a =head2 entry ]
 
+=head2 C<\N{BELL}> is deprecated
+
+This is because Unicode is using that name for a different character.
+See L</Unicode Version 6.0 is now supported (mostly)> for more
+explanation.
+
 =head1 Performance Enhancements
 
 XXX Changes which enhance performance without changing behaviour go here. There
@@ -223,7 +279,10 @@ may well be none in a stable release.
 
 =item *
 
-XXX
+When an object has many weak references to it, freeing that object
+can under some some circumstances take O(N^2) time to free (where N is the
+number of references). The number of circumstances has been reduced.
+L<[perl #75254]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75254>.
 
 =back
 
@@ -275,11 +334,21 @@ executable.
 
 =item *
 
-C<B> has been upgraded from 1.24 to 1.25.
+C<Archive::Tar> has been upgraded from 1.68 to 1.72
+
+This adds the ptargrep utility for using regular expressions against 
+the contents of files in a tar archive.
+
+=item *
+
+C<B> has been upgraded from 1.24 to 1.26.
 
 It no longer crashes when taking apart a C<y///> containing characters
 outside the octet range or compiled in a C<use utf8> scope.
 
+The size of the shared object has been reduced by about 40%, with no
+reduction in functionality.
+
 =item *
 
 C<B::Deparse> has been upgraded from 0.99 to 1.01.
@@ -327,6 +396,16 @@ It fixes a buffer overflow when passed a very long file name.
 
 C<ExtUtils::Constant> has been upgraded from 0.22 to 0.23.
 
+The C<AUTOLOAD> helper code generated by C<ExtUtils::Constant::ProxySubs>
+can now C<croak> for missing constants, or generate a complete C<AUTOLOAD>
+subroutine in XS, allowing simplification of many modules that use it.
+(C<Fcntl>, C<File::Glob>, C<GDBM_File>, C<I18N::Langinfo>, C<POSIX>, C<Socket>)
+
+C<ExtUtils::Constant::ProxySubs> can now optionally push the names of all
+constants onto the package's C{@EXPORT_OK}. This has been used to replace
+less space-efficient code in C<B>, helping considerably shrink the size of its
+shared object.
+
 =item *
 
 C<Fcntl> has been upgraded from 1.09 to 1.10.
@@ -375,16 +454,12 @@ C<Locale::Maketext> has been upgraded from 1.16 to 1.17.
 
 =item *
 
-C<Math::BigInt> has been upgraded from 1.97 to 1.98.
-
-XXX Should the changes be listed here?
+C<Math::BigInt> has been upgraded from 1.97 to 1.99.
 
 =item *
 
 C<Math::BigInt::FastCalc> has been upgraded from 0.22 to 0.24.
 
-XXX Should the changes be listed here?
-
 =item *
 
 C<MIME::Base64> has been upgraded from 3.09 to 3.10
@@ -596,13 +671,14 @@ here. Most of these are built within the directories F<utils> and F<x2p>.
 entries for each change
 Use L<XXX> with program names to get proper documentation linking. ]
 
-=head3 L<XXX>
+=head3 L<ptargrep>
 
 =over 4
 
 =item *
 
-XXX
+L<ptargrep> is a utility to apply pattern matching to the contents of files 
+in a tar archive. It comes with C<Archive::Tar>.
 
 =back
 
@@ -637,10 +713,15 @@ that they represent may be covered elsewhere.
 
 =item *
 
+The new F<t/mro/isa_aliases.t> has been added, which tests that
+C<*Foo::ISA = *Bar::ISA> works properly.
+
+=item *
+
 F<t/mro/isarev.t> has been added, which tests that C<PL_isarev> (accessible
 at the Perl level via C<mro::get_isarev>) is updated properly.
 
-=item
+=item *
 
 F<t/run/switchd-78586.t> has been added, which tests that
 L<[perl #78586]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78586>
@@ -697,6 +778,15 @@ Directory handles are now properly cloned when threads are created. In perl
 5.13.6, child threads simply stopped inheriting directory handles. In
 previous versions, threads would share handles, resulting in crashes.
 
+Support for building with Visual C++ 2010 is now underway, but is not yet
+complete. See F<README.win32> for more details.
+
+=item VMS
+
+Record-oriented files (record format variable or variable wih fixed control)
+opened for write by the perlio layer will now be line buffered to prevent the
+introduction of spurious line breaks whenever the perlio buffer fills up.
+
 =back
 
 =head1 Internal Changes
@@ -938,8 +1028,31 @@ C<undef *Foo::> and C<undef *Foo::ISA> and C<delete $package::{ISA}>
 used not to update the internal isa caches if the
 stash or C<@ISA> array had a reference elsewhere. In
 fact, C<undef *Foo::ISA> would stop a new C<@Foo::ISA> array from updating
-caches
-L<[perl #79024]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=79024>.
+caches.
+
+=item *
+
+C<@ISA> arrays can now be shared between classes via
+C<*Foo::ISA = \@Bar::ISA> or C<*Foo::ISA = *Bar::ISA>
+L<[perl #77238]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77238>.
+
+=item *
+
+The parser no longer hangs when encountering certain Unicode characters,
+such as U+387
+L<[perl #74022]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=74022>.
+
+=item *
+
+C<formline> no longer crashes when passed a tainted format picture. It also
+taints C<$^A> now if its arguments are tainted
+L<[perl #79138]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=79138>.
+
+=item *
+
+A signal handler called within a signal handler could cause leaks or
+double-frees. Now fixed.
+L<[perl #76248]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=76248>.
 
 =back