diff options
Diffstat (limited to 'Master/tlpkg/tlperl/lib/pods/perl5137delta.pod')
-rw-r--r-- | Master/tlpkg/tlperl/lib/pods/perl5137delta.pod | 945 |
1 files changed, 945 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl/lib/pods/perl5137delta.pod b/Master/tlpkg/tlperl/lib/pods/perl5137delta.pod new file mode 100644 index 00000000000..0a65b4365a9 --- /dev/null +++ b/Master/tlpkg/tlperl/lib/pods/perl5137delta.pod @@ -0,0 +1,945 @@ +=encoding utf8 + +=head1 NAME + +perl5137delta - what is new for perl v5.13.7 + +=head1 DESCRIPTION + +This document describes differences between the 5.13.6 release and +the 5.13.7 release. + +If you are upgrading from an earlier release such as 5.13.5, first read +L<perl5136delta>, which describes differences between 5.13.5 and +5.13.6. + +=head1 Core Enhancements + +=head2 Single term prototype + +The C<+> prototype is a special alternative to C<$> that will act like +C<\[@%]> when given a literal array or hash variable, but will otherwise +force scalar context on the argument. This is useful for functions which +should accept either a literal array or an array reference as the argument: + + sub smartpush (+@) { + my $aref = shift; + die "Not an array or arrayref" unless ref $aref eq 'ARRAY'; + push @$aref, @_; + } + +When using the C<+> prototype, your function must check that the argument +is of an acceptable type. + +=head2 C<use re '/flags';> + +The C<re> pragma now has the ability to turn on regular expression flags +till the end of the lexical scope: + + use re '/x'; + "foo" =~ / (.+) /; # /x implied + +See L<re/"'/flags' mode"> for details. + +=head2 Statement labels can appear in more places + +Statement labels can now occur before any type of statement or declaration, +such as C<package>. + +=head2 C<use feature "unicode_strings"> now applies to more regex matching + +Another chunk of the L<perlunicode/The "Unicode Bug"> is fixed in this +release. Now, regular expressions compiled within the scope of the +"unicode_strings" feature (or under the "u" regex modifier (specifiable +currently only with infix notation C<(?u:...)> or via C<use re '/u'>) +will match the same whether or not the target string is encoded in utf8, +with regard to C<[[:posix:]]> character classes + +Work is underway to add the case sensitive matching to the control of +this feature, but was not complete in time for this dot release. + +=head2 Array and hash container functions accept references + +All built-in functions that operate directly on array or hash +containers now also accept hard references to arrays or hashes: + + |----------------------------+---------------------------| + | Traditional syntax | Terse syntax | + |----------------------------+---------------------------| + | push @$arrayref, @stuff | push $arrayref, @stuff | + | unshift @$arrayref, @stuff | unshift $arrayref, @stuff | + | pop @$arrayref | pop $arrayref | + | shift @$arrayref | shift $arrayref | + | splice @$arrayref, 0, 2 | splice $arrayref, 0, 2 | + | keys %$hashref | keys $hashref | + | keys @$arrayref | keys $arrayref | + | values %$hashref | values $hashref | + | values @$arrayref | values $arrayref | + | ($k,$v) = each %$hashref | ($k,$v) = each $hashref | + | ($k,$v) = each @$arrayref | ($k,$v) = each $arrayref | + |----------------------------+---------------------------| + +This allows these built-in functions to act on long dereferencing chains +or on the return value of subroutines without needing to wrap them in +C<@{}> or C<%{}>: + + push @{$obj->tags}, $new_tag; # old way + push $obj->tags, $new_tag; # new way + + for ( keys %{$hoh->{genres}{artists}} ) {...} # old way + for ( keys $hoh->{genres}{artists} ) {...} # new way + +For C<push>, C<unshift> and C<splice>, the reference will auto-vivify +if it is not defined, just as if it were wrapped with C<@{}>. + +Calling C<keys> or C<values> directly on a reference gives a substantial +performance improvement over explicit dereferencing. + +For C<keys>, C<values>, C<each>, when overloaded dereferencing is +present, the overloaded dereference is used instead of dereferencing the +underlying reftype. Warnings are issued about assumptions made in the +following three ambiguous cases: + + (a) If both %{} and @{} overloading exists, %{} is used + (b) If %{} overloading exists on a blessed arrayref, %{} is used + (c) If @{} overloading exists on a blessed hashref, @{} is used + +=head2 y///r + +The C</r> flag, which was added to C<s///> in 5.13.2, has been extended to +the C<y///> operator. + +It causes it to perform the substitution on a I<copy> of its operand, +returning that copy instead of a character count. + +=head2 New global variable C<${^GLOBAL_PHASE}> + +A new global variable, C<${^GLOBAL_PHASE}>, has been added to allow +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 updated with +L<Corrigendum #8|http://www.unicode.org/versions/corrigendum8.html>, +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 Incompatible Changes + +=head2 Dereferencing typeglobs + +If you assign a typeglob to a scalar variable: + + $glob = *foo; + +the glob that is copied to C<$glob> is marked with a special flag +indicating that the glob is just a copy. This allows subsequent assignments +to C<$glob> to overwrite the glob. The original glob, however, is +immutable. + +Many Perl operators did not distinguish between these two types of globs. +This would result in strange behaviour in edge cases: C<untie $scalar> +would do nothing if the last thing assigned to the scalar was a glob +(because it treated it as C<untie *$scalar>, which unties a handle). +Assignment to a glob slot (e.g., C<(*$glob) = \@some_array>) would simply +assign C<\@some_array> to C<$glob>. + +To fix this, the C<*{}> operator (including the C<*foo> and C<*$foo> forms) +has been modified to make a new immutable glob if its operand is a glob +copy. Various operators that make a distinction between globs and scalars +have been modified to treat only immutable globs as globs. + +This causes an incompatible change in code that assigns a glob to the +return value of C<*{}> when that operator was passed a glob copy. Take the +following code, for instance: + + $glob = *foo; + *$glob = *bar; + +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>, +L<[perl #77508]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77508>, +L<[perl #77688]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77688>, +and +L<[perl #77812]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77812>, +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 + +=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 + +=over 4 + +=item * + +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 + +=head1 Modules and Pragmata + +=head2 New Modules and Pragmata + +=over 4 + +=item * + +The following modules were added by the C<Unicode::Collate> +upgrade from 0.63 to 0.67. See below for details. + +C<Unicode::Collate::CJK::Big5> + +C<Unicode::Collate::CJK::GB2312> + +C<Unicode::Collate::CJK::JISX0208> + +C<Unicode::Collate::CJK::Korean> + +C<Unicode::Collate::CJK::Pinyin> + +C<Unicode::Collate::CJK::Stroke> + +=back + +=head2 Updated Modules and Pragmata + +=over 4 + +=item * + +C<Archive::Extract> has been upgraded from 0.44 to 0.46 + +Resolves an issue with NetBSD-current and its new unzip +executable. + +=item * + +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. + +It fixes deparsing of C<our> followed by a variable with funny characters +(as permitted under the C<utf8> pragma) +L<[perl #33752]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=33752>. + +=item * + +C<CGI> has been upgraded from 3.49 to 3.50 + +This provides the following security fixes: the MIME boundary in +multipart_init is now random and improvements to the handling of +newlines embedded in header values. + +The documentation for param_fetch() has been corrected and clarified. + +=item * + +C<CPAN> has been upgraded from 1.94_61 to 1.94_62 + +=item * + +C<CPANPLUS> has been upgraded from 0.9007 to 0.9010 + +Fixes for the SQLite source engine and resolving of issues with the +testsuite when run under local::lib and/or cpanminus + +=item * + +C<CPANPLUS::Dist::Build> has been upgraded from 0.48 to 0.50 + +=item * + +C<Data::Dumper> has been upgraded from 2.129 to 2.130_01. + +=item * + +C<DynaLoader> has been upgraded from 1.10 to 1.11. + +It fixes a buffer overflow when passed a very long file name. + +=item * + +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. + +=item * + +C<File::Fetch> has been upgraded from 0.24 to 0.28 + +C<HTTP::Lite> is now supported for 'http' scheme. + +The C<fetch> utility is supported on FreeBSD, NetBSD and +Dragonfly BSD for the C<http> and C<ftp> schemes. + +=item * + +C<File::Glob> has been upgraded from 1.09 to 1.10. + +=item * + +C<File::stat> has been upgraded from 1.03 to 1.04. + +The C<-x> and C<-X> file test operators now work correctly under the root +user. + +=item * + +C<GDBM_File> has been upgraded from 1.11 to 1.12. + +This fixes a memory leak when DBM filters are used. + +=item * + +C<Hash::Util> has been upgraded from 0.09 to 0.10. + +=item * + +C<Hash::Util::FieldHash> has been upgraded from 1.05 to 1.06. + +=item * + +C<I18N::Langinfo> has been upgraded from 0.06 to 0.07. + +=item * + +C<Locale::Maketext> has been upgraded from 1.16 to 1.17. + +=item * + +C<Math::BigInt> has been upgraded from 1.97 to 1.99_01. + +=item * + +C<Math::BigRat> has been upgraded from 0.26 to 0.26_01 + +=item * + +C<Math::BigInt::FastCalc> has been upgraded from 0.22 to 0.24_01. + +=item * + +C<MIME::Base64> has been upgraded from 3.09 to 3.10 + +Includes new functions to calculate the length of encoded and decoded +base64 strings. + +=item * + +C<mro> has been upgraded from 1.04 to 1.05. + +=item * + +C<NDBM_File> has been upgraded from 1.09 to 1.10. + +This fixes a memory leak when DBM filters are used. + +=item * + +C<ODBM_File> has been upgraded from 1.08 to 1.09. + +This fixes a memory leak when DBM filters are used. + +=item * + +C<Opcode> has been upgraded from 1.16 to 1.17. + +=item * + +C<parent> has been upgraded from 0.223 to 0.224 + +=item * + +C<Pod::Simple> has been upgraded from 3.14 to 3.15 + +Includes various fixes to C<HTML> and C<XHTML> handling. + +=item * + +C<POSIX> has been upgraded from 1.21 to 1.22. + +=item * + +C<re> has been upgraded from 0.13 to 0.14, for the sake of the new +C<use re "/flags"> pragma. + +=item * + +C<Safe> has been upgraded from 2.28 to 2.29. + +It adds C<&version::vxs::VCMP> to the default share. + +=item * + +C<SDBM_File> has been upgraded from 1.07 to 1.08. + +=item * + +C<SelfLoader> has been upgraded from 1.17 to 1.18. + +It now works in taint mode +L<[perl #72062]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72062>. + +=item * + +C<Socket> has been upgraded from 1.90 to 1.91. + +=item * + +C<Storable> has been upgraded from 2.22 to 2.24 + +Includes performance improvement for overloaded classes. + +=item * + +C<Sys::Hostname> has been upgraded from 1.13 to 1.14. + +=item * + +C<Unicode::Collate> has been upgraded from 0.63 to 0.67 + +This release newly adds locales C<ja> C<ko> and C<zh> and its variants +( C<zh__big5han>, C<zh__gb2312han>, C<zh__pinyin>, C<zh__stroke> ). + +Supported UCA_Version 22 for Unicode 6.0.0. + +The following modules have been added: + +C<Unicode::Collate::CJK::Big5> for C<zh__big5han> which makes +tailoring of CJK Unified Ideographs in the order of CLDR's big5han ordering. + +C<Unicode::Collate::CJK::GB2312> for C<zh__gb2312han> which makes +tailoring of CJK Unified Ideographs in the order of CLDR's gb2312han ordering. + +C<Unicode::Collate::CJK::JISX0208> which makes tailoring of 6355 kanji +(CJK Unified Ideographs) in the JIS X 0208 order. + +C<Unicode::Collate::CJK::Korean> which makes tailoring of CJK Unified Ideographs +in the order of CLDR's Korean ordering. + +C<Unicode::Collate::CJK::Pinyin> for C<zh__pinyin> which makes +tailoring of CJK Unified Ideographs in the order of CLDR's pinyin ordering. + +C<Unicode::Collate::CJK::Stroke> for C<zh__stroke> which makes +tailoring of CJK Unified Ideographs in the order of CLDR's stroke ordering. + +=back + +=head1 Documentation + +L<perlvar> reorders the variables and groups them by topic. Each variable +introduced after Perl 5.000 notes the first version in which it is +available. L<perlvar> also has a new section for deprecated variables to +note when they were removed. + +=head2 New Documentation + +=head3 L<perlpodstyle> + +New style guide for POD documentation, +split mostly from the NOTES section of the pod2man man page. + +( This was added to C<v5.13.6> but was not documented with that release ). + +=head2 Changes to Existing Documentation + +=over + +=item * + +Array and hash slices in scalar context are now documented in L<perldata>. + +=item * + +L<perlform> and L<perllocale> have been corrected to state that +C<use locale> affects formats. + +=back + +=head1 Diagnostics + +=head2 New Diagnostics + +=over 4 + +=item * + +"Using !~ with %s doesn't make sense": This message was actually added in +5.13.2, but was omitted from perldelta. It now applies also to the C<y///> +operator, and has been documented. + +=back + +=head1 Utility Changes + +=head3 L<ptargrep> + +=over 4 + +=item * + +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 + +=head1 Testing + +=over 4 + +=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 * + +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> +has been fixed (related to line numbers in the debugger). + +=back + +=head1 Platform Support + +=head2 Platform-Specific Notes + +=over 4 + +=item Windows + +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 with 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 + +=over 4 + +=item * + +C<lex_start> has been added to the API, but is considered experimental. + +=item * + +A new C<parse_block> function has been added to the API +L<[perl #78222]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78222>. + +=item * + +A new, experimental API has been added for accessing the internal +structure that Perl uses for C<%^H>. See the functions beginning with +C<cophh_> in L<perlapi>. + +=item * + +A stash can now have a list of effective names in addition to its usual +name. The first effective name can be accessed via the C<HvENAME> macro, +which is now the recommended name to use in MRO linearisations (C<HvNAME> +being a fallback if there is no C<HvENAME>). + +These names are added and deleted via C<hv_ename_add> and +C<hv_ename_delete>. These two functions are I<not> part of the API. + +=item * + +The way the parser handles labels has been cleaned up and refactored. As a +result, the C<newFOROP()> constructor function no longer takes a parameter +stating what label is to go in the state op. + +=item * + +The C<newWHILEOP()> and C<newFOROP()> functions no longer accept a line +number as a parameter. + +=item * + +A new C<parse_barestmt()> function has been added, for parsing a statement +without a label. + +=item * + +A new C<parse_label()> function has been added, that parses a statement +label, separate from statements. + +=item * + +The C<CvSTASH()> macro can now only be used as an rvalue. C<CvSTASH_set()> +has been added to replace assignment to C<CvSTASH()>. This is to ensure +that backreferences are handled properly. These macros are not part of the +API. + +=item * + +The C<op_scope()> and C<op_lvalue()> functions have been added to the API, +but are considered experimental. + +=back + +=head1 Selected Bug Fixes + +=over 4 + +=item * + +The C<parse_stmt> C function added in earlier in the 5.13.x series has been +fixed to work with statements ending with C<}> +L<[perl #78222]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78222>. + +=item * + +The C<parse_fullstmt> C function added in 5.13.5 has been fixed to work +when called while an expression is being parsed. + +=item * + +Characters in the Latin-1 non-ASCII range (0x80 to 0xFF) used not to match +themselves if the string happened to be UTF8-encoded internally, the +regular expression was not, and the character in the regular expression was +inside a repeated group (e.g., +C<Encode::decode_utf8("\303\200") =~ /(\xc0)+/>) +L<[perl #78464]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78464>. + +=item * + +The C<(?d)> regular expression construct now overrides a previous C<(?u)> +or C<use feature "unicode_string"> +L<[perl #78508]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78508>. + +=item * + +A memory leak in C<do "file">, introduced in perl 5.13.6, has been fixed +L<[perl #78488]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78488>. + +=item * + +Various bugs related to typeglob dereferencing have been fixed. See +L</Dereferencing typeglobs>, above. + +=item * + +The C<SvPVbyte> function available to XS modules now calls magic before +downgrading the SV, to avoid warnings about wide characters +L<[perl #72398]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72398>. + +=item * + +The C<=> operator used to ignore magic (e.g., tie methods) on its +right-hand side if the scalar happened to hold a typeglob. This could +happen if a typeglob was the last thing returned from or assigned to a tied +scalar +L<[perl #77498]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77498>. + +=item * + +C<sprintf> was ignoring locales when called with constant arguments +L<[perl #78632]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78632>. + +=item * + +A non-ASCII character in the Latin-1 range could match both a Posix +class, such as C<[[:alnum:]]>, and its inverse C<[[:^alnum:]]>. This is +now fixed for regular expressions compiled under the C<"u"> modifier. +See L</C<use feature "unicode_strings"> now applies to more regex matching>. +L<[perl #18281]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=18281>. + +=item * + +Concatenating long strings under C<use encoding> no longer causes perl to +crash +L<[perl #78674]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78674>. + +=item * + +Typeglob assignments would crash if the glob's stash no longer existed, so +long as the glob assigned to was named 'ISA' or the glob on either side of +the assignment contained a subroutine. + +=item * + +Calling C<< ->import >> on a class lacking an import method could corrupt +the stack, resulting in strange behaviour. For instance, + + push @a, "foo", $b = bar->import; + +would assign 'foo' to C<$b> +L<[perl #63790]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=63790>. + +=item * + +Creating an alias to a package when that package had been detached from the +symbol table would result in corrupted isa caches +L<[perl #77358]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77358>. + +=item * + +C<.=> followed by C<< <> >> or C<readline> would leak memory if C<$/> +contained characters beyond the octet range and the scalar assigned to +happened to be encoded as UTF8 internally +L<[perl #72246]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72246>. + +=item * + +The C<recv> function could crash when called with the MSG_TRUNC flag +L<[perl #75082]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75082>. + +=item * + +Evaluating a simple glob (like C<*a>) was calling get-magic on the glob, +even when its contents were not being used +L<[perl #78580]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78580>. + +This bug was introduced in 5.13.2 and did not affect earlier perl versions. + +=item * + +Matching a Unicode character against an alternation containing characters +that happened to match continuation bytes in the former's UTF8 +representation (C<qq{\x{30ab}} =~ /\xab|\xa9/>) would cause erroneous +warnings +L<[perl #70998]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=70998>. + +=item * + +C<s///r> (added in 5.13.2) no longer leaks. + +=item * + +The trie optimisation was not taking empty groups into account, preventing +'foo' from matching C</\A(?:(?:)foo|bar|zot)\z/> +L<[perl #78356]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78356>. + +=item * + +A pattern containing a C<+> inside a lookahead would sometimes cause an +incorrect match failure in a global match (e.g., C</(?=(\S+))/g>) +L<[perl #68564]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68564>. + +=item * + +Iterating with C<foreach> over an array returned by an lvalue sub now works +L<[perl #23790]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=23790>. + +=item * + +C<$@> is now localised during calls to C<binmode> to prevent action at a +distance +L<[perl #78844]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78844>. + +=item * + +C<PL_isarev>, which is accessible to Perl via C<mro::get_isarev> is now +updated properly when packages are deleted or removed from the C<@ISA> of +other classes. This allows many packages to be created and deleted without +causing a memory leak +L<[perl #75176]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75176>. + +=item * + +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. + +=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>. + +=item * + +When trying to report C<Use of uninitialized value $Foo::BAR>, crashes could +occur if the GLOB of the global variable causing the warning has been detached +from its original stash by, for example C<delete $::{'Foo::'}>. This has been +fixed by disabling the reporting of variable names in the warning in those +cases. + +=back + +=head1 Obituary + +Randy Kobes, creator of the kobesearch alternative to search.cpan.org and +contributor/maintainer to several core Perl toolchain modules, passed away +on September 18, 2010 after a battle with lung cancer. His contributions +to the Perl community will be missed. + +=head1 Acknowledgements + +Perl 5.13.7 represents approximately one month of development since Perl 5.13.6 +and contains 73100 lines of changes across 518 files from 39 authors and committers: + +Abhijit Menon-Sen, Abigail, Ben Morrow, Chas. J. Owens IV, Chris 'BinGOs' Williams, Craig A. Berry, +David Golden, David Mitchell, Father Chrysostomos, Fingle Nark, Florian Ragwitz, George Greer, +Grant McLean, H.Merijn Brand, Ian Goodacre, Jan Dubois, Jerry D. Hedden, Jesse Vincent, Karl Williamson, +Lubomir Rintel, Marty Pauley, Moritz Lenz, Nicholas Clark, Nicolas Kaiser, Niko Tyni, Peter John Acklam, +Rafael Garcia-Suarez, Shlomi Fish, Steffen Mueller, Steve Hay, Tatsuhiko Miyagawa, Tim Bunce, Todd Rinaldo, +Tom Christiansen, Tom Hukins, Tony Cook, Yves Orton, Zefram and brian d foy + +Many of the changes included in this version originated in the CPAN modules included in +Perl's core. We're grateful to the entire CPAN community for helping Perl to flourish. + +=head1 Reporting Bugs + +If you find what you think is a bug, you might check the articles +recently posted to the comp.lang.perl.misc newsgroup and the perl +bug database at http://rt.perl.org/perlbug/ . There may also be +information at http://www.perl.org/ , the Perl Home Page. + +If you believe you have an unreported bug, please run the B<perlbug> +program included with your release. Be sure to trim your bug down +to a tiny but sufficient test case. Your bug report, along with the +output of C<perl -V>, will be sent off to perlbug@perl.org to be +analysed by the Perl porting team. + +If the bug you are reporting has security implications, which make it +inappropriate to send to a publicly archived mailing list, then please send +it to perl5-security-report@perl.org. This points to a closed subscription +unarchived mailing list, which includes all the core committers, who be able +to help assess the impact of issues, figure out a resolution, and help +co-ordinate the release of patches to mitigate or fix the problem across all +platforms on which Perl is supported. Please only use this address for +security issues in the Perl core, not for modules independently +distributed on CPAN. + +=head1 SEE ALSO + +The F<Changes> file for an explanation of how to view exhaustive details +on what changed. + +The F<INSTALL> file for how to build Perl. + +The F<README> file for general stuff. + +The F<Artistic> and F<Copying> files for copyright information. + +=cut |