diff options
Diffstat (limited to 'pod/perl51910delta.pod')
-rw-r--r-- | pod/perl51910delta.pod | 464 |
1 files changed, 464 insertions, 0 deletions
diff --git a/pod/perl51910delta.pod b/pod/perl51910delta.pod new file mode 100644 index 0000000000..530374ddba --- /dev/null +++ b/pod/perl51910delta.pod @@ -0,0 +1,464 @@ +=encoding utf8 + +=head1 NAME + +perl51910delta - what is new for perl v5.19.10 + +=head1 DESCRIPTION + +This document describes differences between the 5.19.9 release and the 5.19.10 +release. + +If you are upgrading from an earlier release such as 5.19.8, first read +L<perl5199delta>, which describes differences between 5.19.8 and 5.19.9. + +=head1 Deprecations + +=head2 Discouraged features + +=over 4 + +=item * + +The "interpreter-based threads" provided by Perl are not the fast, lightweight +system for multitasking that one might expect or hope for. Threads are +implemented in a way that make them easy to misuse. Few people know how to +use them correctly or will be able to provide help. + +The use of interpreter-based threads in perl is officially +L<discouraged|perlpolicy/discouraged>. + +=back + +=head1 Performance Enhancements + +=over 4 + +=item * + +When doing a global regex match on a string that came from the C<readline> +or C<E<lt>E<gt>> operator, the data is no longer copied unnecessarily. +[perl #121259] + +=item * + +Executing a regex that contains the C<^> anchor (or its variant under the +C</m> flag) has been made much faster in several situations. + +=item * + +It is now faster to create certain sorts of lists, including array and hash +slices. + +=item * + +The optimisation for arrays indexed with a small constant integer is now +applied for integers in the range -128..127, rather than 0..255. This should +speed up Perl code using expressions like C<$x[-1]>, at the expense of +(presumably much rarer) code using expressions like C<$x[200]>. + +=item * + +Dereferencing (as in C<$obj-E<gt>[0]> or C<$obj-E<gt>{k}>) is now faster +when C<$obj> is an instance of a class that has overloaded methods, but +doesn't overload any of the dereferencing methods C<@{}>, C<%{}>, and so on. + +=item * + +The first iteration over a large hash (using C<keys> or C<each>) is now +faster. This is achieved by preallocating the hash's internal iterator +state, rather than lazily creating it when the hash is first iterated. (For +small hashes, the iterator is still created only when first needed. The +assumption is that small hashes are more likely to be used as objects, and +therefore never allocated. For large hashes, that's less likely to be true, +and the cost of allocating the iterator is swamped by the cost of allocating +space for the hash itself.) + +=item * + +Perl's optimiser no longer skips optimising code that follows certain +C<eval {}> expressions (including those with an apparent infinite loop). + +=item * + +The implementation now does a better job of avoiding meaningless work at +runtime. Internal effect-free "null" operations (created as a side-effect of +parsing Perl programs) are normally deleted during compilation. That +deletion is now applied in some situations that weren't previously handled. + +=item * + +A few micro-optimisations have been applied to performance-sensitive parts +of the implementation, including subroutine invocation and scope exit. + +=item * + +Perl now does less disk I/O when dealing with Unicode properties that cover +up to three ranges of consecutive code points. + +=back + +=head1 Modules and Pragmata + +=head2 Updated Modules and Pragmata + +=over 4 + +=item * + +L<Attribute::Handlers> has been upgraded from version 0.95 to 0.96. + +=item * + +L<autouse> has been upgraded from version 1.07 to 1.08. + +=item * + +L<B::Deparse> has been upgraded from version 1.25 to 1.26. + +=item * + +L<base> has been upgraded from version 2.21 to 2.22. + +Co-exist more gracefully with C<CORE::GLOBAL::require> +overrides. [perl #121196] + +=item * + +L<Carp> has been upgraded from version 1.32 to 1.33. + +=item * + +L<charnames> has been upgraded from version 1.39 to 1.40. + +=item * + +L<CPAN> has been upgraded from version 2.03 to 2.04. + +Fixes a bug preventing "force install" from working. [cpan #91706] + +Fixes an infinite-loop bug when using the C<make> command in the CPAN +shell. [cpan #86915] + +=item * + +L<CPAN::Meta> has been upgraded from version 2.133380 to 2.140640. + +Added a C<load_string()> method that guesses whether the string is YAML or JSON. + +=item * + +L<CPAN::Meta::YAML> has been upgraded from version 0.011 to 0.012. + +=item * + +L<Data::Dumper> has been upgraded from version 2.150 to 2.151. + +=item * + +L<Devel::PPPort> has been upgraded from version 3.21 to 3.22. + +=item * + +L<Digest::SHA> has been upgraded from version 5.87 to 5.88. + +=item * + +L<ExtUtils::Install> has been upgraded from version 1.62 to 1.63. + +=item * + +L<ExtUtils::MakeMaker> has been upgraded from version 6.88 to 6.92. + +=item * + +L<ExtUtils::ParseXS> has been upgraded from version 3.23 to 3.24. + +=item * + +L<ExtUtils::Typemaps> has been upgraded from version 3.23 to 3.24. + +=item * + +L<feature> has been upgraded from version 1.35 to 1.36. + +=item * + +L<File::Find> has been upgraded from version 1.26 to 1.27. + +=item * + +L<Filter::Simple> has been upgraded from version 0.90 to 0.91. + +=item * + +L<Hash::Util::FieldHash> has been upgraded from version 1.14 to 1.15. + +=item * + +L<HTTP::Tiny> has been upgraded from version 0.042 to 0.043. + +No longer sends absolute request URI when tunneling SSL via proxy and fixes +regression in setting host name to verify SSL. + +=item * + +L<IO> has been upgraded from version 1.30 to 1.31. + +=item * + +L<IO::Socket::IP> has been upgraded from version 0.28 to 0.29. + +=item * + +L<Locale::Codes> has been upgraded from version 3.29 to 3.30. + +Fixed a problem that was preventing rename_* functions to work. [cpan #92680] + +=item * + +L<Module::CoreList> has been upgraded from version 3.06 to 3.09. + +=item * + +L<Module::Load> has been upgraded from version 0.30 to 0.32. + +Fix tests to support statically built perls. + +=item * + +L<mro> has been upgraded from version 1.15 to 1.16. + +=item * + +L<Parse::CPAN::Meta> has been upgraded from version 1.4413 to 1.4414. + +Added C<load_string>, which uses heuristics to guess YAML/JSON content. +C<load_file> will now attempt to detect YAML/JSON content if the suffix is not +.json, .yml or .yaml. + +=item * + +L<Pod::Perldoc> has been upgraded from version 3.21 to 3.23. + +=item * + +L<POSIX> has been upgraded from version 1.38_02 to 1.38_03. + +=item * + +L<Thread::Queue> has been upgraded from version 3.02 to 3.05. + +=item * + +L<threads> has been upgraded from version 1.92 to 1.93. + +=item * + +L<warnings> has been upgraded from version 1.22 to 1.23. + +=item * + +L<XS::Typemap> has been upgraded from version 0.12 to 0.13. + +=back + +=head1 Documentation + +=head2 Changes to Existing Documentation + +=over 4 + +=item * + +The L<perllexwarn> documentation used to describe the hierarchy of warning +categories understood by the L<warnings> pragma. That description has now +been moved to the L<warnings> documentation itself, leaving L<perllexwarn> +as a stub that points to it. This change consolidates all documentation for +lexical warnings in a single place. + +=back + +=head1 Diagnostics + +The following changes have been made to diagnostic output, +including warnings and fatal error messages. For the complete list of +diagnostic messages, see L<perldiag>. + +=head2 Changes to Existing Diagnostics + +=over 4 + +=item * + +When C<use re "debug"> executes a regex containing a backreference, the +debugging output now shows what string is being matched. + +=back + +=head1 Configuration and Compilation + +=over 4 + +=item * + +Where possible, the build now avoids recursive invocations of F<make> when +building pure-Perl extensions, without removing any parallelism from the +build. Currently around 80 extensions can be processed directly by the +F<make_ext.pl> tool, meaning that 80 invocations of F<make> and 160 +invocations of F<miniperl> are no longer made. + +=item * + +The build system now works correctly when compiling under GCC or Clang with +link-time optimization enabled (the C<-flto> option). [perl #113022] + +=back + +=head1 Testing + +=over 4 + +=item * + +The test suite no longer fails when the user's interactive shell maintains a +C<$PWD> environment variable, but the F</bin/sh> used for running tests +doesn't. + +=item * + +The C<test.valgrind> make target now allows tests to be run in parallel. +This target allows Perl's test suite to be run under Valgrind, which detects +certain sorts of C programming errors, though at significant cost in running +time. On suitable hardware, allowing parallel execution claws back a lot of +that additional cost. [perl #121431] + +=back + +=head1 Platform Support + +=head2 Platform-Specific Notes + +=over 4 + +=item Linux + +The hints file now looks for C<libgdbm_compat> only if C<libgdbm> itself is +also wanted. The former is never useful without the latter, and in some +circumstances, including it could actually prevent building. + +=item Mac OS + +The build system now honours an C<ld> setting supplied by the user running +F<Configure>. + +=item Win32 + +Killing a process tree with L<perlfunc/kill> and a negative signal, was broken +starting in 5.18.0. In this bug, C<kill> always returned 0 for a negative +signal even for valid PIDs, and no processes were terminated. This has been +fixed [perl #121230]. + +=back + +=head1 Internal Changes + +=over 4 + +=item * + +The Perl core now consistently uses C<av_tindex()> ("the top index of an +array") as a more clearly-named synonym for C<av_len()>. + +=item * + +The obscure interpreter variable C<PL_timesbuf> is expected to be removed +early in the 5.21.x development series, so that Perl 5.22.0 will not provide +it to XS authors. While the variable still exists in 5.19.10 (and will +continue to exist in 5.20.0), we hope that this advance warning of the +deprecation will help anyone who is using that variable. + +=back + +=head1 Selected Bug Fixes + +=over 4 + +=item * + +Static builds, as configured with C<-Uusedl> now build +correctly. [perl #121291] + +=item * + +Regexes with backreferences nested inside subpattern references now behave +more consistently: match variables are dynamically scoped during the +execution of the subpattern call. [perl #121299] + +=back + +=head1 Acknowledgements + +Perl 5.19.10 represents approximately 4 weeks of development since Perl 5.19.9 +and contains approximately 13,000 lines of changes across 330 files from 20 +authors. + +Excluding auto-generated files, documentation and release tools, there were +approximately 8,800 lines of changes to 220 .pm, .t, .c and .h files. + +Perl continues to flourish into its third decade thanks to a vibrant community +of users and developers. The following people are known to have contributed the +improvements that became Perl 5.19.10: + +Aaron Crane, Andy Dougherty, Aristotle Pagaltzis, Chris 'BinGOs' Williams, +Craig A. Berry, Daniel Dragan, David Mitchell, Father Chrysostomos, H.Merijn +Brand, Jerry D. Hedden, Karl Williamson, Matthew Horsfall, Nicholas Clark, Paul +Johnson, Peter Rabbitson, Ricardo Signes, Steffen Müller, Steve Hay, Tony +Cook, Yves Orton. + +The list above is almost certainly incomplete as it is automatically generated +from version control history. In particular, it does not include the names of +the (very much appreciated) contributors who reported issues to the Perl bug +tracker. + +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. + +For a more complete list of all of Perl's historical contributors, please see +the F<AUTHORS> file in the Perl source distribution. + +=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 +https://rt.perl.org/ . 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 will 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 |