X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/d345f4877521ed3ad5ad337f7e87a95625df05c0..2a7a05b47b7fc50a963c330eb7ba44292f28faac:/pod/perldelta.pod diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 8e6706e..567f5ae 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -2,483 +2,399 @@ =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.21.8 +perldelta - what is new for perl v5.21.11 =head1 DESCRIPTION -This document describes differences between the 5.21.7 release and the 5.21.8 +This document describes differences between the 5.21.10 release and the 5.21.11 release. -If you are upgrading from an earlier release such as 5.21.6, first read -L, which describes differences between 5.21.6 and 5.21.7. - -=head1 Notice - -XXX Any important notices here - -=head1 Core Enhancements - -XXX New core language features go here. Summarize 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 The warnings pragma now supports warnings outside of "all" - -Ever since perl v5.6.0 we've had no way of adding new warnings without -retroactively adding them to all existing programs that used C<-w>, -C<-W> or C. - -This caused us to not add new useful warnings out of fear that they -might unduly burden users who just wanted to upgrade perl and didn't -want to deal with a bunch of warnings from their existing code. - -We now support a way to have our cake and eat it too, and can add new -warnings to the core going forward through other top-level warning -categories. See L for details. - -=head2 Non-Capturing Regular Expression Flag - -Regular expressions now support a C flag that disables capturing -and filling in C<$1>, C<$2>, etc... inside of groups: - - "hello" =~ /(hi|hello)/n; # $1 is not set - -This is equivalent to putting C at the beginning of every capturing group. - -See L for more information. +If you are upgrading from an earlier release such as 5.21.9, first read +L, which describes differences between 5.21.9 and 5.21.10. -=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. - -[ List each security issue as a =head2 entry ] - -=head1 Incompatible Changes - -XXX For a release on a stable branch, this section aspires to be: +=head1 Deprecations - 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. +=head2 Making all warnings fatal is discouraged -[ List each incompatible change as a =head2 entry ] +The documentation for L notes that +C<< use warnings FATAL => 'all' >> is discouraged and provides stronger +language about the risks of fatal warnings in general. -=head1 Deprecations +=head1 Modules and Pragmata -XXX Any deprecated features, syntax, modules etc. should be listed here. +=head2 Updated Modules and Pragmata -=head2 Module removals +=over 4 -XXX Remove this section if inapplicable. +=item * -The following modules will be removed from the core distribution in a -future release, and will at that time need to be installed from CPAN. -Distributions on CPAN which require these modules will need to list them as -prerequisites. +L has been upgraded from version 0.26 to 0.27. -The core versions of these modules will now issue C<"deprecated">-category -warnings to alert you to this fact. To silence these deprecation warnings, -install the modules in question from CPAN. +=item * -Note that these are (with rare exceptions) fine modules that you are encouraged -to continue to use. Their disinclusion from core primarily hinges on their -necessity to bootstrapping a fully functional, CPAN-capable Perl installation, -not usually on concerns over their design. +L has been upgraded from version 1.57 to 1.58. -=over +=item * -=item XXX +L has been upgraded from version 1.34 to 1.35. -XXX Note that deprecated modules should be listed here even if they are listed -as an updated module in the L section. +C<< <<>> >> is now correctly deparsed. -=back +=item * -[ List each other deprecation as a =head2 entry ] +L has been upgraded from version 0.23 to 0.24. -=head1 Performance Enhancements +=item * -XXX Changes which enhance performance without changing behaviour go here. -There may well be none in a stable release. +L has been upgraded from version 2.10 to 2.11. -[ List each enhancement as a =item entry ] +=item * -=over 4 +L has been upgraded from version 3.55 to 3.56. =item * -XXX +L has been upgraded from version 1.04 to 1.05. -=back +=item * -=head1 Modules and Pragmata +L has been upgraded from version 3.27 to 3.28. -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. 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. +=item * -[ Within each section, list entries as a =item entry ] +L has been upgraded from version 3.25 to 3.28. -=head2 New Modules and Pragmata +=item * -=over 4 +L has been upgraded from version 3.55 to 3.56. =item * -XXX +L has been upgraded from version 0.0603 to 0.0604. -=back +The documentation now notes that this module also works with C. -=head2 Updated Modules and Pragmata +=item * -=over 4 +L has been upgraded from version 0.36 to 0.37. =item * -L has been upgraded from version A.xx to B.yy. +L has been upgraded from version 5.20150320 to 5.20150420. + +Updated to cover the latest releases of Perl. Also fixes a fencepost error in +is_core() and copes with versions that do not match x.yyyzzz. =item * -L has been upgraded from version 0.24 to 0.25. +L has been upgraded from 1.48 to 1.49. -Minor internal change only. +The debugger would cause an assertion failure. +L<[perl #124127]|https://rt.perl.org/Ticket/Display.html?id=124127> =item * -L has been upgraded from version 1.54 to 1.55. +L has been upgraded from version 0.013 to 0.014. -A bug where, after an ithread creation or psuedofork, special/immortal SVs in -the child ithread/psuedoprocess did not have the correct class of -C, has been fixed. - -=back +=item * -=head2 Removed Modules and Pragmata +L has been upgraded from version 1.15 to 1.16. -=over 4 +Minor documentation update only. =item * -XXX +L has been upgraded from version 1.31 to 1.32. =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 - -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 +=head3 L =over 4 =item * -XXX Description of the change here +This document has been significantly updated in the light of recent +improvements to EBCDIC support. =back -=head1 Diagnostics +=head3 L -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. +=over 4 -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. +=item * -=head2 New Diagnostics +Mention that C is currently a no-op. -XXX Newly added diagnostic messages go under here, separated into New Errors -and New Warnings +=back -=head3 New Errors +=head3 L =over 4 =item * -XXX L +The OOK example has been updated to account for COW changes and a change in the +storage of the offset. =back -=head3 New Warnings +=head3 L =over 4 =item * -XXX L - -=item * - -L +Documentation has been added illustrating the perils of assuming the contents +of static memory pointed to by the return values of Perl wrappers for C library +functions doesn't change. =back -=head2 Changes to Existing Diagnostics - -XXX Changes (i.e. rewording) of diagnostic messages go here +=head3 L =over 4 =item * -XXX Describe change here - -The message -L -is no longer raised unless the problemtatic locale is actually used in -the Perl program. Previously it was raised if it merely was the -underlying locale. All Perl programs have an underlying locale at all -times, but something like a C> is needed for that locale -to actually have some effect. This message will not be raised when -the underlying locale is hidden. +Out-of-date VMS-specific information has been fixed/simplified. =back -=head1 Utility Changes - -XXX Changes to installed programs such as F and F go here. -Most of these are built within the directory F. - -[ List utility changes as a =head2 entry for each utility and =item -entries for each change -Use L with program names to get proper documentation linking. ] - -=head2 L +=head3 L =over 4 =item * -XXX +Advice for how to make sure your strings and regular expression patterns are +interpreted as Unicode has been revised to account for the new Perl 5.22 EBCDIC +handling. =back -=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 ]. +=head3 L =over 4 =item * -XXX +Out-of-date and/or incorrect material has been removed. =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 summarizing, although the bugs -that they represent may be covered elsewhere. - -[ List each test improvement as a =item entry ] - =over 4 =item * -XXX +F has been added to test that L and its +dependencies only use the subset of the C<$1..$n> capture vars that +Perl_save_re_context() is hard-coded to localize, because that function has no +efficient way of determining at runtime what vars to localize. =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. +=head2 Platform-Specific Notes =over 4 -=item XXX-some-platform +=item Win32 -XXX +F is now built with C<-fno-strict-aliasing>, allowing 64-bit +builds to complete on GCC 4.8. +L<[perl #123976]|https://rt.perl.org/Ticket/Display.html?id=123976> -=back +C again depends on C for GCC builds. +L<[perl #124221]|https://rt.perl.org/Ticket/Display.html?id=124221> -=head2 Discontinued Platforms +=back -XXX List any platforms that this version of perl no longer compiles on. +=head1 Internal Changes =over 4 -=item XXX-some-platform +=item * -XXX +Perl 5.21.2 introduced a new build option, C<-DPERL_OP_PARENT>, which causes +the last C pointer to refer back to the parent rather than being +C, and where instead a new flag indicates the end of the chain. In this +release, the new implementation has been revised; in particular: -=back +=over 4 -=head2 Platform-Specific Notes +=item * -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. +On C builds, the C field has been renamed +C to reflect its new dual purpose. Since the intention is that +this field should primarily be accessed via macros, this change should be +transparent for code written to work under C. -=over 4 +=item * -=item Win32 +The newly-introduced C flag bit has been renamed C and +its logic inverted; i.e. it is initialised to zero in a new op, and is changed +to 1 when an op gains a sibling. -=over 4 +=item * + +The function C is now only available on C +builds. Using it on a plain build will be a compile-timer error. =item * -Previously, on Visual C++ for Win64 built Perls only, when compiling every Perl -XS module (including CPAN ones) and Perl aware .c file with a 64 bit Visual C++, -would uncondtionally have around a dozen warnings from hv_func.h. These -warnings have been silenced. GCC all bitness and Visual C++ for Win32 were -not affected. +Three new macros, C, C, C have +been added, which are intended to be a low-level portable way to set +C / C while also updating C. The first +sets the sibling pointer to a new sibling, the second makes the op the last +sibling, and the third conditionally does the first or second action. The +C function is retained as a higher-level interface that +can also maintain consistency in the parent at the same time (e.g. by updating +C and C where appropriate). =item * -Support for building without PerlIO has been removed from the Windows -makefiles. Non-PerlIO builds were all but deprecated in Perl 5.18.0 and are -already not supported by F on POSIX systems. +The macro C, added in Perl 5.21.2, has been removed. It didn't +manipulate C and has been superseded by C et al. =item * -Between 2 and 6 ms and 7 I/O calls have been saved per attempt to open a perl -module for each path in C<@INC>. +The C function now accepts a null C argument where +the splicing doesn't affect the first or last ops in the sibling chain, and +thus where the parent doesn't need to be updated accordingly. =back =back -=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. - -[ List each change as a =item entry ] +=head1 Selected Bug Fixes =over 4 =item * -Added Perl_sv_get_backrefs() to determine if an SV is a weak-referent. - -Function either returns an SV * of type AV, which contains the set of -weakreferences which reference the passed in SV, or a simple RV * which -is the only weakref to this item. +C and C now zero the padding on x86 long double +builds. GCC 4.8 and later, under some build options, would either overwrite +the zero-initialized padding, or bypass the initialized buffer entirely. This +caused F to fail. +L<[perl #123971]|https://rt.perl.org/Ticket/Display.html?id=123971> =item * -C which was added to public API in 5.11.0 but undocumented and -shows no CPAN usage has been removed from public API. Please use public API -C C C and C for adding elements to a GV. +Extending an array cloned from a parent thread could result in "Modification of +a read-only value attempted" errors when attempting to modify the new elements. +L<[perl #124127]|https://rt.perl.org/Ticket/Display.html?id=124127> =item * -C C C and C have been made rvalues, previously they -were lvalues. If you are assigning a SV to C C C and -C you are leaking memory. If you want an lvalue, use C C -C and C. +An assertion failure and subsequent crash with C<< *x= >> has been fixed. +L<[perl #123790]|https://rt.perl.org/Ticket/Display.html?id=123790> =item * -XXX - -=back +An optimization for state variable initialization introduced in Perl 5.21.6 has +been reverted because it was found to exacerbate some other existing buggy +behaviour. +L<[perl #124160]|https://rt.perl.org/Ticket/Display.html?id=124160> -=head1 Selected Bug Fixes +=item * -XXX Important bug fixes in the core language are summarized here. Bug fixes in -files in F and F are best summarized in L. +The extension of another optimization to cover more ops in Perl 5.21 has also +been reverted to its Perl 5.20 state as a temporary fix for regression issues +that it caused. +L<[perl #123790]|https://rt.perl.org/Ticket/Display.html?id=123790> -[ List each fix as a =item entry ] +=item * -=over 4 +New bitwise ops added in Perl 5.21.9 accidentally caused C<$^H |= 0x1c020000> +to enable all features. This has now been fixed. =item * -A bug in regular expression patterns that could lead to segfaults and -other crashes has been fixed. This occurred only in patterns compiled -with C<"/i">, while taking into account the current POSIX locale (this usually -means they have to be compiled within the scope of C>), -and there must be a string of at least 128 consecutive bytes to match. -[perl #123539] +A possible crashing/looping bug has been fixed. +L<[perl #124099]|https://rt.perl.org/Ticket/Display.html?id=124099> -=back +=item * -=head1 Known Problems +UTF-8 variable names used in array indexes, unquoted UTF-8 HERE-document +terminators and UTF-8 function names all now work correctly. +L<[perl #124113]|https://rt.perl.org/Ticket/Display.html?id=124113> -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. Unfixed -platform specific bugs also go here. +=item * -[ List each fix as a =item entry ] +Breakage in C (with parentheses), introduced in Perl 5.21.6, +has been fixed. +L<[perl #124135]|https://rt.perl.org/Ticket/Display.html?id=124135> -=over 4 +=item * + +Wide char warnings, wrongly raised in UTF-8 locales since Perl 5.21.8, are now +suppressed. +L<[perl #123527]|https://rt.perl.org/Ticket/Display.html?id=123527> =item * -XXX +A subtle bug introduced in Perl 5.21.4 involving UTF-8 in regular expressions +and sometimes causing a crash has been fixed. A new test script has been added +to test this fix; see under L. +L<[perl #124109]|https://rt.perl.org/Ticket/Display.html?id=124109> -=back +=item * -=head1 Errata From Previous Releases +A change introduced in Perl 5.21.10 that broke the autovivification CPAN module +has been reverted. -=over 4 +=item * + +A bug whereby C<< 'FOO'->f() >> lost the read-only status of C, introduced +in Perl 5.21.7, has been fixed. +L<[perl #123619]|https://rt.perl.org/Ticket/Display.html?id=123619> =item * -XXX Add anything here that we forgot to add, or were mistaken about, in -the perldelta of a previous release. +A regression in Perl 5.21 in the matching of C has been fixed. =back -=head1 Obituary +=head1 Acknowledgements -XXX If any significant core contributor has died, we've added a short obituary -here. +Perl 5.21.11 represents approximately 4 weeks of development since Perl 5.21.10 +and contains approximately 5,800 lines of changes across 240 files from 24 +authors. -=head1 Acknowledgements +Excluding auto-generated files, documentation and release tools, there were +approximately 1,700 lines of changes to 160 .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.21.11: + +Alex Vandiver, Andreas König, Craig A. Berry, Dagfinn Ilmari Mannsåker, Daniel +Dragan, David Golden, David Mitchell, Father Chrysostomos, H.Merijn Brand, +Herbert Breunung, Hugo van der Sanden, James E Keenan, James McCoy, Karl +Williamson, Matthew Horsfall, Max Maischein, Nicholas Clark, Rafael +Garcia-Suarez, Randy Stauner, Ricardo Signes, Shirakata Kentaro, Steffen +Müller, Steve Hay, Tony Cook. + +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.21.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