diff options
Diffstat (limited to 'Master/tlpkg/tlperl/lib/pods/perl5135delta.pod')
-rw-r--r-- | Master/tlpkg/tlperl/lib/pods/perl5135delta.pod | 592 |
1 files changed, 0 insertions, 592 deletions
diff --git a/Master/tlpkg/tlperl/lib/pods/perl5135delta.pod b/Master/tlpkg/tlperl/lib/pods/perl5135delta.pod deleted file mode 100644 index de76d586bd7..00000000000 --- a/Master/tlpkg/tlperl/lib/pods/perl5135delta.pod +++ /dev/null @@ -1,592 +0,0 @@ -=encoding utf8 - -=head1 NAME - -perl5135delta - what is new for perl v5.13.5 - -=head1 DESCRIPTION - -This document describes differences between the 5.13.4 release and -the 5.13.5 release. - -If you are upgrading from an earlier release such as 5.13.3, first read -L<perl5134delta>, which describes differences between 5.13.3 and -5.13.4. - -=head1 Core Enhancements - -=head2 Adjacent pairs of nextstate opcodes are now optimized away - -Previously, in code such as - - use constant DEBUG => 0; - - sub GAK { - warn if DEBUG; - print "stuff\n"; - } - -the ops for C<warn if DEBUG;> would be folded to a C<null> op (C<ex-const>), but -the C<nextstate> op would remain, resulting in a runtime op dispatch of -C<nextstate>, C<nextstate>, ... - -The execution of a sequence of C<nextstate> ops is indistinguishable from just -the last C<nextstate> op so the peephole optimizer now eliminates the first of -a pair of C<nextstate> ops, except where the first carries a label, since labels -must not be eliminated by the optimizer and label usage isn't conclusively known -at compile time. - -=head2 API function to parse statements - -The C<parse_fullstmt> function has been added to allow parsing of a single -complete Perl statement. See L<perlapi> for details. - -=head2 API functions for accessing the runtime hinthash - -A new C API for introspecting the hinthash C<%^H> at runtime has been added. -See C<cop_hints_2hv>, C<cop_hints_fetchpvn>, C<cop_hints_fetchpvs>, -C<cop_hints_fetchsv>, and C<hv_copy_hints_hv> in L<perlapi> for details. - -=head2 C interface to C<caller()> - -The C<caller_cx> function has been added as an XSUB-writer's equivalent of -C<caller()>. See L<perlapi> for details. - -=head1 Incompatible Changes - -=head2 Magic variables outside the main package - -In previous versions of Perl, magic variables like C<$!>, C<%SIG>, etc. would -'leak' into other packages. So C<%foo::SIG> could be used to access signals, -C<${"foo::!"}> (with strict mode off) to access C's C<errno>, etc. - -This was a bug, or an 'unintentional' feature, which caused various ill effects, -such as signal handlers being wiped when modules were loaded, etc. - -This has been fixed (or the feature has been removed, depending on how you see -it). - -=head2 Smart-matching against array slices - -Previously, the following code resulted in a successful match: - - my @a = qw(a y0 z); - my @b = qw(a x0 z); - @a[0 .. $#b] ~~ @b; - -This odd behaviour has now been fixed -L<[perl #77468]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=77468>. - -=head2 C API changes - -The first argument of the C API function C<Perl_fetch_cop_label> has changed -from C<struct refcounted he *> to C<COP *>, to better insulate the user from -implementation details. - -This API function was marked as "may change", and likely isn't in use outside -the core. (Neither an unpacked CPAN, nor Google's codesearch, finds any other -references to it.) - -=head1 Deprecations - -=head2 Use of qw(...) as parentheses - -Historically the parser fooled itself into thinking that C<qw(...)> literals -were always enclosed in parentheses, and as a result you could sometimes omit -parentheses around them: - - for $x qw(a b c) { ... } - -The parser no longer lies to itself in this way. Wrap the list literal in -parentheses, like: - - for $x (qw(a b c)) { ... } - -=head1 Performance Enhancements - -=over 4 - -=item * - -Scalars containing regular expressions now only allocate the part of the C<SV> -body they actually use, saving some space. - -=item * - -Compiling regular expressions has been made faster for the case where upgrading -the regex to utf8 is necessary but that isn't known when the compilation begins. - -=back - -=head1 Modules and Pragmata - -=head2 Updated Modules and Pragmata - -=over 4 - -=item C<bignum> - -Upgraded from version 0.23 to 0.25. - -=item C<blib> - -Upgraded from version 1.05 to 1.06. - -=item C<open> - -Upgraded from version 1.07 to 1.08. - -=item C<threads-shared> - -Upgraded from version 1.33_02 to 1.33_03. - -=item C<warnings> and C<warnings::register> - -Upgraded from version 1.10 to 1.11 and from version 1.01 to 1.02 respectively. - -It is now possible to register warning categories other than the names of -packages using C<warnings::register>. See L<perllexwarn> for more information. - -=item C<B::Debug> - -Upgraded from version 1.12 to 1.16. - -=item C<CPANPLUS::Dist::Build> - -Upgraded from version 0.46 to 0.48. - -=item C<Data::Dumper> - -Upgraded from version 2.126 to 2.128. - -This fixes a crash when using custom sort functions that might cause the stack -to change. - -=item C<Encode> - -Upgraded from version 2.39 to 2.40. - -=item C<Errno> - -Upgraded from version 1.12 to 1.13. - -On some platforms with unusual header files, like Win32/gcc using mingw64 -headers, some constants which weren't actually error numbers have been exposed -by C<Errno>. This has been fixed -L<[perl #77416]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=77416>. - -=item C<ExtUtils::MakeMaker> - -Upgraded from version 6.5601 to 6.57_05. - -=item C<Filter::Simple> - -Upgraded from version 0.84 to 0.85. - -=item C<Hash::Util> - -Upgraded from version 0.08 to 0.09. - -=item C<Math::BigInt> - -Upgraded from version 1.89_01 to 1.95. - -This fixes, among other things, incorrect results when computing binomial -coefficients -L<[perl #77640]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77640>. - -=item C<Math::BigInt::FastCalc> - -Upgraded from version 0.19 to 0.22. - -=item C<Math::BigRat> - -Upgraded from version 0.24 to 0.26. - -=item C<Module::CoreList> - -Upgraded from version 2.37 to 2.38. - -=item C<PerlIO::scalar> - -Upgraded from version 0.08 to 0.09. - -=item C<POSIX> - -Upgraded from version 1.19 to 1.20. - -It now includes constants for POSIX signal constants. - -=item C<Safe> - -Upgraded from version 2.27 to 2.28. - -This fixes a possible infinite loop when looking for coderefs. - -=item C<Test::Simple> - -Upgraded from version 0.96 to 0.97_01. - -=item C<Tie::Hash> - -Upgraded from version 1.03 to 1.04. - -Calling C<< Tie::Hash-E<gt>TIEHASH() >> used to loop forever. Now it C<croak>s. - -=item C<Unicode::Collate> - -Upgraded from version 0.56 to 0.59. - -=item C<XSLoader> - -Upgraded from version 0.10 to 0.11. - -=back - -=head1 Documentation - -=head2 Changes to Existing Documentation - -=head3 L<perlapi> - -=over 4 - -=item * - -Many of the optree construction functions are now documented. - -=back - -=head3 L<perlbook> - -=over 4 - -=item * - -Expanded to cover many more popular books. - -=back - -=head3 L<perlfaq> - -=over 4 - -=item * - -L<perlfaq>, L<perlfaq2>, L<perlfaq4>, L<perlfaq5>, L<perlfaq6>, L<perlfaq8>, and -L<perlfaq9> have seen various updates and modernizations. - -=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 * - -Parsing code internal error (%s) - -New fatal error produced when parsing code supplied by an extension violated the -parser's API in a detectable way. - -=item * - -Use of qw(...) as parentheses is deprecated - -See L</"Use of qw(...) as parentheses"> for details. - -=back - -=head2 Changes to Existing Diagnostics - -=over 4 - -=item * - -C<warn> and C<die> now produce 'Wide character' warnings when fed a -character outside the byte range if STDERR is a byte-sized handle. - -=back - -=head1 Utility Changes - -=head3 L<h2ph> - -=over 4 - -=item * - -The use of a deprecated C<goto> construct has been removed -L<[perl #74404]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=74404>. - -=back - -=head1 Testing - -=over 4 - -=item * - -The new F<t/lib/universal.t> script tests the Internal::* functions and other -things in F<universal.c>. - -=item * - -A rare race condition in F<t/op/while_readdir.t> has been fixed, stopping it -from failing randomly when running tests in parallel. - -=item * - -The new F<t/op/leaky-magic.t> script tests that magic applied to variables in -the main packages does not affect other packages. - -=back - -=head1 Platform Support - -=head2 Platform-Specific Notes - -=over 4 - -=item VMS - -=over 4 - -=item * - -Make C<PerlIOUnix_open> honour default permissions on VMS. - -When C<perlio> became the default and C<unixio> became the default bottom layer, -the most common path for creating files from Perl became C<PerlIOUnix_open>, -which has always explicitly used C<0666> as the permission mask. - -To avoid this, C<0777> is now passed as the permissions to C<open()>. In the -VMS CRTL, C<0777> has a special meaning over and above intersecting with the -current umask; specifically, it allows Unix syscalls to preserve native default -permissions. - -=back - -=back - -=head1 Internal Changes - -=over 4 - -=item * - -C<CALL_FPTR> and C<CPERLscope> have been deprecated. - -Those are left from an old implementation of C<MULTIPLICITY> using C++ objects, -which was removed in Perl 5.8. Nowadays these macros do exactly nothing, so -they shouldn't be used anymore. - -For compatibility, they are still defined for external C<XS> code. Only -extensions defining C<PERL_CORE> must be updated now. - -=item * - -C<lex_stuff_pvs()> has been added as a convenience macro wrapping -C<lex_stuff_pvn()> for literal strings. - -=item * - -The recursive part of the peephole optimizer is now hookable. - -In addition to C<PL_peepp>, for hooking into the toplevel peephole optimizer, a -C<PL_rpeepp> is now available to hook into the optimizer recursing into -side-chains of the optree. - -=back - -=head1 Selected Bug Fixes - -=over 4 - -=item * - -A regression introduced in Perl 5.12.0, making -C<< my $x = 3; $x = length(undef) >> result in C<$x> set to C<3> has been -fixed. C<$x> will now be C<undef>. - -=item * - -A fatal error in regular expressions when processing UTF-8 data has been fixed -L<[perl #75680]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75680>. - -=item * - -An erroneous regular expression engine optimization that caused regex verbs like -C<*COMMIT> to sometimes be ignored has been removed. - -=item * - -The Perl debugger now also works in taint mode -L<[perl #76872]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=76872>. - -=item * - -Several memory leaks in cloning and freeing threaded Perl interpreters have been -fixed L<[perl #77352]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77352>. - -=item * - -A possible string corruption when doing regular expression matches on overloaded -objects has been fixed -L<[perl #77084]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77084>. - -=item * - -Magic applied to variables in the main package no longer affects other packages. -See L</Magic variables outside the main package> above -L<[perl #76138]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=76138>. - -=item * - -Opening a glob reference via C<< open $fh, "E<gt>", \*glob >> will no longer -cause the glob to be corrupted when the filehandle is printed to. This would -cause perl to crash whenever the glob's contents were accessed -L<[perl #77492]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77492>. - -=item * - -The postincrement and postdecrement operators, C<++> and C<-->, used to cause -leaks when being used on references. This has now been fixed. - -=item * - -A bug when replacing the glob of a loop variable within the loop has been fixed -L<[perl #21469]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=21469>. This -means the following code will no longer crash: - - for $x (...) { - *x = *y; - } - -=item * - -Perl would segfault if the undocumented C<Internals> functions that used -reference prototypes were called with the C<&foo()> syntax, e.g. -C<&Internals::SvREADONLY(undef)> -L<[perl #77776]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77776>. - -These functions now call C<SvROK> on their arguments before dereferencing them -with C<SvRV>, and we test for this case in F<t/lib/universal.t>. - -=item * - -When assigning a list with duplicated keys to a hash, the assignment used to -return garbage and/or freed values: - - @a = %h = (list with some duplicate keys); - -This has now been fixed -L<[perl #31865]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=31865>. - -=item * - -An earlier release of the 5.13 series of Perl changed the semantics of opening a -reference to a copy of a glob: - - my $var = *STDOUT; - open my $fh, '>', \$var; - -This was a mistake, and the previous behaviour from Perl 5.10 and 5.12, which is -to treat \$var as a scalar reference, has now been restored. - -=item * - -The regular expression bracketed character class C<[\8\9]> was effectively the -same as C<[89\000]>, incorrectly matching a NULL character. It also gave -incorrect warnings that the C<8> and C<9> were ignored. Now C<[\8\9]> is the -same as C<[89]> and gives legitimate warnings that C<\8> and C<\9> are -unrecognized escape sequences, passed-through. - -=item * - -C<warn()> and C<die()> now respect utf8-encoded scalars -L<[perl #45549]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=45549>. - -=back - -=head1 Known Problems - -=over 4 - -=item * - -The upgrade to Encode-2.40 has caused some tests in the libwww-perl distribution -on CPAN to fail. (Specifically, F<base/message-charset.t> tests 33-36 in version -5.836 of that distribution now fail.) - -=item * - -The upgrade to ExtUtils-MakeMaker-6.57_05 has caused some tests in the -Module-Install distribution on CPAN to fail. (Specifically, F<02_mymeta.t> tests -5 and 21, F<18_all_from.t> tests 6 and 15, F<19_authors.t> tests 5, 13, 21 and -29, and F<20_authors_with_special_characters.t> tests 6, 15 and 23 in version -1.00 of that distribution now fail.) - -=back - -=head1 Acknowledgements - -Perl 5.13.5 represents approximately one month of development since -Perl 5.13.4 and contains 74558 lines of changes across 549 files -from 45 authors and committers: - -Abigail, Alexander Alekseev, Aristotle Pagaltzis, Ben Morrow, Bram, brian d foy, -Chas. Owens, Chris 'BinGOs' Williams, Craig A. Berry, Curtis Jewell, Dagfinn -Ilmari Mannsåker, David Golden, David Leadbeater, David Mitchell, Eric Brine, -Father Chrysostomos, Florian Ragwitz, Gisle Aas, Jan Dubois, Jerry D. Hedden, -Jesse Vincent, Jim Cromie, Jirka Hruška, Karl Williamson, Michael G. Schwern, -Nicholas Clark, Paul Johnson, Philippe Bruhat (BooK), Piotr Fusik, Rafael -Garcia-Suarez, Rainer Tammer, Reini Urban, Ricardo Signes, Rob Hoelz, Robin -Barker, Steffen Mueller, Steve Hay, Steve Peters, Todd Rinaldo, Tony Cook, -Vincent Pit, Yves Orton, Zefram, Zsbán Ambrus, Ævar Arnfjörð Bjarmason. - -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 |