diff options
Diffstat (limited to 'Master/tlpkg/tlperl/lib/pods/perl5133delta.pod')
-rw-r--r-- | Master/tlpkg/tlperl/lib/pods/perl5133delta.pod | 667 |
1 files changed, 667 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl/lib/pods/perl5133delta.pod b/Master/tlpkg/tlperl/lib/pods/perl5133delta.pod new file mode 100644 index 00000000000..af03607adf6 --- /dev/null +++ b/Master/tlpkg/tlperl/lib/pods/perl5133delta.pod @@ -0,0 +1,667 @@ +=encoding utf8 + +=head1 NAME + +perl5133delta - what is new for perl v5.13.3 + +=head1 DESCRIPTION + +This document describes differences between the 5.13.3 release and +the 5.13.2 release. + +If you are upgrading from an earlier release such as 5.13.1, first read +L<perl5132delta>, which describes differences between 5.13.1 and +5.13.2. + +=head1 Core Enhancements + +=head2 \o{...} for octals + +There is a new escape sequence, C<"\o">, in double-quote-like contexts. +It must be followed by braces enclosing an octal number of at least one +digit. It interpolates as the character with an ordinal value equal to +the octal number. This construct allows large octal ordinals beyond the +current max of 0777 to be represented. It also allows you to specify a +character in octal which can safely be concatenated with other regex +snippets and which won't be confused with being a backreference to +a regex capture group. See L<perlre/Capture groups>. + +=head2 C<\N{I<name>}> and C<charnames> enhancements + +C<\N{}> and C<charnames::vianame> now know about the abbreviated +character names listed by Unicode, such as NBSP, SHY, LRO, ZWJ, etc., as +well as all the customary abbreviations for the C0 and C1 control +characters (such as ACK, BEL, CAN, etc.), as well as a few new variants +in common usage of some C1 full names. + +In the past, it was ineffective to override one of Perl's abbreviations +with your own custom alias. Now it works. + +You can also create a custom alias directly to the ordinal of a +character, known by C<\N{...}>, C<charnames::vianame()>, and +C<charnames::viacode()>. Previously, an alias had to be to an official +Unicode character name. This made it impossible to create an alias for +a code point that had no name, such as the ones reserved for private +use. So this change allows you to make more effective use of private +use characters. Only if there is no official name will +C<charnames::viacode()> return your custom one. + +See L<charnames> for details on all these changes. + +=head2 Uppercase X/B allowed in hexadecimal/binary literals + +Literals may now use either upper case C<0X...> or C<0B...> prefixes, +in addition to the already supported C<0x...> and C<0b...> +syntax. (RT#76296) (a674e8d, 333f87f) + +C, Ruby, Python and PHP already supported this syntax, and it makes +Perl more internally consistent. A round-trip with C<eval sprintf +"%#X", 0x10> now returns C<16> in addition to C<eval sprintf "%#x", +0x10>, which worked before. + +=head1 Incompatible Changes + +=head2 \400 - \777 + +Use of C<\400> - C<\777> in regexes in certain circumstances has given +different, anomalous behavior than their use in all other +double-quote-like contexts. Since 5.10.1, a deprecated warning message +has been raised when this happens. Now, all double-quote-like contexts +have the same behavior, namely to be equivalent to C<\x{100}> - +C<\x{1FF}>, with no deprecation warning. Use of these values in the +command line option C<"-0"> retains the current meaning to slurp input +files whole; previously, this was documented only for C<"-0777">. It is +recommended, however, because of various ambiguities, to use the new +C<\o{...}> construct to represent characters in octal. +(fa1639c..f6993e9). + +=head1 Deprecations + +=head2 Omitting a space between a regular expression and subsequent word + +Omitting a space between a regex pattern or pattern modifiers and the +following word is deprecated. Deprecation for regular expression +I<matches> was added in Perl 5.13.2. In this release, the deprecation +is extended to regular expression I<substitutions>. For example, +C<< s/foo/bar/sand $bar >> will still be parsed as +C<< s/foo/bar/s and $bar >> but will issue a warning. (aa78b66) + +=head2 Deprecation warning added for deprecated-in-core .pl libs + +This is a mandatory warning, not obeying -X or lexical warning bits. +The warning is modelled on that supplied by deprecate.pm for +deprecated-in-core .pm libraries. It points to the specific CPAN +distribution that contains the .pl libraries. The CPAN version, of +course, does not generate the warning. (0111154) + +=head1 Performance Enhancements + +There are several small optimizations to reduce CPU cache misses in various very +commonly used modules like C<warnings> and C<Carp> as well in accessing +file-handles for reading. + +=head1 Modules and Pragmata + +=head2 Updated Modules and Pragmata + +=over 4 + +=item C<autodie> + +Upgraded from version 2.06_01 to 2.10. + +=item C<charnames> + +Upgraded from version 1.08 to 1.10. + +C<viacode()> is now significantly faster. (f3227b7) + +=item C<lib> + +Upgraded from version 0.62 to 0.63. + +=item C<threads> + +Upgraded from version 1.77_02 to 1.77_03. + +=item C<threads::shared> + +Upgraded from version 1.33_01 to 1.33_02. + +=item C<warnings> + +Upgraded from version 1.09 to 1.10. + +Calling C<use warnings> without arguments is now significantly more efficient. +(8452af9) + +=item C<Archive::Extract> + +Upgraded from version 0.38 to 0.42. + +Updates since 0.38 include: a safe print method that guards +Archive::Extract from changes to $\; a fix to the tests when run in core +perl; support for TZ files; and a modification for the lzma logic to favour +IO::Uncompress::Unlzma (d7f8799) + +=item C<Archive::Tar> + +Upgraded from version 1.54 to 1.64. + +Important changes since 1.54 include: compatibility with busybox +implementations of tar; a fix so that C<write()> and C<create_archive()> +close only handles they opened; and a bug was fixed regarding the exit code +of extract_archive. (afabe0e) + +=item C<Attribute::Handlers> + +Upgraded from version 0.87 to 0.88. + +=item C<Compress::Raw::Bzip2> + +Upgraded from version 2.024 to 2.027. + +=item C<Compress::Raw::Zlib> + +Upgraded from version 2.024 to 2.027_01. + +=item C<Compress::Zlib> + +Upgraded from version 2.024 to 2.027. + +=item C<CPANPLUS> + +Upgraded from version 0.90 to 0.9007. + +Fixed the shell test to skip if test is not being run under a terminal; +resolved the issue where a prereq on Config would not be recognised as a +core module. (d4e225a) + +=item C<Digest::MD5> + +Upgraded from version 2.39 to 2.40. + +=item C<Digest::SHA> + +Upgraded from version 5.47 to 5.48. + +=item C<Exporter> + +Upgraded from version 5.64_02 to 5.64_03. + +Exporter no longer overrides C<$SIG{__WARN__}> (RT #74472) (9b86bb5) + +=item C<ExtUtils::CBuilder> + +Upgraded from version 0.27 to 0.2703. + +=item C<ExtUtils::Manifest> + +Upgraded from version 1.57 to 1.58. + +=item C<ExtUtils::ParseXS> + +Upgraded from version 2.2205 to 2.2206. + +=item C<File::Copy> + +Upgraded from version 2.19 to 2.20. + +Skips suid tests on a nosuid partition. These tests were being skipped on +OpenBSD, but nosuid partitions can exist on other systems too. Now it just +checks if it can create a suid directory, if not the tests are skipped. +Perl builds without errors in a nosuid /tmp with this patch. (cae9400) + +=item C<I18N::LangTags> + +Upgraded from version 0.35 to 0.35_01. + +=item C<IPC::Cmd> + +Upgraded from version 0.58 to 0.60. + +=item C<IPC::SysV> + +Upgraded from version 2.01 to 2.03. + +=item C<Locale::Maketext> + +Upgraded from version 1.14 to 1.15. + +Locale::Maketext guts have been merged back into the main module (87d86da) +and adds external cache support (ace47d6) + +=item C<Module::Build> + +Upgraded from version 0.3603 to 0.3607. + +=item C<Module::CoreList> + +Upgraded from version 2.34 to 2.36. + +=item C<Module::Load> + +Upgraded from version 0.16 to 0.18. + +=item C<Term::ANSIColor> + +Upgraded from version 2.02 to 3.00. + +=item C<Test::Harness> + +Upgraded from version 3.17 to 3.21. + +The core update from Test-Harness 3.17 to 3.21 fixed some things, but +also L<introduced a known problem|/"Known Problems"> with argument +passing to non-Perl tests. + +=item C<Time::HiRes> + +Upgraded from version 1.9719 to 1.9721. + +=item C<Time::Piece> + +Upgraded from version 1.15_01 to 1.20_01. + +=item C<Unicode::Collate> + +Upgraded from version 0.52_01 to 0.53. + +Includes Unicode Collation Algorithm 18 (74b94a7) + +=item C<Unicode::Normalize> + +Upgraded from version 1.03 to 1.06. + +=back + +=head1 Documentation + +=head2 New Documentation + +=head3 L<perl5121delta> + +The Perl 5.12.1 perldelta file was added from the Perl maintenance branch + +=head2 Changes to Existing Documentation + +=head3 General changes + +=over + +=item * + +Octal character escapes in documentation now prefer a three-digit octal +escape or the new C<\o{...}> escape as they have more consistent behavior +in different contexts than other forms. (ce7b6f0) (d8b950d) (e1f120a) + +=item * + +Documentation now standardizes on the term 'capture group' over 'buffer' +in regular expression documentation (c27a5cf) + +=back + +=head3 L<perlfunc> + +=over + +=item * + +Added cautionary note about "no VERSION" (e0de7c2) + +=item * + +Added additional notes regarding srand when forking (d460397) + +=back + +=head3 L<perlop> + +=over 4 + +=item * + +Improved documentation of unusual character escapes (4068718, 9644846) + +=item * + +Clarified how hexadecimal escapes are interpreted, with particular +attention to the treatment of invalid characters (9644846) + +=back + +=head3 L<perlrun> + +=over + +=item * + +Clarified the behavior of the C<-0NNN> switch for C<-0400> or higher (7ba31cb) + +=back + +=head3 L<perlpolicy> + +=over + +=item * + +Added the policy on compatibility and deprecation along with definitions of +terms like "deprecation" (70e4a83) + +=back + +=head3 L<perlre> + +=over + +=item * + +Added examples of the perils of not using \g{} when there are more +than nine back-references (9d86067) + +=back + +=head3 L<perltie> + +=over + +=item * + +Updated some examples for modern Perl style (67d00dd) + +=back + +=head1 Utility Changes + +=head3 L<perldb> + +=over + +=item * + +The remote terminal works after forking and spawns new sessions - one +for each forked process (11653f7) + +=item * + +Uses the less pager path from Config instead of searching for it (bf320d6) + +=back + +=head1 Configuration and Compilation + +=over 4 + +=item * + +Adjusted 'make test.valgrind' to account for cpan/dist/ext separation +(e07ce2e) + +=back + +=head1 Testing + +=over 4 + +=item * + +F<t/harness> clears PERL5LIB, PERLLIB, PERL5OPT as t/TEST does (a2d3de1) + +=item * + +Many common testing routines were refactored into t/lib/common.pl + +=item * + +Several test files have been modernized to use Test::More + +=back + +=head1 Platform Support + +=head2 Discontinued Platforms + +=over 4 + +=item MacOS Classic + +Support for MacOS Classic within ExtUtils::MakeMaker was removed from Perl in +December 2004. Vestigial MacOS Classic specific code has now been removed +from other core modules as well (8f8c2a4..c457df0) + +=back + +=head2 Platform-Specific Notes + +=over 4 + +=item Win32 + +t/io/openpid.t now uses the alarm() watchdog strategy for more +robustness (5732108) + +=back + +=head1 Internal Changes + +=over 4 + +=item * + +Under some circumstances, the C<CvGV()> field of a CV is now reference +counted. To ensure consistent behaviour, direct assignment to it, for +example C<CvGV(cv) = gv> is now a compile-time error. A new macro, +C<CvGV_set(cv,gv)> has been introduced to perform this operation safely. +Note that modification of this field is not part of of the public API, +regardless of this new macro. This change caused some +L<issues|/"Known Problems"> in modules that used the private C<GvGV()> +field. + +=item * + +It is now possible for XS code to hook into Perl's lexical scope +mechanism at compile time, using the new C<Perl_blockhook_register> +function. See L<perlguts/"Compile-time scope hooks">. + +=item * + +Added C<Perl_croak_no_modify()> to implement +C<Perl_croak("%s", PL_no_modify)> (6ad8f25) + +=item * + +Added prototypes for C<tie()> and C<untie()> to allow overloading (RT#75902) +(1db4d19) + +=item * + +Adds C<my_[l]stat_flags()> to replace C<my_[l]stat()>. C<my_stat()> and +C<my_lstat()> call get magic on the stack arg, so create C<_flags()> +variants that allow us to control this. (0d7d409) + +=back + +=head1 Selected Bug Fixes + +=over 4 + +=item * + +Some work has been done on the internal pointers that link between symbol +tables (stashes), typeglobs and subroutines. This has the effect that +various edge cases related to deleting stashes or stash entries (e.g. +<%FOO:: = ()>), and complex typeglob or code reference aliasing, will no +longer crash the interpreter. + +=item * + +Fixed readline() when interrupted by signals so it no longer returns +the "same thing" as before or random memory + +=item * + +Fixed a regression of kill() when a match variable is used for the +process ID to kill (RT#75812) (8af710e) + +=item * + +Fixed several subtle bugs in sort() when @_ is accessed within a subroutine +used for sorting (RT#72334) (8f443ca) + +=item * + +Catch yyparse() exceptions in C<< (?{...}) >> (RT#2353) (634d691) + +=item * + +Avoid UTF-8 cache panics with offsets beyond a string (RT #75898) (3e2d381) + +=item * + +Fixed POSIX::strftime memory leak (RT#73520) (c4bc4aa) + +=item * + +Doesn't set strict with C<no VERSION> if C<VERSION> is greater than 5.12 +(da8fb5d) + +=item * + +Avoids multiple FETCH/stringify on filetest ops (40c852d) + +=item * + +Fixed issue with string C<eval> not detecting taint of overloaded/tied +arguments (RT #75716) (895b760) + +=item * + +Fix potential crashes of string C<eval> when evaluating a object with +overloaded stringification by creating a stringified copy when necessary +(3e5c018) + +=item * + +Fixed bug where overloaded stringification could remove tainting +(RT #75716) (a02ec77) + +=item * + +Plugs more memory leaks in vms.c. (9e2bec0) + +=item * + +Fix pthread include error for Time::Piece (e9f284c) + +=back + +=head1 Known Problems + +=over 4 + +=item * + +Bug fixes involving CvGV reference counting break Sub::Name. A +patch has been sent upstream to the maintainer + +=item * + +readline() returns an empty string instead of undef when it is +interrupted by a signal + +=item * + +Test-Harness was updated from 3.17 to 3.21 for this release. A rewrite +in how it handles non-Perl tests (in 3.17_01) broke argument passing to +non-Perl tests with L<prove> (RT #59186), and required that non-Perl +tests be run as C<prove ./test.sh> instead of C<prove test.sh> These +issues are being solved upstream, but didn't make it into this release. +They're expected to be fixed in time for perl v5.13.4. (RT #59457) + +=item * + +C<version> now prevents object methods from being called as class methods +(d808b68) + +=back + +=head1 Errata + +=over 4 + +=item * + +Retroactively added the Acknowledgements list to L<perl5132delta>, +which was excluded in the original release (d1e2db0) + +=back + +=head1 Acknowledgements + +Perl 5.13.3 represents approximately one month of development since Perl +5.13.2, and contains 12,184 lines of changes across 575 files from 104 +authors and committers. + +Thank you to the following for contributing to this release: + +Abhijit Menon-Sen, Abigail, Alex Davies, Alex Vandiver, Alexandr +Ciornii, Andreas J. Koenig, Andrew Rodland, Andy Dougherty, Aristotle +Pagaltzis, Arkturuz, Ben Morrow, Bo Borgerson, Bo Lindbergh, Brad +Gilbert, Bram, Brian Phillips, Chas. Owens, Chip Salzenberg, Chris +Williams, Craig A. Berry, Curtis Jewell, Dan Dascalescu, Daniel +Frederick Crisman, Dave Rolsky, David Caldwell, David E. Wheeler, David +Golden, David Leadbeater, David Mitchell, Dennis Kaarsemaker, Eric +Brine, Father Chrysostomos, Florian Ragwitz, Frank Wiegand, Gene +Sullivan, George Greer, Gerard Goossen, Gisle Aas, Goro Fuji, Graham +Barr, H.Merijn Brand, Harmen, Hugo van der Sanden, James E Keenan, James +Mastros, Jan Dubois, Jerry D. Hedden, Jesse Vincent, Jim Cromie, John +Peacock, Jos Boumans, Josh ben Jore, Karl Williamson, Kevin Ryde, Leon +Brocard, Lubomir Rintel, Maik Hentsche, Marcus Holland-Moritz, Matt +Johnson, Matt S Trout, Max Maischein, Michael Breen, Michael G Schwern, +Moritz Lenz, Nga Tang Chan, Nicholas Clark, Nick Cleaton, Nick Johnston, +Niko Tyni, Offer Kaye, Paul Marquess, Philip Hazel, Philippe Bruhat, +Rafael Garcia-Suarez, Rainer Tammer, Reini Urban, Ricardo Signes, +Richard Soderberg, Robin Barker, Ruslan Zakirov, Salvador Fandino, +Salvador Ortiz Garcia, Shlomi Fish, Sinan Unur, Sisyphus, Slaven Rezic, +Steffen Mueller, Stepan Kasal, Steve Hay, Steve Peters, Sullivan Beck, +Tim Bunce, Todd Rinaldo, Tom Christiansen, Tom Hukins, Tony Cook, +Vincent Pit, Yuval Kogman, Yves Orton, Zefram, brian d foy, chromatic, +kmx, Ævar Arnfjörð Bjarmason + +=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 |