X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/2d1dec402582751bc536b701e31d9d8207b963e7..39ea6a4bb86bea2953fbe16b8063fd13073507a0:/pod/perldelta.pod diff --git a/pod/perldelta.pod b/pod/perldelta.pod index fdf0a05..ec68eec 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -1,306 +1,170 @@ =encoding utf8 -=for comment -This has been completed up to 0aae26c14, except for: -803e389 rurban CYG17 utf8 paths -d9298c1 rurban mymalloc isn't thread safe - =head1 NAME -[ this is a template for a new perldelta file. Any text flagged as -XXX needs to be processed before release. ] - -perldelta - what is new for perl v5.15.8 +perldelta - what is new for perl v5.15.9 =head1 DESCRIPTION -This document describes differences between the 5.15.7 release and -the 5.15.8 release. +This document describes differences between the 5.15.8 release and +the 5.15.9 release. -If you are upgrading from an earlier release such as 5.15.6, first read -L, which describes differences between 5.15.6 and -5.15.7. +If you are upgrading from an earlier release such as 5.15.7, first read +L, which describes differences between 5.15.7 and +5.15.8. =head1 Notice -XXX Any important notices here +This space intentionally left blank. =head1 Core Enhancements -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 section. - -[ List each enhancement as a =head2 entry ] - -=head2 Improved ability to mix locales and Unicode, including UTF-8 locales - -An optional parameter has been added to C - - use locale ':not_characters'; - -which tells Perl to use all but the C and C -portions of the current locale. Instead, the character set is assumed -to be Unicode. This allows locales and Unicode to be seamlessly mixed, -including the increasingly frequent UTF-8 locales. When using this -hybrid form of locales, the C<:locale> layer to the L pragma can -be used to interface with the file system, and there are CPAN modules -available for ARGV and environment variable conversions. - -Full details are in L. - -=head2 New function C and corresponding escape sequence C<\F> for Unicode foldcase - -Unicode foldcase is an extension to lowercase that gives better results -when comparing two strings case-insensitively. It has long been used -internally in regular expression C matching. Now it is available -explicitly through the new C function call (enabled by -S>, or C, or explicitly callable via -C) or through the new C<\F> sequence in double-quotish -strings. +=head2 C<< no feature; >> now means reset to default -Full details are in L. - -=head2 C<_> in subroutine prototypes - -The C<_> character in subroutine prototypes is now allowed before C<@> or -C<%>. +C<< no feature >> now resets to the default feature set. To disable all +features (which is likely to be a pretty special-purpose request, since +it presumably won't match any named set of semantics) you can now +write C<< no feature ':all' >>. =head1 Security -XXX Any security-related notices go here. In particular, any security -vulnerabilities closed should be noted here rather than in the -L section. +=head2 Malformed UTF-8 input could cause attempts to read beyond the end of the buffer -[ List each security issue as a =head2 entry ] +Two new XS-accessible functions, C and +C are now available to prevent this, and the Perl +core has been converted to use them. +See L. =head1 Incompatible Changes -XXX For a release on a stable branch, this section aspires to be: - - There are no changes intentionally incompatible with 5.XXX.XXX - If any exist, they are bugs, and we request that you submit a - report. See L below. - -[ List each incompatible change as a =head2 entry ] - -=head2 Special blocks called in void context - -Special blocks (C, C, C, C, C) are now -called in void context. This avoids wasteful copying of the result of the -last statement [perl #108794]. - -=head2 The C pragma and regexp objects - -With C, regular expression objects returned by C are -now stringified as "Regexp=REGEXP(0xbe600d)" instead of the regular -expression itself [perl #108780]. - -=head2 Two XS typemap Entries removed +=head2 C<< no feature; >> -Two presumably unused XS typemap entries have been removed from the -core typemap: T_DATAUNIT and T_CALLBACK. If you are, against all odds, -a user of these, please see the instructions on how to regain them -in L. +C now means reset to default. =head1 Deprecations -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 section. +=head2 Literal C<< "{" >> characters in regular expressions. -[ List each deprecation as a =head2 entry ] +It has been documented that the current plans include requiring a +literal C<< "{" >> to be escaped: 5.18 will emit deprecation warnings, +and it will be required in 5.20. -=head1 Performance Enhancements +=head2 XS functions C and C -XXX Changes which enhance performance without changing behaviour go here. There -may well be none in a stable release. +Use C and C instead. +See L. -[ List each enhancement as a =item entry ] +=head1 Performance Enhancements =over 4 =item * -XXX +Fix a slowdown in freeing nested hashes. This may speedup the exit of +certain programs. =back =head1 Modules and Pragmata -XXX All changes to installed files in F, F, F and F -go here. If Module::CoreList is updated, generate an initial draft of the -following sections using F, 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 file that could be -cribbed. - -[ Within each section, list entries as a =item entry ] - -=head2 New Modules and Pragmata +=head2 Updated Modules and Pragmata =over 4 =item * -The C PerlIO layer is no longer implemented by perl itself, but has -been moved out into the new L module. - -=back - -=head2 Updated Modules and Pragmata - -=over 4 +C has been upgraded from version 0.17 to 0.18. =item * -L has been upgraded from version 0.03 to version 0.04. - -List slices no longer modify items on the stack belonging to outer lists -[perl #109570]. +C has been upgraded from version 1.29 to 1.30. =item * -L has been upgraded from version 1.33 to version 1.34. +C has been upgraded from version 1.26 to 1.27. -C now has a C method, corresponding to a new internal -field added in 5.15.4 [perl #108860]. +C now means reset to default. The code has been refactored +to reduce duplication. =item * -L has been upgraded from version 1.24 to version 1.25. - -It now puts a dot after the file and line number, just like errors from -C [perl #106538]. +C has been upgraded from version 1.12 to 1.13. =item * -L has been upgraded from version 2.045 to version 2.048. +C has been upgraded from version 1.13 to 1.14. =item * -L has been upgraded from version 2.045 to version 2.048. +C has been upgraded from version 2.120351 to 2.120630. =item * -L has been upgraded from version 2.046 to version 2.048. +C has been upgraded from version 0.9118 to 0.9121. =item * -L has been upgraded from version 2.113640 to version 2.120351. - -Work around a memory leak bug involving version objects in boolean context. +C has been upgraded from version 2.135_05 to 2.135_06. =item * -L has been upgraded from version 1.824 to version 1.826. +C has been upgraded from version 5.70 to 5.71. =item * -L has been upgraded from version 1.27 to version 1.28. - -When searching for F, it no longer uses paths that were only -relevant on Perl 5.004 and earlier. +C has been upgraded from version 0.280205 to 0.280206. =item * -L has been upgraded from version 3.12 to version 3.15. - -The new version comes with important tools for sharing typemaps between -different CPAN distributions. +C has been upgraded from version 0.016 to 0.017. =item * -L has been upgraded from version 2.21 to version 2.23. - -It no longer emits warnings when copying files with newlines in their names -[perl #109104]. +C has been upgraded from version 2.60 to 2.63. =item * -L has been upgraded from version 0.72 to version 0.76. +C has been upgraded from version 1.14 to 1.1501. =item * -L has been upgraded from version 1.58 to version 1.59. - -This avoids a new core warning. +C has been upgraded from version 3.15_15 to 3.17. =item * -L has been upgraded from version 1.37 to version 1.51. +C has been upgraded from version 3.19 to 3.20. =item * -L has been upgraded from version 1.07 to version 1.08. - -Its C method now supports L event loops, and not just -L. A more general mechanism has been proposed, so this may be reverted -before Perl 5.16 [perl #108470]. +C has been upgraded from version 1.98 to 2.000. =item * -L has been upgraded from version 1.9724 to version 1.9725. - -C no longer corrupts the Perl stack. +C has been upgraded from version 1.08 to 1.09. =item * -L has been upgraded from version 0.39 to 0.40. - -The only change is to fix a formatting error in the Pod. +C has been upgraded from version 0.87 to 0.89. =item * -L has been upgraded from version 0.101021 to version 0.101022. - -=back +C has been upgraded from version 1.13 to 1.14. -=head2 Removed Modules and Pragmata +=item * -=over 4 +C has been upgraded from version 0.41 to 0.42. =item * -XXX +C has been upgraded from version 0.36 to 0.37. =back -=head1 Documentation - -XXX Changes to files in F go here. Consider grouping entries by -file and be sure to link to the appropriate page, e.g. L. - -=head2 New Documentation - -XXX Changes which create B files in F go here. - -=head3 L - -The new manual describes the XS typemapping mechanism in unprecedented -detail and combines new documentation with information extracted from -L and the previously unofficial list of all core typemaps. - -=head3 L - -XXX Description of the purpose of the new file here - -=head2 Changes to Existing Documentation - -XXX Changes which significantly change existing files in F go here. -However, any changes to F should go in the L -section. - -=head3 L -=over 4 - -=item * +=head1 Documentation -XXX Description of the change here - -=back +There has been no significant change in the documentation between +5.15.8 and 5.15.9. =head1 Diagnostics @@ -308,287 +172,177 @@ 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. -XXX New or changed warnings emitted by the core's C code go here. Also -include any changes in L that reconcile it to the C code. - -[ Within each section, list entries as a =item entry that links to perldiag, - e.g. - - =item * - - L -] - =head2 New Diagnostics -XXX Newly added diagnostic messages go here - =head3 New Errors -=over 4 - -=item * - -XXX L - -=back +Compared to 5.15.8, 5.15.9 does not introduce new errors. =head3 New Warnings -=over 4 - -=item * - -XXX L - -=back +Compared to 5.15.8, 5.15.9 does not introduce new errors, but see +L =head2 Changes to Existing Diagnostics -XXX Changes (i.e. rewording) of diagnostic messages go here - =over 4 =item * -XXX Describe change here +L, which replaces +C<< lvalue attribute cannot be removed after the subroutine has been defined >>. =back =head1 Utility Changes -XXX Changes to installed programs such as F and F go -here. Most of these are built within the directories F and F. - -[ List utility changes as a =head3 entry for each utility and =item -entries for each change -Use L with program names to get proper documentation linking. ] - -=head3 L - -=over 4 - -=item * - -XXX - -=back +No utilities changed between 5.15.8 and 5.15.9. =head1 Configuration and Compilation -XXX Changes to F, F, F, 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 section, instead. - -[ List changes as a =item entry ]. - =over 4 =item * -XXX +C<< perlfunc.html >> is now being generated again. [perl #107870] =back =head1 Testing -XXX Any significant changes to the testing of a freshly built perl should be -listed here. Changes which create B files in F go here as do any -large changes to the testing harness (e.g. when parallel testing was added). -Changes to existing files in F aren't worth summarising, although the bugs -that they represent may be covered elsewhere. - -[ List each test improvement as a =item entry ] - =over 4 =item * -XXX - -=item * - -The test suite for typemaps has been extended to cover a larger fraction of -the core typemaps. +F<< t/op/require_37033.t >> has been added, to test that C +always closes the file handle that it opens. Previously, it had been +leaking the file handle if it happened to have file descriptor 0, which +would happen if C was called (explicitly or implicitly) when +C had been closed. =back =head1 Platform Support -XXX Any changes to platform support should be listed in the sections below. - -[ Within the sections, list each platform as a =item entry with specific -changes as paragraphs below it. ] - -=head2 New Platforms - -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 -directories, or new subdirectories and F files at the top level of the -source tree. - -=over 4 - -=item XXX-some-platform - -XXX - -=back - -=head2 Discontinued Platforms - -XXX List any platforms that this version of perl no longer compiles on. - -=over 4 - -=item XXX-some-platform - -XXX - -=back - -=head2 Platform-Specific Notes - -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 section. - -=over 4 - -=item XXX-some-platform - -XXX - -=back +There have been no changes to Perl's support of various platforms between +5.15.8 and 5.15.9. =head1 Internal Changes -XXX Changes which affect the interface available to C code go here. -Other significant internal changes for future core maintainers should -be noted as well. +=over 4 -[ List each change as a =item entry ] +=item * -=over 4 +Two new functions C and C have +been added. These are the same as C and +C (which are now deprecated), but take an extra parameter +that is used to guard against reading beyond the end of the input +string. +See L and L. =item * -XXX +The regular expression engine now does TRIE case insensitive matches +under Unicode. This may change the output of C<< use re 'debug'; >>, +and will speed up various things. =back =head1 Selected Bug Fixes -XXX Important bug fixes in the core language are summarised here. -Bug fixes in files in F and F are best summarised in -L. - -[ List each fix as a =item entry ] - =over 4 =item * -C<~~> now correctly handles the precedence of Any~~Object, and is not tricked -by an overloaded object on the left-hand side. +I now matches two more characters under the C +property. This corrects a Unicode 6.1 omission. =item * -C no longer warns about unopened filehandles [perl #71002]. +C<< perlfunc.html >> is now being generated again. [perl #107870] =item * -C on an unopened filehandle now warns consistently, instead of -skipping the warning at times. +C<< $$ >> is no longer tainted. Since this value comes directly from +C<< getpid() >>, it is always safe. =item * -A change in an earlier 5.15 release caused warning hints to propagate into -C. This has been fixed [rt.cpan.org #72767]. +Fix leaking a file handle. [perl #37033] =item * -Starting with 5.12.0, Perl used to get its internal bookkeeping muddled up -after assigning C<${ qr// }> to a hash element and locking it with -L. This could result in double frees, crashes or erratic -behaviour. +An off-by-one error caused C<< /[:upper:]/ >> and C<< /[:punct:]/ >> to +unexpectedly match characters with code points above 255. This has been +rectified. [perl 111400]. =item * -In 5.15.7, some typeglobs in the CORE namespace were made read-only by -mistake. This has been fixed [rt.cpan.org #74289]. +C<< (?foo: ...) >> no longer loses passed in character set. =item * -C<-t> now works when stacked with other filetest operators [perl #77388]. +Allow attributes to set C<< :lvalue >> on a defined sub. [perl 107366]. =item * -Stacked filetest operators now only call FETCH once on a tied argument. +C<< die; >> with a non-reference, non-string value in $@ now properly +propagates that value [perl #111654]. =item * -C would sometimes refuse to match at the end of a string that ends -with "\n". This has been fixed [perl #109206]. - -=item * +C<< Term::ReadLine >> now uses AnyEvent instead of Tk for an event loop. -Method calls whose arguments were all surrounded with C or C -(as in C<<$object->method(my($a,$b)) >>) used to force lvalue context on -the subroutine. This would prevent lvalue methods from returning certain -values. Due to lvalue fixes earlier in the 5.15.x series, it would also -prevent non-lvalue methods from being called [perl #109264]. +=back -=for comment -This bug I affect earlier stable releases. It is just the last -sentence that does not apply to 5.14. +=head1 Known Problems -=item * +This is a list of some significant unfixed bugs, which are regressions +from either 5.14.0 or 5.15.8. -The C C function no longer tries to modify its argument, -resulting in errors [perl #108994]. +=over 4 -=item * +=item C is broken on Windows [perl #109718] -C now works properly with magical variables. +This is a known test failure to be fixed before 5.16.0. -=item * +=item C<< Pod-Html >> test failures on Windows. -C now works properly non-PVs. +A number of tests for C<< Pod::Html >> fail under Windows, due to an +incorrect assumption by the test scripts about capitalization of the +network drive. =back -=head1 Known Problems - -XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any -tests that had to be Ced for the release would be noted here, unless -they were specific to a particular platform (see below). - -This is a list of some significant unfixed bugs, which are regressions -from either 5.XXX.XXX or 5.XXX.XXX. - -[ List each fix as a =item entry ] - -=over 4 - -=item * +=head1 Acknowledgements -XXX +XXX Redo this on 2012-03-20 -=back +Perl 5.15.9 represents approximately 4 weeks of development since Perl 5.15.8 +and contains approximately 74,000 lines of changes across 470 files from 23 +authors. -=head1 Obituary +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.15.9: -XXX If any significant core contributor has died, we've added a short obituary -here. +Aaron Crane, Abigail, Chris 'BinGOs' Williams, Craig A. Berry, Dave Rolsky, +David Cantrell, David Golden, David Mitchell, Eric Brine, Father Chrysostomos, +Florian Ragwitz, James E Keenan, Jesse Vincent, Karl Williamson, Marc Green, +Max Maischein, Nicholas Clark, Pau Amma, Reini Urban, Ricardo Signes, Tony +Cook, Yves Orton, Zefram. -=head1 Acknowledgements +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. -XXX Generate this with: +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. - perl Porting/acknowledgements.pl v5.15.7..HEAD +For a more complete list of all of Perl's historical contributors, please see +the F file in the Perl source distribution. =head1 Reporting Bugs