diff options
-rw-r--r-- | MANIFEST | 1 | ||||
-rwxr-xr-x | Makefile.SH | 8 | ||||
-rw-r--r-- | pod/.gitignore | 2 | ||||
-rw-r--r-- | pod/perl.pod | 1 | ||||
-rw-r--r-- | pod/perl5238delta.pod | 525 | ||||
-rw-r--r-- | pod/perldelta.pod | 475 | ||||
-rw-r--r-- | vms/descrip_mms.template | 2 | ||||
-rw-r--r-- | win32/GNUmakefile | 4 | ||||
-rw-r--r-- | win32/Makefile | 4 | ||||
-rw-r--r-- | win32/makefile.mk | 4 | ||||
-rw-r--r-- | win32/pod.mak | 4 |
11 files changed, 726 insertions, 304 deletions
@@ -4650,6 +4650,7 @@ pod/perl5234delta.pod Perl changes in version 5.23.4 pod/perl5235delta.pod Perl changes in version 5.23.5 pod/perl5236delta.pod Perl changes in version 5.23.6 pod/perl5237delta.pod Perl changes in version 5.23.7 +pod/perl5238delta.pod Perl changes in version 5.23.8 pod/perl561delta.pod Perl changes in version 5.6.1 pod/perl56delta.pod Perl changes in version 5.6 pod/perl581delta.pod Perl changes in version 5.8.1 diff --git a/Makefile.SH b/Makefile.SH index 2278f9fc8f..a9ece4f126 100755 --- a/Makefile.SH +++ b/Makefile.SH @@ -504,7 +504,7 @@ mini_obj = $(minindt_obj) $(MINIDTRACE_O) ndt_obj = $(obj0) $(obj1) $(obj2) $(obj3) $(ARCHOBJS) obj = $(ndt_obj) $(DTRACE_O) -perltoc_pod_prereqs = extra.pods pod/perl5238delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod +perltoc_pod_prereqs = extra.pods pod/perl5239delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod generated_pods = pod/perltoc.pod $(perltoc_pod_prereqs) generated_headers = uudmap.h bitcount.h mg_data.h @@ -1064,9 +1064,9 @@ pod/perlintern.pod: $(MINIPERL_EXE) autodoc.pl embed.fnc pod/perlmodlib.pod: $(MINIPERL_EXE) pod/perlmodlib.PL MANIFEST $(MINIPERL) pod/perlmodlib.PL -q -pod/perl5238delta.pod: pod/perldelta.pod - $(RMS) pod/perl5238delta.pod - $(LNS) perldelta.pod pod/perl5238delta.pod +pod/perl5239delta.pod: pod/perldelta.pod + $(RMS) pod/perl5239delta.pod + $(LNS) perldelta.pod pod/perl5239delta.pod extra.pods: $(MINIPERL_EXE) -@test ! -f extra.pods || rm -f `cat extra.pods` diff --git a/pod/.gitignore b/pod/.gitignore index 0831b34615..f111c9fa63 100644 --- a/pod/.gitignore +++ b/pod/.gitignore @@ -53,7 +53,7 @@ /roffitall # generated -/perl5238delta.pod +/perl5239delta.pod /perlapi.pod /perlintern.pod *.html diff --git a/pod/perl.pod b/pod/perl.pod index 9e35996f14..f9a01eea4e 100644 --- a/pod/perl.pod +++ b/pod/perl.pod @@ -180,6 +180,7 @@ aux c2ph h2ph h2xs perlbug pl2pm pod2html pod2man splain xsubpp perlhist Perl history records perldelta Perl changes since previous version + perl5238delta Perl changes in version 5.23.8 perl5237delta Perl changes in version 5.23.7 perl5236delta Perl changes in version 5.23.6 perl5235delta Perl changes in version 5.23.5 diff --git a/pod/perl5238delta.pod b/pod/perl5238delta.pod new file mode 100644 index 0000000000..aade38a687 --- /dev/null +++ b/pod/perl5238delta.pod @@ -0,0 +1,525 @@ +=encoding utf8 + +=head1 NAME + +perl5238delta - what is new for perl v5.23.8 + +=head1 DESCRIPTION + +This document describes differences between the 5.23.7 release and the 5.23.8 +release. + +If you are upgrading from an earlier release such as 5.23.6, first read +L<perl5237delta>, which describes differences between 5.23.6 and 5.23.7. + +=head1 Core Enhancements + +=head2 More fields provided to C<sigaction> callback with C<SA_SIGINFO> + +When passing the C<SA_SIGINFO> flag to L<sigaction|POSIX/sigaction>, the +C<errno>, C<status>, C<uid>, C<pid>, C<addr> and C<band> fields are now +included in the hash passed to the handler, if supported by the +platform. + +=head1 Security + +=head2 Set proper umask before calling C<mkstemp(3)> + +In 5.22 perl started setting umask to 0600 before calling C<mkstemp(3)> +and restoring it afterwards. This wrongfully tells open(2) to strip +the owner read and write bits from the given mode before applying it, +rather than the intended negation of leaving only those bits in place. + +Systems that use mode 0666 in C<mkstemp(3)> (like old versions of +glibc) create a file with permissions 0066, leaving world read and +write permissions regardless of current umask. + +This has been fixed by using umask 0177 instead. [perl #127322] + +=head1 Incompatible Changes + +=head2 C<qr/\N{}/> now disallowed under C<use re "strict"> + +An empty C<\N{}> makes no sense, but for backwards compatibility is +silently accepted as doing nothing. But now this is a fatal error under +the experimental feature L<re/'strict' mode>. + +=head1 Performance Enhancements + +=over 4 + +=item * + +The overhead of scope entry and exit has been considerably reduced, so +for example subroutine calls, loops and basic blocks are all faster now. +This empty function call now takes about a third less time to execute: + + sub f{} f(); + +=item * + +On Win32, C<stat>ing or C<-X>ing a path, if the file or directory does not +exist, is now 3.5x faster on a SSD (or any drive) than before. + +=back + +=head1 Modules and Pragmata + +=head2 Updated Modules and Pragmata + +=over 4 + +=item * + +F<cpan/podlators/> has been upgraded from version 4.04 to 4.06. + +=item * + +The PathTools module collection has been upgraded from version 3.62 +to 3.63. + +=item * + +L<DynaLoader> has been upgraded from version 1.37 to 1.38. + +DynaLoader now always looks for bootstrap files having the same base name as +the module for which the bootstrap code is being run. Previously, and only on +platforms that use C<mod2fname> to produce unique loadable library names, +L<DynaLoader> would look for the bootstrap file using a base name that matched +the loadable library and not find it. + +=item * + +L<Encode> has been upgraded from version 2.78 to 2.80. + +=item * + +L<ExtUtils::CBuilder> has been upgraded from version 0.280224 to 0.280225. + +=item * + +L<ExtUtils::MakeMaker> has been upgraded from version 7.10 to 7.10_01. + +=item * + +L<File::Spec> has been upgraded from version 3.62 to 3.63. + +=item * + +L<IPC::SysV> has been upgraded from version 2.04 to 2.05. + +=item * + +L<Module::CoreList> has been upgraded from version 5.20160120 to 5.20160121. + +=item * + +L<ODBM_File> has been upgraded from version 1.12 to 1.13. + +=item * + +L<PerlIO::encoding> has been upgraded from version 0.23 to 0.24. + +=item * + +L<POSIX> has been upgraded from version 1.59 to 1.63. + +It can now export constants for the C<code> value in the hash passed to the +L<sigaction|POSIX/sigaction> handler when using the C<SA_SIGINFO> flag. + +These previously deprecated functions are now removed: C<isalnum>, +C<isalpha>, C<iscntrl>, C<isdigit>, C<isgraph>, C<islower>, C<isprint>, +C<ispunct>, C<isspace>, C<isupper>, and C<isxdigit>. + +=item * + +L<Storable> has been upgraded from version 2.54 to 2.55. + +=item * + +L<Time::HiRes> has been upgraded from version 1.9728 to 1.9730. + +It can now export Linux-specific and FreeBSD-specific C<clock_gettime()> +constants. It also now has emulation for OS X C<clock_nanosleep()>, +C<clock_gettime()>, and C<clock_getres()>. + +=back + +=head1 Documentation + +=head2 Changes to Existing Documentation + +=head3 L<perlguts> + +=over 4 + +=item * + +A new section has been added, L<perlguts/"Dynamic Scope and the Context +Stack">, which explains how the perl context stack works. + +=back + +=head3 L<perlmodlib> + +=over 4 + +=item * + +We now recommend contacting the module-authors list or PAUSE in seeking +guidance on the naming of modules. + +=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 + +=head3 New Errors + +=over 4 + +=item * + +L<<< Sequence (?PE<lt>... not terminated in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol> +|perldiag/"Sequence (?PE<lt>... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>" >>> + +=item * + +L<Sequence (?PE<gt>... not terminated in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol> +|perldiag/"Sequence (?PE<gt>... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>"> + +=item * + +L<Empty \%c in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol> +|perldiag/"Empty \%c in regex; marked by <-- HERE in mE<sol>%sE<sol>"> + +=back + +=head3 New Warnings + +=over 4 + +=item * + +L<Assuming NOT a POSIX class since %s in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>| +perldiag/Assuming NOT a POSIX class since %s in regex; marked by <-- HERE in mE<sol>%sE<sol>> + +=back + +=head1 Configuration and Compilation + +=over 4 + +=item * + +The GNU Make makefile for Win32 now supports parallel builds. [perl #126632] + +=item * + +You can now build perl with MSVC++ on Win32 using GNU Make. [perl #126632] + +=item * + +Bison 3.0 is now supported. + +=back + +=head1 Platform Support + +=head2 Platform-Specific Notes + +=over 4 + +=item VMS + +=over + +=item * + +For those C<%ENV> elements based on the CRTL environ array, we've always +preserved case when setting them but did look-ups only after upcasing the +key first, which made lower- or mixed-case entries go missing. This problem +has been corrected by making C<%ENV> elements derived from the environ array +case-sensitive on look-up as well as case-preserving on store. + +=item * + +Environment look-ups for C<PERL5LIB> and C<PERLLIB> previously only +considered logical names, but now consider all sources of C<%ENV> as +determined by C<PERL_ENV_TABLES> and as documented in L<perlvms/%ENV>. + +=back + +=item Win32 + +Builds using Microsoft Visual C++ 2003 and earlier no longer produce +an "INTERNAL COMPILER ERROR" message. [perl #126045] + +=back + +=head1 Internal Changes + +=over 4 + +=item * + +The implementation of perl's context stack system, and its internal API, +have been heavily reworked. Note that no significant changes have been +made to any external APIs, but XS code which relies on such internal +details may need to be fixed. The main changes are: + +=over 4 + +=item * + +The C<PUSHBLOCK()>, C<POPSUB()> etc. macros have been replaced with static +inline functions such as C<cx_pushblock()>, C<cx_popsub()> etc. These use +function args rather than implicitly relying on local vars such as +C<gimme> and C<newsp> being available. Also their functionality has +changed: in particular, C<cx_popblock()> no longer decrements +C<cxstack_ix>. The ordering of the steps in the C<pp_leave*> functions +involving C<cx_popblock()>, C<cx_popsub()> etc. has changed. See the new +documentation, L<perlguts/"Dynamic Scope and the Context Stack">, for +details on how to use them. + +=item * + +Various macros, which now consistently have a CX_ prefix, have been added: + + CX_CUR(), CX_LEAVE_SCOPE(), CX_POP() + +or renamed: + + CX_POP_SAVEARRAY(), CX_DEBUG(), CX_PUSHSUBST(), CX_POPSUBST() + +=item * + +C<cx_pushblock()> now saves C<PL_savestack_ix> and C<PL_tmps_floor>, so +C<pp_enter*> and C<pp_leave*> no longer do + + ENTER; SAVETMPS; ....; LEAVE + +=item * + +C<cx_popblock()> now also restores C<PL_curpm>. + +=item * + +In C<dounwind()> for every context type, the current savestack frame is +now processed before each context is popped; formerly this was only done +for sub-like context frames. This action has been removed from +C<cx_popsub()> and placed into its own macro, C<CX_LEAVE_SCOPE(cx)>, which +must be called before C<cx_popsub()> etc. + +C<dounwind()> now also does a C<cx_popblock()> on the last popped frame +(formerly it only did the C<cx_popsub()> etc. actions on each frame). + +=item * + +The temps stack is now freed on scope exit; previously, temps created +during the last statement of a block wouldn't be freed until the next +C<nextstate> following the block (apart from an existing hack that did +this for recursive subs in scalar context); and in something like +C<f(g())>, the temps created by the last statement in C<g()> would +formerly not be freed until the statement following the return from +C<f()>. + +=item * + +Most values that were saved on the savestack on scope entry are now +saved in suitable new fields in the context struct, and saved and +restored directly by C<cx_pushfoo()> and C<cx_popfoo()>, which is much +faster. + +=item * + +Various context struct fields have been added, removed or modified. + +=item * + +The handling of C<@_> in C<cx_pushsub()> and C<cx_popsub()> has been +considerably tidied up, including removing the C<argarray> field from the +context struct, and extracting out some common (but rarely used) code into +a separate function, C<clear_defarray()>. Also, useful subsets of +C<cx_popsub()> which had been unrolled in places like C<pp_goto> have been +gathered into the new functions C<cx_popsub_args()> and +C<cx_popsub_common()>. + +=item * + +C<pp_leavesub> and C<pp_leavesublv> now use the same function as the rest +of the C<pp_leave*>'s to process return args. + +=item * + +C<CXp_FOR_PAD> and C<CXp_FOR_GV> flags have been added, and +C<CXt_LOOP_FOR> has been split into C<CXt_LOOP_LIST>, C<CXt_LOOP_ARY>. + +=item * + +Some variables formerly declared by C<dMULTICALL> (but not documented) have +been removed. + +=back + +=back + +=head1 Selected Bug Fixes + +=over 4 + +=item * + +Line numbers larger than 2**31-1 but less than 2**32 are no longer +returned by caller() as negative numbers. [perl #126991] + +=item * + +C<< unless ( I<assignment> ) >> now properly warns when syntax +warnings are enabled. [perl #127122] + +=item * + +Setting an C<ISA> glob to an array reference now properly adds +C<isaelem> magic to any existing elements. Previously modifying such +an element would not update the ISA cache, so method calls would call +the wrong function. Perl would also crash if the C<ISA> glob was +destroyed, since new code added in 5.23.7 would try to release the +C<isaelem> magic from the elements. [perl #127351] + +=item * + +If a here-doc was found while parsing another operator, the parser had +already read end of file, and the here-doc was not terminated, perl +could produce an assertion or a segmentation fault. This now reliably +complains about the unterminated here-doc. [perl #125540] + +=item * + +untie() would sometimes return the last value returned by the UNTIE() +handler as well as it's normal value, messing up the stack. [perl +#126621] + +=item * + +Fixed an operator precedence problem when C< castflags & 2> is true. +[perl #127474] + +=item * + +Caching of DESTROY methods could result in a non-pointer or a +non-STASH stored in the SvSTASH() slot of a stash, breaking the B +STASH() method. The DESTROY method is now cached in the MRO metadata +for the stash. [perl #126410] + +=item * + +The AUTOLOAD method is now called when searching for a DESTROY method, +and correctly sets C<$AUTOLOAD> too. [perl #124387] [perl #127494] + +=item * + +Avoid parsing beyond the end of the buffer when processing a C<#line> +directive with no filename. [perl #127334] + +=item * + +Perl now raises a warning when a regular expression pattern looks like +it was supposed to contain a POSIX class, like C<qr/[[:alpha:]]/>, but +there was some slight defect in its specification which causes it to +instead be treated as a regular bracketed character class. An example +would be missing the second colon in the above like this: +C<qr/[[:alpha]]/>. This compiles to match a sequence of two characters. +The second is C<"]">, and the first is any of: C<"[">, C<":">, C<"a">, +C<"h">, C<"l">, or C<"p">. This is unlikely to be the intended +meaning, and now a warning is raised. No warning is raised unless the +specification is very close to one of the 14 legal POSIX classes. (See +L<perlrecharclass/POSIX Character Classes>.) +[perl #8904] + +=item * + +Certain regex patterns involving a complemented POSIX class in an +inverted bracketed character class, and matching something else +optionally would improperly fail to match. An example of one that could +fail is C</qr/_?[^\Wbar]\x{100}/>. This has been fixed. +[perl #127537] + +=item * + +Perl 5.22 added support to the C99 hexadecimal floating point notation, +but sometimes misparses hex floats. This had been fixed. +[perl #127183] + +=back + +=head1 Acknowledgements + +Perl 5.23.8 represents approximately 4 weeks of development since Perl 5.23.7 +and contains approximately 30,000 lines of changes across 350 files from 23 +authors. + +Excluding auto-generated files, documentation and release tools, there were +approximately 14,000 lines of changes to 210 .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.23.8: + +Aaron Crane, Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari +Mannsåker, Daniel Dragan, David Mitchell, Ed J, Herbert Breunung, H.Merijn +Brand, James E Keenan, Jarkko Hietaniemi, Karl Williamson, Lukas Mai, Niko +Tyni, Pip Cet, Ricardo Signes, Sawyer X, Sisyphus, Stevan Little, Steve Hay, +Todd Rinaldo, Tom Hukins, 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. + +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 +L<https://rt.perl.org/> . There may also be information at +L<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 diff --git a/pod/perldelta.pod b/pod/perldelta.pod index a520e733e1..5a9311f88a 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -2,172 +2,163 @@ =head1 NAME -perldelta - what is new for perl v5.23.8 +[ 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.23.9 =head1 DESCRIPTION -This document describes differences between the 5.23.7 release and the 5.23.8 +This document describes differences between the 5.23.8 release and the 5.23.9 release. -If you are upgrading from an earlier release such as 5.23.6, first read -L<perl5237delta>, which describes differences between 5.23.6 and 5.23.7. +If you are upgrading from an earlier release such as 5.23.7, first read +L<perl5238delta>, which describes differences between 5.23.7 and 5.23.8. -=head1 Core Enhancements +=head1 Notice -=head2 More fields provided to C<sigaction> callback with C<SA_SIGINFO> +XXX Any important notices here -When passing the C<SA_SIGINFO> flag to L<sigaction|POSIX/sigaction>, the -C<errno>, C<status>, C<uid>, C<pid>, C<addr> and C<band> fields are now -included in the hash passed to the handler, if supported by the -platform. +=head1 Core Enhancements -=head1 Security +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</Performance Enhancements> section. -=head2 Set proper umask before calling C<mkstemp(3)> +[ List each enhancement as a =head2 entry ] -In 5.22 perl started setting umask to 0600 before calling C<mkstemp(3)> -and restoring it afterwards. This wrongfully tells open(2) to strip -the owner read and write bits from the given mode before applying it, -rather than the intended negation of leaving only those bits in place. +=head1 Security -Systems that use mode 0666 in C<mkstemp(3)> (like old versions of -glibc) create a file with permissions 0066, leaving world read and -write permissions regardless of current umask. +XXX Any security-related notices go here. In particular, any security +vulnerabilities closed should be noted here rather than in the +L</Selected Bug Fixes> section. -This has been fixed by using umask 0177 instead. [perl #127322] +[ List each security issue as a =head2 entry ] =head1 Incompatible Changes -=head2 C<qr/\N{}/> now disallowed under C<use re "strict"> - -An empty C<\N{}> makes no sense, but for backwards compatibility is -silently accepted as doing nothing. But now this is a fatal error under -the experimental feature L<re/'strict' mode>. - -=head1 Performance Enhancements - -=over 4 +XXX For a release on a stable branch, this section aspires to be: -=item * + 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</Reporting Bugs> below. -The overhead of scope entry and exit has been considerably reduced, so -for example subroutine calls, loops and basic blocks are all faster now. -This empty function call now takes about a third less time to execute: +[ List each incompatible change as a =head2 entry ] - sub f{} f(); +=head1 Deprecations -=item * +XXX Any deprecated features, syntax, modules etc. should be listed here. -On Win32, C<stat>ing or C<-X>ing a path, if the file or directory does not -exist, is now 3.5x faster on a SSD (or any drive) than before. +=head2 Module removals -=back +XXX Remove this section if inapplicable. -=head1 Modules and Pragmata +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. -=head2 Updated Modules and Pragmata +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. -=over 4 +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. -=item * +=over -F<cpan/podlators/> has been upgraded from version 4.04 to 4.06. +=item XXX -=item * +XXX Note that deprecated modules should be listed here even if they are listed +as an updated module in the L</Modules and Pragmata> section. -The PathTools module collection has been upgraded from version 3.62 -to 3.63. +=back -=item * +[ List each other deprecation as a =head2 entry ] -L<DynaLoader> has been upgraded from version 1.37 to 1.38. +=head1 Performance Enhancements -DynaLoader now always looks for bootstrap files having the same base name as -the module for which the bootstrap code is being run. Previously, and only on -platforms that use C<mod2fname> to produce unique loadable library names, -L<DynaLoader> would look for the bootstrap file using a base name that matched -the loadable library and not find it. +XXX Changes which enhance performance without changing behaviour go here. +There may well be none in a stable release. -=item * +[ List each enhancement as a =item entry ] -L<Encode> has been upgraded from version 2.78 to 2.80. +=over 4 =item * -L<ExtUtils::CBuilder> has been upgraded from version 0.280224 to 0.280225. +XXX -=item * +=back -L<ExtUtils::MakeMaker> has been upgraded from version 7.10 to 7.10_01. +=head1 Modules and Pragmata -=item * +XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/> +go here. If Module::CoreList is updated, generate an initial draft of the +following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary +for important changes should then be added by hand. In an ideal world, +dual-life modules would have a F<Changes> file that could be cribbed. -L<File::Spec> has been upgraded from version 3.62 to 3.63. +[ Within each section, list entries as a =item entry ] -=item * +=head2 New Modules and Pragmata -L<IPC::SysV> has been upgraded from version 2.04 to 2.05. +=over 4 =item * -L<Module::CoreList> has been upgraded from version 5.20160120 to 5.20160121. - -=item * +XXX -L<ODBM_File> has been upgraded from version 1.12 to 1.13. +=back -=item * +=head2 Updated Modules and Pragmata -L<PerlIO::encoding> has been upgraded from version 0.23 to 0.24. +=over 4 =item * -L<POSIX> has been upgraded from version 1.59 to 1.63. +L<XXX> has been upgraded from version A.xx to B.yy. -It can now export constants for the C<code> value in the hash passed to the -L<sigaction|POSIX/sigaction> handler when using the C<SA_SIGINFO> flag. - -These previously deprecated functions are now removed: C<isalnum>, -C<isalpha>, C<iscntrl>, C<isdigit>, C<isgraph>, C<islower>, C<isprint>, -C<ispunct>, C<isspace>, C<isupper>, and C<isxdigit>. +=back -=item * +=head2 Removed Modules and Pragmata -L<Storable> has been upgraded from version 2.54 to 2.55. +=over 4 =item * -L<Time::HiRes> has been upgraded from version 1.9728 to 1.9730. - -It can now export Linux-specific and FreeBSD-specific C<clock_gettime()> -constants. It also now has emulation for OS X C<clock_nanosleep()>, -C<clock_gettime()>, and C<clock_getres()>. +XXX =back =head1 Documentation -=head2 Changes to Existing Documentation +XXX Changes to files in F<pod/> go here. Consider grouping entries by +file and be sure to link to the appropriate page, e.g. L<perlfunc>. -=head3 L<perlguts> +=head2 New Documentation -=over 4 +XXX Changes which create B<new> files in F<pod/> go here. -=item * +=head3 L<XXX> -A new section has been added, L<perlguts/"Dynamic Scope and the Context -Stack">, which explains how the perl context stack works. +XXX Description of the purpose of the new file here -=back +=head2 Changes to Existing Documentation -=head3 L<perlmodlib> +XXX Changes which significantly change existing files in F<pod/> go here. +However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics> +section. + +=head3 L<XXX> =over 4 =item * -We now recommend contacting the module-authors list or PAUSE in seeking -guidance on the naming of modules. +XXX Description of the change here =back @@ -177,26 +168,21 @@ 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>. +XXX New or changed warnings emitted by the core's C<C> code go here. Also +include any changes in L<perldiag> that reconcile it to the C<C> code. + =head2 New Diagnostics +XXX Newly added diagnostic messages go under here, separated into New Errors +and New Warnings + =head3 New Errors =over 4 =item * -L<<< Sequence (?PE<lt>... not terminated in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol> -|perldiag/"Sequence (?PE<lt>... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>" >>> - -=item * - -L<Sequence (?PE<gt>... not terminated in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol> -|perldiag/"Sequence (?PE<gt>... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>"> - -=item * - -L<Empty \%c in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol> -|perldiag/"Empty \%c in regex; marked by <-- HERE in mE<sol>%sE<sol>"> +XXX L<message|perldiag/"message"> =back @@ -206,288 +192,193 @@ L<Empty \%c in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol> =item * -L<Assuming NOT a POSIX class since %s in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>| -perldiag/Assuming NOT a POSIX class since %s in regex; marked by <-- HERE in mE<sol>%sE<sol>> +XXX L<message|perldiag/"message"> =back -=head1 Configuration and Compilation - -=over 4 - -=item * - -The GNU Make makefile for Win32 now supports parallel builds. [perl #126632] +=head2 Changes to Existing Diagnostics -=item * +XXX Changes (i.e. rewording) of diagnostic messages go here -You can now build perl with MSVC++ on Win32 using GNU Make. [perl #126632] +=over 4 =item * -Bison 3.0 is now supported. +XXX Describe change here =back -=head1 Platform Support - -=head2 Platform-Specific Notes - -=over 4 +=head1 Utility Changes -=item VMS +XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here. +Most of these are built within the directory F<utils>. -=over +[ List utility changes as a =head2 entry for each utility and =item +entries for each change +Use L<XXX> with program names to get proper documentation linking. ] -=item * +=head2 L<XXX> -For those C<%ENV> elements based on the CRTL environ array, we've always -preserved case when setting them but did look-ups only after upcasing the -key first, which made lower- or mixed-case entries go missing. This problem -has been corrected by making C<%ENV> elements derived from the environ array -case-sensitive on look-up as well as case-preserving on store. +=over 4 =item * -Environment look-ups for C<PERL5LIB> and C<PERLLIB> previously only -considered logical names, but now consider all sources of C<%ENV> as -determined by C<PERL_ENV_TABLES> and as documented in L<perlvms/%ENV>. - -=back - -=item Win32 - -Builds using Microsoft Visual C++ 2003 and earlier no longer produce -an "INTERNAL COMPILER ERROR" message. [perl #126045] +XXX =back -=head1 Internal Changes - -=over 4 +=head1 Configuration and Compilation -=item * +XXX Changes to F<Configure>, F<installperl>, F<installman>, 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</Platform Support> section, instead. -The implementation of perl's context stack system, and its internal API, -have been heavily reworked. Note that no significant changes have been -made to any external APIs, but XS code which relies on such internal -details may need to be fixed. The main changes are: +[ List changes as a =item entry ]. =over 4 =item * -The C<PUSHBLOCK()>, C<POPSUB()> etc. macros have been replaced with static -inline functions such as C<cx_pushblock()>, C<cx_popsub()> etc. These use -function args rather than implicitly relying on local vars such as -C<gimme> and C<newsp> being available. Also their functionality has -changed: in particular, C<cx_popblock()> no longer decrements -C<cxstack_ix>. The ordering of the steps in the C<pp_leave*> functions -involving C<cx_popblock()>, C<cx_popsub()> etc. has changed. See the new -documentation, L<perlguts/"Dynamic Scope and the Context Stack">, for -details on how to use them. +XXX -=item * +=back -Various macros, which now consistently have a CX_ prefix, have been added: +=head1 Testing - CX_CUR(), CX_LEAVE_SCOPE(), CX_POP() +XXX Any significant changes to the testing of a freshly built perl should be +listed here. Changes which create B<new> files in F<t/> go here as do any +large changes to the testing harness (e.g. when parallel testing was added). +Changes to existing files in F<t/> aren't worth summarizing, although the bugs +that they represent may be covered elsewhere. -or renamed: +[ List each test improvement as a =item entry ] - CX_POP_SAVEARRAY(), CX_DEBUG(), CX_PUSHSUBST(), CX_POPSUBST() +=over 4 =item * -C<cx_pushblock()> now saves C<PL_savestack_ix> and C<PL_tmps_floor>, so -C<pp_enter*> and C<pp_leave*> no longer do +XXX - ENTER; SAVETMPS; ....; LEAVE +=back -=item * +=head1 Platform Support -C<cx_popblock()> now also restores C<PL_curpm>. +XXX Any changes to platform support should be listed in the sections below. -=item * +[ Within the sections, list each platform as a =item entry with specific +changes as paragraphs below it. ] -In C<dounwind()> for every context type, the current savestack frame is -now processed before each context is popped; formerly this was only done -for sub-like context frames. This action has been removed from -C<cx_popsub()> and placed into its own macro, C<CX_LEAVE_SCOPE(cx)>, which -must be called before C<cx_popsub()> etc. +=head2 New Platforms -C<dounwind()> now also does a C<cx_popblock()> on the last popped frame -(formerly it only did the C<cx_popsub()> etc. actions on each frame). +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<hints/> +directories, or new subdirectories and F<README> files at the top level of the +source tree. -=item * +=over 4 -The temps stack is now freed on scope exit; previously, temps created -during the last statement of a block wouldn't be freed until the next -C<nextstate> following the block (apart from an existing hack that did -this for recursive subs in scalar context); and in something like -C<f(g())>, the temps created by the last statement in C<g()> would -formerly not be freed until the statement following the return from -C<f()>. +=item XXX-some-platform -=item * +XXX -Most values that were saved on the savestack on scope entry are now -saved in suitable new fields in the context struct, and saved and -restored directly by C<cx_pushfoo()> and C<cx_popfoo()>, which is much -faster. +=back -=item * +=head2 Discontinued Platforms -Various context struct fields have been added, removed or modified. +XXX List any platforms that this version of perl no longer compiles on. -=item * +=over 4 -The handling of C<@_> in C<cx_pushsub()> and C<cx_popsub()> has been -considerably tidied up, including removing the C<argarray> field from the -context struct, and extracting out some common (but rarely used) code into -a separate function, C<clear_defarray()>. Also, useful subsets of -C<cx_popsub()> which had been unrolled in places like C<pp_goto> have been -gathered into the new functions C<cx_popsub_args()> and -C<cx_popsub_common()>. +=item XXX-some-platform -=item * +XXX + +=back -C<pp_leavesub> and C<pp_leavesublv> now use the same function as the rest -of the C<pp_leave*>'s to process return args. +=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</Modules and Pragmata> section. -C<CXp_FOR_PAD> and C<CXp_FOR_GV> flags have been added, and -C<CXt_LOOP_FOR> has been split into C<CXt_LOOP_LIST>, C<CXt_LOOP_ARY>. +=over 4 -=item * +=item XXX-some-platform -Some variables formerly declared by C<dMULTICALL> (but not documented) have -been removed. +XXX =back -=back +=head1 Internal Changes -=head1 Selected Bug Fixes +XXX Changes which affect the interface available to C<XS> code go here. Other +significant internal changes for future core maintainers should be noted as +well. + +[ List each change as a =item entry ] =over 4 =item * -Line numbers larger than 2**31-1 but less than 2**32 are no longer -returned by caller() as negative numbers. [perl #126991] - -=item * +XXX -C<< unless ( I<assignment> ) >> now properly warns when syntax -warnings are enabled. [perl #127122] +=back -=item * +=head1 Selected Bug Fixes -Setting an C<ISA> glob to an array reference now properly adds -C<isaelem> magic to any existing elements. Previously modifying such -an element would not update the ISA cache, so method calls would call -the wrong function. Perl would also crash if the C<ISA> glob was -destroyed, since new code added in 5.23.7 would try to release the -C<isaelem> magic from the elements. [perl #127351] +XXX Important bug fixes in the core language are summarized here. Bug fixes in +files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>. -=item * +[ List each fix as a =item entry ] -If a here-doc was found while parsing another operator, the parser had -already read end of file, and the here-doc was not terminated, perl -could produce an assertion or a segmentation fault. This now reliably -complains about the unterminated here-doc. [perl #125540] +=over 4 =item * -untie() would sometimes return the last value returned by the UNTIE() -handler as well as it's normal value, messing up the stack. [perl -#126621] +XXX -=item * - -Fixed an operator precedence problem when C< castflags & 2> is true. -[perl #127474] +=back -=item * +=head1 Known Problems -Caching of DESTROY methods could result in a non-pointer or a -non-STASH stored in the SvSTASH() slot of a stash, breaking the B -STASH() method. The DESTROY method is now cached in the MRO metadata -for the stash. [perl #126410] +XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any +tests that had to be C<TODO>ed for the release would be noted here. Unfixed +platform specific bugs also go here. -=item * +[ List each fix as a =item entry ] -The AUTOLOAD method is now called when searching for a DESTROY method, -and correctly sets C<$AUTOLOAD> too. [perl #124387] [perl #127494] +=over 4 =item * -Avoid parsing beyond the end of the buffer when processing a C<#line> -directive with no filename. [perl #127334] - -=item * +XXX -Perl now raises a warning when a regular expression pattern looks like -it was supposed to contain a POSIX class, like C<qr/[[:alpha:]]/>, but -there was some slight defect in its specification which causes it to -instead be treated as a regular bracketed character class. An example -would be missing the second colon in the above like this: -C<qr/[[:alpha]]/>. This compiles to match a sequence of two characters. -The second is C<"]">, and the first is any of: C<"[">, C<":">, C<"a">, -C<"h">, C<"l">, or C<"p">. This is unlikely to be the intended -meaning, and now a warning is raised. No warning is raised unless the -specification is very close to one of the 14 legal POSIX classes. (See -L<perlrecharclass/POSIX Character Classes>.) -[perl #8904] +=back -=item * +=head1 Errata From Previous Releases -Certain regex patterns involving a complemented POSIX class in an -inverted bracketed character class, and matching something else -optionally would improperly fail to match. An example of one that could -fail is C</qr/_?[^\Wbar]\x{100}/>. This has been fixed. -[perl #127537] +=over 4 =item * -Perl 5.22 added support to the C99 hexadecimal floating point notation, -but sometimes misparses hex floats. This had been fixed. -[perl #127183] +XXX Add anything here that we forgot to add, or were mistaken about, in +the perldelta of a previous release. =back -=head1 Acknowledgements - -Perl 5.23.8 represents approximately 4 weeks of development since Perl 5.23.7 -and contains approximately 30,000 lines of changes across 350 files from 23 -authors. - -Excluding auto-generated files, documentation and release tools, there were -approximately 14,000 lines of changes to 210 .pm, .t, .c and .h files. +=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.23.8: +XXX If any significant core contributor has died, we've added a short obituary +here. -Aaron Crane, Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari -Mannsåker, Daniel Dragan, David Mitchell, Ed J, Herbert Breunung, H.Merijn -Brand, James E Keenan, Jarkko Hietaniemi, Karl Williamson, Lukas Mai, Niko -Tyni, Pip Cet, Ricardo Signes, Sawyer X, Sisyphus, Stevan Little, Steve Hay, -Todd Rinaldo, Tom Hukins, 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. +=head1 Acknowledgements -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. +XXX Generate this with: -For a more complete list of all of Perl's historical contributors, please see -the F<AUTHORS> file in the Perl source distribution. + perl Porting/acknowledgements.pl v5.23.8..HEAD =head1 Reporting Bugs diff --git a/vms/descrip_mms.template b/vms/descrip_mms.template index 26d0624e35..e465e77c84 100644 --- a/vms/descrip_mms.template +++ b/vms/descrip_mms.template @@ -307,7 +307,7 @@ utils : $(utils1) $(utils2) $(utils3) $(utils4) $(utils5) extra.pods : miniperl @ @extra_pods.com -PERLDELTA_CURRENT = [.pod]perl5238delta.pod +PERLDELTA_CURRENT = [.pod]perl5239delta.pod $(PERLDELTA_CURRENT) : [.pod]perldelta.pod Copy/NoConfirm/Log $(MMS$SOURCE) $(PERLDELTA_CURRENT) diff --git a/win32/GNUmakefile b/win32/GNUmakefile index 92d4528027..4ada585bce 100644 --- a/win32/GNUmakefile +++ b/win32/GNUmakefile @@ -1544,7 +1544,7 @@ utils: $(HAVEMINIPERL) ..\utils\Makefile copy ..\README.tw ..\pod\perltw.pod copy ..\README.vos ..\pod\perlvos.pod copy ..\README.win32 ..\pod\perlwin32.pod - copy ..\pod\perldelta.pod ..\pod\perl5238delta.pod + copy ..\pod\perldelta.pod ..\pod\perl5239delta.pod $(MINIPERL) -I..\lib $(PL2BAT) $(UTILS) $(MINIPERL) -I..\lib ..\autodoc.pl .. $(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q .. @@ -1639,7 +1639,7 @@ distclean: realclean -if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS -cd $(PODDIR) && del /f *.html *.bat roffitall \ - perl5238delta.pod perlaix.pod perlamiga.pod perlandroid.pod \ + perl5239delta.pod perlaix.pod perlamiga.pod perlandroid.pod \ perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \ perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \ perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \ diff --git a/win32/Makefile b/win32/Makefile index 0667384d7c..be45b307a9 100644 --- a/win32/Makefile +++ b/win32/Makefile @@ -1215,7 +1215,7 @@ utils: $(PERLEXE) ..\utils\Makefile copy ..\README.tw ..\pod\perltw.pod copy ..\README.vos ..\pod\perlvos.pod copy ..\README.win32 ..\pod\perlwin32.pod - copy ..\pod\perldelta.pod ..\pod\perl5238delta.pod + copy ..\pod\perldelta.pod ..\pod\perl5239delta.pod cd ..\win32 $(PERLEXE) $(PL2BAT) $(UTILS) $(MINIPERL) -I..\lib ..\autodoc.pl .. @@ -1312,7 +1312,7 @@ distclean: realclean -if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS -cd $(PODDIR) && del /f *.html *.bat roffitall \ - perl5238delta.pod perlaix.pod perlamiga.pod perlandroid.pod \ + perl5239delta.pod perlaix.pod perlamiga.pod perlandroid.pod \ perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \ perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \ perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \ diff --git a/win32/makefile.mk b/win32/makefile.mk index 2403aa78ce..b16af718a1 100644 --- a/win32/makefile.mk +++ b/win32/makefile.mk @@ -1511,7 +1511,7 @@ utils: $(HAVEMINIPERL) ..\utils\Makefile copy ..\README.tw ..\pod\perltw.pod copy ..\README.vos ..\pod\perlvos.pod copy ..\README.win32 ..\pod\perlwin32.pod - copy ..\pod\perldelta.pod ..\pod\perl5238delta.pod + copy ..\pod\perldelta.pod ..\pod\perl5239delta.pod $(MINIPERL) -I..\lib $(PL2BAT) $(UTILS) $(MINIPERL) -I..\lib ..\autodoc.pl .. $(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q .. @@ -1607,7 +1607,7 @@ distclean: realclean -if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS -cd $(PODDIR) && del /f *.html *.bat roffitall \ - perl5238delta.pod perlaix.pod perlamiga.pod perlandroid.pod \ + perl5239delta.pod perlaix.pod perlamiga.pod perlandroid.pod \ perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \ perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \ perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \ diff --git a/win32/pod.mak b/win32/pod.mak index 8834156ce1..dafb4dc090 100644 --- a/win32/pod.mak +++ b/win32/pod.mak @@ -51,6 +51,7 @@ POD = perl.pod \ perl5236delta.pod \ perl5237delta.pod \ perl5238delta.pod \ + perl5239delta.pod \ perl561delta.pod \ perl56delta.pod \ perl581delta.pod \ @@ -196,6 +197,7 @@ MAN = perl.man \ perl5236delta.man \ perl5237delta.man \ perl5238delta.man \ + perl5239delta.man \ perl561delta.man \ perl56delta.man \ perl581delta.man \ @@ -341,6 +343,7 @@ HTML = perl.html \ perl5236delta.html \ perl5237delta.html \ perl5238delta.html \ + perl5239delta.html \ perl561delta.html \ perl56delta.html \ perl581delta.html \ @@ -486,6 +489,7 @@ TEX = perl.tex \ perl5236delta.tex \ perl5237delta.tex \ perl5238delta.tex \ + perl5239delta.tex \ perl561delta.tex \ perl56delta.tex \ perl581delta.tex \ |