diff options
author | Zefram <zefram@fysh.org> | 2010-12-19 23:59:39 +0000 |
---|---|---|
committer | Zefram <zefram@fysh.org> | 2010-12-19 23:59:39 +0000 |
commit | 9f7a72d0512cd1d727a5b68faaae2659aad2323d (patch) | |
tree | d0027765077d5d81978632040ca90a6a4befa096 | |
parent | 94521723481807f2c78f7a379424adc2901c9764 (diff) | |
download | perl-9f7a72d0512cd1d727a5b68faaae2659aad2323d.tar.gz |
create perldelta for 5.13.9
-rw-r--r-- | pod/.gitignore | 2 | ||||
-rw-r--r-- | pod/perl5138delta.pod | 912 | ||||
-rw-r--r-- | pod/perldelta.pod | 864 |
3 files changed, 1076 insertions, 702 deletions
diff --git a/pod/.gitignore b/pod/.gitignore index bb1bb4a338..cdc58654e8 100644 --- a/pod/.gitignore +++ b/pod/.gitignore @@ -59,6 +59,6 @@ /podselect.bat # generated -/perl5138delta.pod +/perl5139delta.pod /perlapi.pod /perlintern.pod diff --git a/pod/perl5138delta.pod b/pod/perl5138delta.pod new file mode 100644 index 0000000000..1b01b2701c --- /dev/null +++ b/pod/perl5138delta.pod @@ -0,0 +1,912 @@ +=encoding utf8 + +=head1 NAME + +perl5138delta - what is new for perl v5.13.8 + +=head1 DESCRIPTION + +This document describes differences between the 5.13.7 release and +the 5.13.8 release. + +If you are upgrading from an earlier release such as 5.13.6, first read +L<perl5137delta>, which describes differences between 5.13.6 and +5.13.7. + +=head1 Core Enhancements + +=head2 C<-d:-foo> calls C<Devel::foo::unimport> + +The syntax C<-dI<B<:>foo>> was extended in 5.6.1 to make C<-dI<:fooB<=bar>>> +equivalent to C<-MDevel::foo=bar>, which expands +internally to C<use Devel::foo 'bar';>. +F<perl> now allows prefixing the module name with C<->, with the same +semantics as C<-M>, I<i.e.> + +=over 4 + +=item C<-d:-foo> + +Equivalent to C<-M-Devel::foo>, expands to +C<no Devel::foo;>, calls C<< Devel::foo->unimport() >> +if the method exists. + +=item C<-d:-foo=bar> + +Equivalent to C<-M-Devel::foo=bar>, expands to C<no Devel::foo 'bar';>, +calls C<< Devel::foo->unimport('bar') >> if the method exists. + +=back + +This is particularly useful to suppresses the default actions of a +C<Devel::*> module's C<import> method whilst still loading it for debugging. + +=head2 Filehandle method calls load L<IO::File> on demand + +When a method call on a filehandle would die because the method cannot +be resolved, and L<IO::File> has not been loaded, Perl now loads L<IO::File> +via C<require> and attempts method resolution again: + + open my $fh, ">", $file; + $fh->binmode(":raw"); # loads IO::File and succeeds + +This also works for globs like STDOUT, STDERR and STDIN: + + STDOUT->autoflush(1); + +Because this on-demand load only happens if method resolution fails, the +legacy approach of manually loading an L<IO::File> parent class for partial +method support still works as expected: + + use IO::Handle; + open my $fh, ">", $file; + $fh->autoflush(1); # IO::File not loaded + +=head2 Full functionality for C<use feature 'unicode_strings'> + +This release provides full functionality for C<use feature +'unicode_strings'>. Under its scope, all string operations executed and +regular expressions compiled (even if executed outside its scope) have +Unicode semantics. See L<feature>. + +This feature avoids most forms of the "Unicode Bug" (See +L<perlunicode/The "Unicode Bug"> for details.) If there is a +possibility that your code will process Unicode strings, you are +B<strongly> encouraged to use this subpragma to avoid nasty surprises. + +The 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 +the reason for unwinding. + +=head2 printf-like functions understand post-1980 size modifiers + +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 Incompatible Changes + +=head2 C<:=> is now a syntax error + +Previously C<my $pi := 4;> was exactly equivalent to C<my $pi : = 4;>, +with the C<:> being treated as the start of an attribute list, ending before +the C<=>. The use of C<:=> to mean C<: => was deprecated in 5.12.0, and is now +a syntax error. This will allow the future use of C<:=> as a new token. + +We find no Perl 5 code on CPAN using this construction, outside the core's +tests for it, so we believe that this change will have very little impact on +real-world codebases. + +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 + +=head2 C<?PATTERN?> is deprecated + +C<?PATTERN?> (without the initial m) has been deprecated and now produces +a warning. This is to allow future use of C<?> in new operators. +The match-once functionality is still available in the form of C<m?PATTERN?>. + +=head2 C<sv_compile_2op()> is now deprecated + +The C<sv_compile_2op()> API function is now deprecated. Searches suggest +that nothing on CPAN is using it, so this should have zero impact. + +It attempted to provide an API to compile code down to an optree, but failed +to bind correctly to lexicals in the enclosing scope. It's not possible to +fix this problem within the constraints of its parameters and return value. + +=head2 Tie functions on scalars holding typeglobs + +Calling a tie function (C<tie>, C<tied>, C<untie>) with a scalar argument +acts on a file handle if the scalar happens to hold a typeglob. + +This is a long-standing bug that will be removed in Perl 5.16, as +there is currently no way to tie the scalar itself when it holds +a typeglob, and no way to untie a scalar that has had a typeglob +assigned to it. + +This bug was fixed in 5.13.7 but, because of the breakage it caused, the +fix has been reverted. Now there is a deprecation warning whenever a tie +function is used on a handle without an explicit C<*>. + +=head1 Modules and Pragmata + +=head2 Updated Modules and Pragmata + +=over 4 + +=item * + +C<Archive::Tar> has been upgraded from version 1.72 to 1.74. + +Skip extracting pax extended headers. + +=item * + +C<autodie> has been upgraded from version 2.10 to 2.1001. + +Test fix in blead for VMS. + +=item * + +C<B> has been upgraded from version 1.26 to 1.27. + +Avoid compiler warnings. + +=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<B::Deparse> has been upgraded from version 1.01 to 1.02. + +Test improvements. + +=item * + +C<Cwd> has been upgraded from version 3.34 to 3.35. + +Avoid compiler warnings. + +=item * + +C<Data::Dumper> has been upgraded from version 2.130_01 to 2.130_02. + +Avoid compiler warnings. + +=item * + +C<Devel::Peek> has been upgraded from version 1.05 to 1.06. + +Avoid compiler warnings. + +Test improvements. + +=item * + +C<Devel::SelfStubber> has been upgraded from version 1.03 to 1.05. + +Whitespace changes. + +=item * + +C<Digest::SHA> has been upgraded from 5.48 to 5.50. + +C<shasum> now more closely mimics C<sha1sum>/C<md5sum>. + +C<Addfile> accepts all POSIX filenames. + +=item * + +C<Dumpvalue> has been upgraded from version 1.14 to 1.15. + +Test improvements. + +=item * + +C<DynaLoader> has been upgraded from version 1.11 to 1.12. + +Remove obsolete RCS keywords. + +=item * + +C<Env> has been upgraded from version 1.01 to 1.02. + +Test improvements. + +=item * + +C<ExtUtils::CBuilder> has been upgraded from 0.2703 to 0.280201. + +Handle C and C++ compilers separately. + +Preserves exit status on VMS. + +Test improvements. + +=item * + +C<ExtUtils::Constant::Utils> has been upgraded from 0.02 to 0.03. + +Refactoring and fixing of backcompat code, preparing for resynchronisation +with CPAN. + +=item * + +C<ExtUtils::Embed> has been upgraded from 1.29 to 1.30. + +Remove obsolete RCS keywords. + +=item * + +C<ExtUtils::ParseXS> has been upgraded from 2.2207 to 2.2208. + +Avoid compiler warnings. + +=item * + +C<Fcntl> has been upgraded from 1.10 to 1.11. + +Avoid compiler warnings. + +Test improvements. + +=item * + +C<feature> has been upgraded from 1.18 to 1.19. + +Documentation and test updates for the C<unicode_strings> feature. +See L</Full functionality for C<use feature 'unicode_strings'>>. + +=item * + +C<File::CheckTree> has been upgraded from 4.4 to 4.41. + +Whitespace changes. + +=item * + +C<File::Glob> has been upgraded from 1.10 to 1.11. + +Avoid compiler warnings. + +Test improvements. + +=item * + +C<GDBM_File> has been upgraded from 1.12 to 1.13. + +Test improvements. + +Remove obsolete RCS keywords. + +=item * + +C<Hash::Util::FieldHash> has been upgraded from 1.06 to 1.07. + +Avoid compiler warnings. + +=item * + +C<I18N::Collate> has been upgraded from 1.01 to 1.02. + +Whitespace changes. + +Test improvements. + +=item * + +C<if> has been upgraded from 0.06 to 0.0601. + +Test improvements. + +=item * + +C<IO> has been upgraded from 1.25_02 to 1.25_03. + +Avoid compiler warnings. + +=item * + +C<IPC::Cmd> has been upgraded from 0.64 to 0.66. + +Resolves an issue with splitting Win32 command lines. + +Documentation enhancements. + +=item * + +C<IPC::Open3> has been upgraded from 1.07 to 1.08. + +Remove obsolete RCS keywords. + +Test improvements. + +=item * + +C<Locale::Codes> has been upgraded from version 3.14 to 3.15. + +Adds some codes. + +=item * + +C<Math::BigInt> has been upgraded from 1.99_01 to 1.99_02. + +Documentation and comment spelling fixes. + +=item * + +C<Memoize> has been upgraded from version 1.01_03 to 1.02. + +Remove obsolete RCS keywords. + +Whitespace changes. + +=item * + +C<MIME::Base64> has been upgraded from 3.10 to 3.13. + +Now provides C<encode_base64url> and C<decode_base64url> functions to process +the base64 scheme for "URL applications". + +=item * + +C<mro> has been upgraded from version 1.05 to 1.06. + +C<next::method> I<et al.> now take into account that every class inherits +from UNIVERSAL +L<[perl #68654]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68654>. + +=item * + +C<NDBM_File> has been upgraded from 1.10 to 1.11. + +Remove obsolete RCS keywords. + +Test improvements. + +=item * + +C<Net::Ping> has been upgraded from 2.36 to 2.37. + +Remove obsolete RCS keywords. + +=item * + +C<ODBM_File> has been upgraded from 1.09 to 1.10. + +Remove obsolete RCS keywords. + +Test improvements. + +=item * + +C<Opcode> has been upgraded from 1.17 to 1.18. + +Avoid compiler warnings. + +Test improvements. + +=item * + +C<overload> has been upgraded from 1.11 to 1.12. + +Avoid a taint problem in use of sprintf. + +Test asymmetric fallback cases +L<[perl #71286]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=71286>. + +=item * + +C<PerlIO::encoding> has been upgraded from 0.13 to 0.14. + +Avoid compiler warnings. + +Remove obsolete RCS keywords. + +Test improvements. + +=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 +has data to read +L<[perl #78716]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78716>. + +Avoid compiler warnings. + +=item * + +C<PerlIO::via> has been upgraded from 0.10 to 0.11. + +Avoid compiler warnings. + +=item * + +C<POSIX> has been upgraded from 1.22 to 1.23. + +Avoid compiler warnings. + +=item * + +C<re> has been upgraded from 0.14 to 0.15. + +Enforce that C</d>, C</u>, and C</l> are mutually exclusive. + +=item * + +C<SDBM_File> has been upgraded from 1.08 to 1.09. + +Avoid compiler warnings. + +Remove obsolete RCS keywords. + +Test improvements. + +=item * + +C<Socket> has been upgraded from 1.91 to 1.92. + +It has several new functions for handling IPv6 addresses. + +=item * + +C<Storable> has been upgraded from 2.24 to 2.25. + +This adds support for serialising code references that contain UTF-8 strings +correctly. The Storable minor version number changed as a result, meaning that +Storable users who 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>. + +Avoid compiler warnings. + +=item * + +C<threads> has been upgraded from 1.81_02 to 1.81_03. + +Avoid compiler warnings. + +=item * + +C<threads::shared> has been upgraded from 1.34 to 1.35. + +Avoid compiler warnings. + +=item * + +C<Time::HiRes> has been upgraded from 1.9721 to 1.9721_01. + +Build fix in blead for VMS. + +=item * + +C<Unicode::Collate> has been upgraded from 0.67 to 0.6801. + +Documentation clarification. + +Test improvements. + +=item * + +C<Unicode::Normalize> has been upgraded from 1.07 to 1.08. + +Avoid compiler warnings. + +=item * + +C<Unicode::UCD> has been upgraded from 0.29 to 0.30. + +Add info about named sequence alternatives. + +Don't use C<CompositionExclusions.txt>. + +=item * + +C<version> has been upgraded from 0.82 to 0.86. + +Modify export logic for C<is_strict> and C<is_lax>. + +Various backcompat fixes. + +=item * + +C<Win32> has been upgraded from 0.39 to 0.41. + +Add several functions. + +Corrections to names returned by C<Win32::GetOSName> and +C<Win32::GetOSDisplayName>. + +=item * + +C<XS::APItest> has been upgraded from 0.26 to 0.27. + +Test new API functions. + +Avoid compiler warnings. + +=back + +=head2 Dual-life Modules and Pragmata + +These modules were formerly distributed only in the Perl core +distribution, and are now dual-lifed (meaning they are now also available +separately on CPAN): + +=over 4 + +=item * + +C<autouse> + +=item * + +C<Devel::SelfStubber> + +=item * + +C<Dumpvalue> + +=item * + +C<Env> + +=item * + +C<File::CheckTree> + +=item * + +C<I18N::Collate> + +=back + +=head1 Diagnostics + +The following additions or changes have been made to diagnostic output, +including warnings and fatal error messages. For the complete list of +diagnostic messages, see L<perldiag>. + +=head2 New Diagnostics + +=over 4 + +=item * + +There is a new "Closure prototype called" error +L<[perl #68560]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68560>. + +=back + +=head2 Changes to Existing Diagnostics + +=over 4 + +=item * + +The "Found = in conditional" warning that is emitted when a constant is +assigned to a variable in a condition is now withheld if the constant is +actually a subroutine or one generated by C<use constant>, since the value +of the constant may not be known at the time the program is written +L<[perl #77762]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77762>. + +=back + +=head1 Configuration and Compilation + +=over 4 + +=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. + +=back + +=head1 Testing + +=over 4 + +=item * + +Tests for C<Fcntl>, C<File::Glob>, C<GDBM_File>, C<IPC::Open3>, +C<NDBM_File>, C<ODBM_File>, C<Opcode>, C<PerlIO::encoding>, C<SDBM_File>, +and C<Storable> now use the L<Test::More> framework. + +=back + +=head1 Platform Support + +=head2 Platform-Specific Notes + +=over 4 + +=item NetBSD + +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 + +=over 4 + +=item * + +The L<C<mg_findext()>|perlapi/mg_findext> and +L<C<sv_unmagicext()>|perlapi/sv_unmagicext> +functions have been added to the API. +They allow extension authors to find and remove magic attached to +scalars based on both the magic type and the magic virtual table, similar to how +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 +L<C<parse_fullexpr()>|perlapi/parse_fullexpr>, +L<C<parse_listexpr()>|perlapi/parse_listexpr>, +L<C<parse_termexpr()>|perlapi/parse_termexpr>, and +L<C<parse_arithexpr()>|perlapi/parse_arithexpr> +functions have been added to the API. They perform +recursive-descent parsing of expressions at various precedence levels. +They are expected to be used by syntax plugins. + +=back + +=head1 Selected Bug Fixes + +=over 4 + +=item * + +C<BEGIN {require 5.12.0}> now behaves as documented, rather than behaving +identically to C<use 5.12.0;>. Previously, C<require> in a C<BEGIN> block +was erroneously executing the C<use feature ':5.12.0'> and +C<use strict; use warnings;> behaviour, which only C<use> was documented to +provide +L<[perl #69050]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=69050>. + +=item * + +C<use 5.42> +L<[perl #69050]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=69050>, +C<use 6> and C<no 5> no longer leak memory. + +=item * + +C<eval "BEGIN{die}"> no longer leaks memory on non-threaded builds. + +=item * + +PerlIO no longer crashes when called recursively, e.g., from a signal +handler. Now it just leaks memory +L<[perl #75556]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75556>. + +=item * + +Defining a constant with the same name as one of perl's special blocks +(e.g., INIT) stopped working in 5.12.0, but has now been fixed +L<[perl #78634]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78634>. + +=item * + +A reference to a literal value used as a hash key (C<$hash{\"foo"}>) used +to be stringified, even if the hash was tied +L<[perl #79178]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=79178>. + +=item * + +A closure containing an C<if> statement followed by a constant or variable +is no longer treated as a constant +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 instead +of a crash +L<[perl #68560]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68560>. + +=item * + +A regular expression optimisation would sometimes cause a match with a +C<{n,m}> quantifier to fail when it should match +L<[perl #79152]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=79152>. + +=item * + +What has become known as the "Unicode Bug" is mostly resolved in this release. +Under C<use feature 'unicode_strings'>, the internal storage format of a +string no longer affects the external semantics. There are two known +exceptions. User-defined case changing functions, which are planned to +be deprecated in 5.14, require utf8-encoded strings to function; and the +character C<LATIN SMALL LETTER SHARP S> in regular expression +case-insensitive matching has a somewhat different set of bugs depending +on the internal storage format. Case-insensitive matching of all +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> no longer causes 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 C<B::OP>s instead of C<B::LOGOP>s 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 Acknowledgements + +Perl 5.13.8 represents approximately one month of development since +Perl 5.13.7 and contains 38715 lines of changes across 546 files from +38 authors and committers. + +Thank you to the following for contributing to this release: + +Abhijit Menon-Sen, Abigail, Andreas KE<0xf6>nig, Ben Morrow, Brad Gilbert, +brian d foy, Chip Salzenberg, Chris 'BinGOs' Williams, Craig A. Berry, +David Golden, David Leadbeater, David Mitchell, Father Chrysostomos, +Florian Ragwitz, Goro Fuji, H.Merijn Brand, Jan Dubois, Jerry D. Hedden, +Jesse Vincent, John Peacock, Karl Williamson, Lukas Mai, Marvin Humphrey, +Max Maischein, Michael Breen, Michael Fig, Nicholas Clark, Nick Cleaton, +Paul Evans, Peter J. Holzer, Peter John Acklam, Rafael Garcia-Suarez, +Reini Urban, Renee Baecker, Ricardo Signes, Tony Cook, Yves Orton, Zefram + +=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 L<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 diff --git a/pod/perldelta.pod b/pod/perldelta.pod index c5ef57c194..34e4b030ae 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -2,878 +2,340 @@ =head1 NAME -perldelta - what is new for perl v5.13.8 +[ this is a template for a new perldelta file. Any text flagged as +XXX needs to be processed before release. ] -=head1 DESCRIPTION - -This document describes differences between the 5.13.7 release and -the 5.13.8 release. - -If you are upgrading from an earlier release such as 5.13.6, first read -L<perl5137delta>, which describes differences between 5.13.6 and -5.13.7. - -=head1 Core Enhancements - -=head2 C<-d:-foo> calls C<Devel::foo::unimport> - -The syntax C<-dI<B<:>foo>> was extended in 5.6.1 to make C<-dI<:fooB<=bar>>> -equivalent to C<-MDevel::foo=bar>, which expands -internally to C<use Devel::foo 'bar';>. -F<perl> now allows prefixing the module name with C<->, with the same -semantics as C<-M>, I<i.e.> - -=over 4 - -=item C<-d:-foo> - -Equivalent to C<-M-Devel::foo>, expands to -C<no Devel::foo;>, calls C<< Devel::foo->unimport() >> -if the method exists. - -=item C<-d:-foo=bar> - -Equivalent to C<-M-Devel::foo=bar>, expands to C<no Devel::foo 'bar';>, -calls C<< Devel::foo->unimport('bar') >> if the method exists. - -=back - -This is particularly useful to suppresses the default actions of a -C<Devel::*> module's C<import> method whilst still loading it for debugging. - -=head2 Filehandle method calls load L<IO::File> on demand - -When a method call on a filehandle would die because the method cannot -be resolved, and L<IO::File> has not been loaded, Perl now loads L<IO::File> -via C<require> and attempts method resolution again: - - open my $fh, ">", $file; - $fh->binmode(":raw"); # loads IO::File and succeeds - -This also works for globs like STDOUT, STDERR and STDIN: - - STDOUT->autoflush(1); - -Because this on-demand load only happens if method resolution fails, the -legacy approach of manually loading an L<IO::File> parent class for partial -method support still works as expected: +perldelta - what is new for perl v5.13.9 - use IO::Handle; - open my $fh, ">", $file; - $fh->autoflush(1); # IO::File not loaded - -=head2 Full functionality for C<use feature 'unicode_strings'> - -This release provides full functionality for C<use feature -'unicode_strings'>. Under its scope, all string operations executed and -regular expressions compiled (even if executed outside its scope) have -Unicode semantics. See L<feature>. - -This feature avoids most forms of the "Unicode Bug" (See -L<perlunicode/The "Unicode Bug"> for details.) If there is a -possibility that your code will process Unicode strings, you are -B<strongly> encouraged to use this subpragma to avoid nasty surprises. - -The 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 -the reason for unwinding. - -=head2 printf-like functions understand post-1980 size modifiers - -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'. +=head1 DESCRIPTION -=head2 DTrace probes now include package name +This document describes differences between the 5.13.8 release and +the 5.13.9 release. -The DTrace probes now include an additional argument (C<arg3>) which contains -the package the subroutine being entered or left was compiled in. +If you are upgrading from an earlier release such as 5.13.7, first read +L<perl5138delta>, which describes differences between 5.13.7 and +5.13.8. -For example using the following DTrace script: +=head1 Notice - perl$target:::sub-entry - { - printf("%s::%s\n", copyinstr(arg0), copyinstr(arg3)); - } +XXX Any important notices here -and then running: +=head1 Core Enhancements - perl -e'sub test { }; test' +XXX New core language features go here. Summarise user-visible core language +enhancements. Particularly prominent performance optimisations could go +here, but most should go in the L</Performance Enhancements> section. -DTrace will print: +[ List each enhancement as a =head2 entry ] - main::test +=head1 Security -=head2 Stacked labels +XXX Any security-related notices go here. In particular, any security +vulnerabilities closed should be noted here rather than in the +L</Selected Bug Fixes> section. -Multiple statement labels can now appear before a single statement. +[ List each security issue as a =head2 entry ] =head1 Incompatible Changes -=head2 C<:=> is now a syntax error +XXX For a release on a stable branch, this section aspires to be: -Previously C<my $pi := 4;> was exactly equivalent to C<my $pi : = 4;>, -with the C<:> being treated as the start of an attribute list, ending before -the C<=>. The use of C<:=> to mean C<: => was deprecated in 5.12.0, and is now -a syntax error. This will allow the future use of C<:=> as a new token. + There are no changes intentionally incompatible with 5.XXX.XXX. If any + exist, they are bugs and reports are welcome. -We find no Perl 5 code on CPAN using this construction, outside the core's -tests for it, so we believe that this change will have very little impact on -real-world codebases. - -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. +[ List each incompatible change as a =head2 entry ] =head1 Deprecations -=head2 C<?PATTERN?> is deprecated - -C<?PATTERN?> (without the initial m) has been deprecated and now produces -a warning. This is to allow future use of C<?> in new operators. -The match-once functionality is still available in the form of C<m?PATTERN?>. - -=head2 C<sv_compile_2op()> is now deprecated - -The C<sv_compile_2op()> API function is now deprecated. Searches suggest -that nothing on CPAN is using it, so this should have zero impact. - -It attempted to provide an API to compile code down to an optree, but failed -to bind correctly to lexicals in the enclosing scope. It's not possible to -fix this problem within the constraints of its parameters and return value. - -=head2 Tie functions on scalars holding typeglobs +XXX Any deprecated features, syntax, modules etc. should be listed here. +In particular, deprecated modules should be listed here even if they are +listed as an updated module in the L</Modules and Pragmata> section. -Calling a tie function (C<tie>, C<tied>, C<untie>) with a scalar argument -acts on a file handle if the scalar happens to hold a typeglob. +[ List each deprecation as a =head2 entry ] -This is a long-standing bug that will be removed in Perl 5.16, as -there is currently no way to tie the scalar itself when it holds -a typeglob, and no way to untie a scalar that has had a typeglob -assigned to it. +=head1 Performance Enhancements -This bug was fixed in 5.13.7 but, because of the breakage it caused, the -fix has been reverted. Now there is a deprecation warning whenever a tie -function is used on a handle without an explicit C<*>. +XXX Changes which enhance performance without changing behaviour go here. There +may well be none in a stable release. -=head1 Modules and Pragmata - -=head2 Updated Modules and Pragmata +[ List each enhancement as a =item entry ] =over 4 =item * -C<Archive::Tar> has been upgraded from version 1.72 to 1.74. - -Skip extracting pax extended headers. - -=item * - -C<autodie> has been upgraded from version 2.10 to 2.1001. - -Test fix in blead for VMS. - -=item * - -C<B> has been upgraded from version 1.26 to 1.27. - -Avoid compiler warnings. - -=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<B::Deparse> has been upgraded from version 1.01 to 1.02. - -Test improvements. - -=item * - -C<Cwd> has been upgraded from version 3.34 to 3.35. - -Avoid compiler warnings. - -=item * - -C<Data::Dumper> has been upgraded from version 2.130_01 to 2.130_02. - -Avoid compiler warnings. - -=item * - -C<Devel::Peek> has been upgraded from version 1.05 to 1.06. - -Avoid compiler warnings. - -Test improvements. - -=item * - -C<Devel::SelfStubber> has been upgraded from version 1.03 to 1.05. - -Whitespace changes. - -=item * - -C<Digest::SHA> has been upgraded from 5.48 to 5.50. - -C<shasum> now more closely mimics C<sha1sum>/C<md5sum>. - -C<Addfile> accepts all POSIX filenames. - -=item * - -C<Dumpvalue> has been upgraded from version 1.14 to 1.15. - -Test improvements. - -=item * - -C<DynaLoader> has been upgraded from version 1.11 to 1.12. - -Remove obsolete RCS keywords. - -=item * - -C<Env> has been upgraded from version 1.01 to 1.02. - -Test improvements. - -=item * - -C<ExtUtils::CBuilder> has been upgraded from 0.2703 to 0.280201. - -Handle C and C++ compilers separately. - -Preserves exit status on VMS. - -Test improvements. - -=item * - -C<ExtUtils::Constant::Utils> has been upgraded from 0.02 to 0.03. - -Refactoring and fixing of backcompat code, preparing for resynchronisation -with CPAN. - -=item * - -C<ExtUtils::Embed> has been upgraded from 1.29 to 1.30. - -Remove obsolete RCS keywords. - -=item * - -C<ExtUtils::ParseXS> has been upgraded from 2.2207 to 2.2208. - -Avoid compiler warnings. - -=item * - -C<Fcntl> has been upgraded from 1.10 to 1.11. - -Avoid compiler warnings. - -Test improvements. - -=item * - -C<feature> has been upgraded from 1.18 to 1.19. - -Documentation and test updates for the C<unicode_strings> feature. -See L</Full functionality for C<use feature 'unicode_strings'>>. - -=item * - -C<File::CheckTree> has been upgraded from 4.4 to 4.41. - -Whitespace changes. - -=item * - -C<File::Glob> has been upgraded from 1.10 to 1.11. - -Avoid compiler warnings. - -Test improvements. - -=item * - -C<GDBM_File> has been upgraded from 1.12 to 1.13. - -Test improvements. - -Remove obsolete RCS keywords. - -=item * - -C<Hash::Util::FieldHash> has been upgraded from 1.06 to 1.07. - -Avoid compiler warnings. - -=item * - -C<I18N::Collate> has been upgraded from 1.01 to 1.02. - -Whitespace changes. - -Test improvements. - -=item * - -C<if> has been upgraded from 0.06 to 0.0601. - -Test improvements. - -=item * - -C<IO> has been upgraded from 1.25_02 to 1.25_03. - -Avoid compiler warnings. - -=item * - -C<IPC::Cmd> has been upgraded from 0.64 to 0.66. - -Resolves an issue with splitting Win32 command lines. - -Documentation enhancements. - -=item * - -C<IPC::Open3> has been upgraded from 1.07 to 1.08. - -Remove obsolete RCS keywords. - -Test improvements. - -=item * - -C<Locale::Codes> has been upgraded from version 3.14 to 3.15. - -Adds some codes. - -=item * +XXX -C<Math::BigInt> has been upgraded from 1.99_01 to 1.99_02. - -Documentation and comment spelling fixes. - -=item * - -C<Memoize> has been upgraded from version 1.01_03 to 1.02. - -Remove obsolete RCS keywords. - -Whitespace changes. - -=item * - -C<MIME::Base64> has been upgraded from 3.10 to 3.13. - -Now provides C<encode_base64url> and C<decode_base64url> functions to process -the base64 scheme for "URL applications". - -=item * - -C<mro> has been upgraded from version 1.05 to 1.06. - -C<next::method> I<et al.> now take into account that every class inherits -from UNIVERSAL -L<[perl #68654]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68654>. - -=item * - -C<NDBM_File> has been upgraded from 1.10 to 1.11. - -Remove obsolete RCS keywords. - -Test improvements. - -=item * - -C<Net::Ping> has been upgraded from 2.36 to 2.37. - -Remove obsolete RCS keywords. - -=item * - -C<ODBM_File> has been upgraded from 1.09 to 1.10. - -Remove obsolete RCS keywords. - -Test improvements. - -=item * - -C<Opcode> has been upgraded from 1.17 to 1.18. - -Avoid compiler warnings. - -Test improvements. - -=item * - -C<overload> has been upgraded from 1.11 to 1.12. - -Avoid a taint problem in use of sprintf. - -Test asymmetric fallback cases -L<[perl #71286]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=71286>. - -=item * - -C<PerlIO::encoding> has been upgraded from 0.13 to 0.14. - -Avoid compiler warnings. - -Remove obsolete RCS keywords. - -Test improvements. - -=item * +=back -C<PerlIO::scalar> has been upgraded from 0.10 to 0.11. +=head1 Modules and Pragmata -A C<read> after a C<seek> beyond the end of the string no longer thinks it -has data to read -L<[perl #78716]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78716>. +XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/> +go here. If Module::CoreList is updated, generate an initial draft of the +following sections using F<Porting/corelist-perldelta.pl>, which prints stub +entries to STDOUT. Results can be pasted in place of the '=head2' entries +below. A paragraph summary for important changes should then be added by hand. +In an ideal world, dual-life modules would have a F<Changes> file that could be +cribbed. -Avoid compiler warnings. +[ Within each section, list entries as a =item entry ] -=item * +=head2 New Modules and Pragmata -C<PerlIO::via> has been upgraded from 0.10 to 0.11. - -Avoid compiler warnings. +=over 4 =item * -C<POSIX> has been upgraded from 1.22 to 1.23. - -Avoid compiler warnings. +XXX -=item * +=back -C<re> has been upgraded from 0.14 to 0.15. +=head2 Updated Modules and Pragmata -Enforce that C</d>, C</u>, and C</l> are mutually exclusive. +=over 4 =item * -C<SDBM_File> has been upgraded from 1.08 to 1.09. - -Avoid compiler warnings. - -Remove obsolete RCS keywords. - -Test improvements. +XXX -=item * +=back -C<Socket> has been upgraded from 1.91 to 1.92. +=head2 Removed Modules and Pragmata -It has several new functions for handling IPv6 addresses. +=over 4 =item * -C<Storable> has been upgraded from 2.24 to 2.25. +XXX -This adds support for serialising code references that contain UTF-8 strings -correctly. The Storable minor version number changed as a result, meaning that -Storable users who 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>. +=back -Avoid compiler warnings. +=head1 Documentation -=item * +XXX Changes to files in F<pod/> go here. Consider grouping entries by +file and be sure to link to the appropriate page, e.g. L<perlfunc>. -C<threads> has been upgraded from 1.81_02 to 1.81_03. +=head2 New Documentation -Avoid compiler warnings. +XXX Changes which create B<new> files in F<pod/> go here. -=item * +=head3 L<XXX> -C<threads::shared> has been upgraded from 1.34 to 1.35. +XXX Description of the purpose of the new file here -Avoid compiler warnings. +=head2 Changes to Existing Documentation -=item * +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. -C<Time::HiRes> has been upgraded from 1.9721 to 1.9721_01. +=head3 L<XXX> -Build fix in blead for VMS. +=over 4 =item * -C<Unicode::Collate> has been upgraded from 0.67 to 0.6801. +XXX Description of the change here -Documentation clarification. +=back -Test improvements. +=head1 Diagnostics -=item * +The following additions or changes have been made to diagnostic output, +including warnings and fatal error messages. For the complete list of +diagnostic messages, see L<perldiag>. -C<Unicode::Normalize> has been upgraded from 1.07 to 1.08. +XXX New or changed warnings emitted by the core's C<C> code go here. Also +include any changes in L<perldiag> that reconcile it to the C<C> code. -Avoid compiler warnings. +[ Within each section, list entries as a =item entry ] -=item * - -C<Unicode::UCD> has been upgraded from 0.29 to 0.30. +=head2 New Diagnostics -Add info about named sequence alternatives. +XXX Newly added diagnostic messages go here -Don't use C<CompositionExclusions.txt>. +=over 4 =item * -C<version> has been upgraded from 0.82 to 0.86. - -Modify export logic for C<is_strict> and C<is_lax>. - -Various backcompat fixes. +XXX -=item * +=back -C<Win32> has been upgraded from 0.39 to 0.41. +=head2 Changes to Existing Diagnostics -Add several functions. +XXX Changes (i.e. rewording) of diagnostic messages go here -Corrections to names returned by C<Win32::GetOSName> and -C<Win32::GetOSDisplayName>. +=over 4 =item * -C<XS::APItest> has been upgraded from 0.26 to 0.27. - -Test new API functions. - -Avoid compiler warnings. +XXX =back -=head2 Dual-life Modules and Pragmata +=head1 Utility Changes -These modules were formerly distributed only in the Perl core -distribution, and are now dual-lifed (meaning they are now also available -separately on CPAN): +XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go +here. Most of these are built within the directories F<utils> and F<x2p>. -=over 4 +[ List utility changes as a =head3 entry for each utility and =item +entries for each change +Use L<XXX> with program names to get proper documentation linking. ] -=item * +=head3 L<XXX> -C<autouse> +=over 4 =item * -C<Devel::SelfStubber> - -=item * +XXX -C<Dumpvalue> +=back -=item * +=head1 Configuration and Compilation -C<Env> +XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools +go here. Any other changes to the Perl build process should be listed here. +However, any platform-specific changes should be listed in the +L</Platform Support> section, instead. -=item * +[ List changes as a =item entry ]. -C<File::CheckTree> +=over 4 =item * -C<I18N::Collate> +XXX =back -=head1 Diagnostics +=head1 Testing -The following additions or changes have been made to diagnostic output, -including warnings and fatal error messages. For the complete list of -diagnostic messages, see L<perldiag>. +XXX Any significant changes to the testing of a freshly built perl should be +listed here. Changes which create B<new> files in F<t/> go here as do any +large changes to the testing harness (e.g. when parallel testing was added). +Changes to existing files in F<t/> aren't worth summarising, although the bugs +that they represent may be covered elsewhere. -=head2 New Diagnostics +[ List each test improvement as a =item entry ] =over 4 =item * -There is a new "Closure prototype called" error -L<[perl #68560]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68560>. +XXX =back -=head2 Changes to Existing Diagnostics +=head1 Platform Support -=over 4 +XXX Any changes to platform support should be listed in the sections below. -=item * +[ Within the sections, list each platform as a =item entry with specific +changes as paragraphs below it. ] -The "Found = in conditional" warning that is emitted when a constant is -assigned to a variable in a condition is now withheld if the constant is -actually a subroutine or one generated by C<use constant>, since the value -of the constant may not be known at the time the program is written -L<[perl #77762]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77762>. +=head2 New Platforms -=back - -=head1 Configuration and Compilation +XXX List any platforms that this version of perl compiles on, that previous +versions did not. These will either be enabled by new files in the F<hints/> +directories, or new subdirectories and F<README> files at the top level of the +source tree. =over 4 -=item * +=item XXX-some-platform -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. +XXX =back -=head1 Testing +=head2 Discontinued Platforms + +XXX List any platforms that this version of perl no longer compiles on. =over 4 -=item * +=item XXX-some-platform -Tests for C<Fcntl>, C<File::Glob>, C<GDBM_File>, C<IPC::Open3>, -C<NDBM_File>, C<ODBM_File>, C<Opcode>, C<PerlIO::encoding>, C<SDBM_File>, -and C<Storable> now use the L<Test::More> framework. +XXX =back -=head1 Platform Support - =head2 Platform-Specific Notes -=over 4 +XXX List any changes for specific platforms. This could include configuration +and compilation changes or changes in portability/compatibility. However, +changes within modules for platforms should generally be listed in the +L</Modules and Pragmata> section. -=item NetBSD - -The NetBSD hints file has been changed to make the system's malloc the -default. +=over 4 -=item Windows +=item XXX-some-platform -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. +XXX =back =head1 Internal Changes -=over 4 +XXX Changes which affect the interface available to C<XS> code go here. +Other significant internal changes for future core maintainers should +be noted as well. -=item * +[ List each test improvement as a =item entry ] -The L<C<mg_findext()>|perlapi/mg_findext> and -L<C<sv_unmagicext()>|perlapi/sv_unmagicext> -functions have been added to the API. -They allow extension authors to find and remove magic attached to -scalars based on both the magic type and the magic virtual table, similar to how -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. +=over 4 =item * -The -L<C<parse_fullexpr()>|perlapi/parse_fullexpr>, -L<C<parse_listexpr()>|perlapi/parse_listexpr>, -L<C<parse_termexpr()>|perlapi/parse_termexpr>, and -L<C<parse_arithexpr()>|perlapi/parse_arithexpr> -functions have been added to the API. They perform -recursive-descent parsing of expressions at various precedence levels. -They are expected to be used by syntax plugins. +XXX =back =head1 Selected Bug Fixes -=over 4 - -=item * - -C<BEGIN {require 5.12.0}> now behaves as documented, rather than behaving -identically to C<use 5.12.0;>. Previously, C<require> in a C<BEGIN> block -was erroneously executing the C<use feature ':5.12.0'> and -C<use strict; use warnings;> behaviour, which only C<use> was documented to -provide -L<[perl #69050]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=69050>. +XXX Important bug fixes in the core language are summarised here. +Bug fixes in files in F<ext/> and F<lib/> are best summarised in +L</Modules and Pragmata>. -=item * +[ List each fix as a =item entry ] -C<use 5.42> -L<[perl #69050]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=69050>, -C<use 6> and C<no 5> no longer leak memory. - -=item * - -C<eval "BEGIN{die}"> no longer leaks memory on non-threaded builds. - -=item * - -PerlIO no longer crashes when called recursively, e.g., from a signal -handler. Now it just leaks memory -L<[perl #75556]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75556>. - -=item * - -Defining a constant with the same name as one of perl's special blocks -(e.g., INIT) stopped working in 5.12.0, but has now been fixed -L<[perl #78634]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78634>. - -=item * - -A reference to a literal value used as a hash key (C<$hash{\"foo"}>) used -to be stringified, even if the hash was tied -L<[perl #79178]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=79178>. - -=item * - -A closure containing an C<if> statement followed by a constant or variable -is no longer treated as a constant -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 instead -of a crash -L<[perl #68560]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68560>. - -=item * - -A regular expression optimisation would sometimes cause a match with a -C<{n,m}> quantifier to fail when it should match -L<[perl #79152]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=79152>. - -=item * - -What has become known as the "Unicode Bug" is mostly resolved in this release. -Under C<use feature 'unicode_strings'>, the internal storage format of a -string no longer affects the external semantics. There are two known -exceptions. User-defined case changing functions, which are planned to -be deprecated in 5.14, require utf8-encoded strings to function; and the -character C<LATIN SMALL LETTER SHARP S> in regular expression -case-insensitive matching has a somewhat different set of bugs depending -on the internal storage format. Case-insensitive matching of all -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> no longer causes 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>. +=over 4 =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>. +XXX -=item * +=back -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>. +=head1 Known Problems -=item * +XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any +tests that had to be C<TODO>ed for the release would be noted here, unless +they were specific to a particular platform (see below). -The C<B> module was returning C<B::OP>s instead of C<B::LOGOP>s 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. +This is a list of some significant unfixed bugs, which are regressions +from either 5.XXX.XXX or 5.XXX.XXX. -=item * +[ List each fix as a =item entry ] -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>. +=over 4 =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>. +XXX =back -=head1 Acknowledgements +=head1 Obituary -Perl 5.13.8 represents approximately one month of development since -Perl 5.13.7 and contains 38715 lines of changes across 546 files from -38 authors and committers. +XXX If any significant core contributor has died, we've added a short obituary +here. -Thank you to the following for contributing to this release: +=head1 Acknowledgements -Abhijit Menon-Sen, Abigail, Andreas KE<0xf6>nig, Ben Morrow, Brad Gilbert, -brian d foy, Chip Salzenberg, Chris 'BinGOs' Williams, Craig A. Berry, -David Golden, David Leadbeater, David Mitchell, Father Chrysostomos, -Florian Ragwitz, Goro Fuji, H.Merijn Brand, Jan Dubois, Jerry D. Hedden, -Jesse Vincent, John Peacock, Karl Williamson, Lukas Mai, Marvin Humphrey, -Max Maischein, Michael Breen, Michael Fig, Nicholas Clark, Nick Cleaton, -Paul Evans, Peter J. Holzer, Peter John Acklam, Rafael Garcia-Suarez, -Reini Urban, Renee Baecker, Ricardo Signes, Tony Cook, Yves Orton, Zefram +XXX The list of people to thank goes here. =head1 Reporting Bugs |