This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Time::HiRes version bump.
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
af8a293f
SL
5[ this is a template for a new perldelta file. Any text flagged as XXX needs
6to be processed before release. ]
7
8perldelta - what is new for perl v5.23.8
eabfc7bc 9
2cfe9b50 10=head1 DESCRIPTION
eabfc7bc 11
af8a293f 12This document describes differences between the 5.23.7 release and the 5.23.8
2cfe9b50 13release.
eabfc7bc 14
af8a293f
SL
15If you are upgrading from an earlier release such as 5.23.6, first read
16L<perl5237delta>, which describes differences between 5.23.6 and 5.23.7.
394609a5 17
af8a293f 18=head1 Notice
6b659339 19
af8a293f 20XXX Any important notices here
6b659339 21
af8a293f 22=head1 Core Enhancements
a8c28920 23
af8a293f
SL
24XXX New core language features go here. Summarize user-visible core language
25enhancements. Particularly prominent performance optimisations could go
26here, but most should go in the L</Performance Enhancements> section.
7feb15ec 27
af8a293f 28[ List each enhancement as a =head2 entry ]
7feb15ec 29
cdfe2e65
DIM
30=head2 More fields provided to C<sigaction> callback with C<SA_SIGINFO>
31
32When passing the C<SA_SIGINFO> flag to L<sigaction|POSIX/sigaction>, the
33C<errno>, C<status>, C<uid>, C<pid>, C<addr> and C<band> fields are now
34included in the hash passed to the handler, if supported by the
35platform.
36
af8a293f 37=head1 Security
a8c28920 38
af8a293f
SL
39XXX Any security-related notices go here. In particular, any security
40vulnerabilities closed should be noted here rather than in the
41L</Selected Bug Fixes> section.
a8c28920 42
af8a293f 43[ List each security issue as a =head2 entry ]
a8c28920 44
c0883d63 45=head1 Incompatible Changes
a8c28920 46
af8a293f 47XXX For a release on a stable branch, this section aspires to be:
f1f6961f 48
af8a293f
SL
49 There are no changes intentionally incompatible with 5.XXX.XXX
50 If any exist, they are bugs, and we request that you submit a
51 report. See L</Reporting Bugs> below.
f1f6961f 52
af8a293f 53[ List each incompatible change as a =head2 entry ]
1257ab89 54
af8a293f 55=head1 Deprecations
d9d208b8 56
af8a293f 57XXX Any deprecated features, syntax, modules etc. should be listed here.
d9d208b8 58
af8a293f 59=head2 Module removals
a7e63acd 60
af8a293f 61XXX Remove this section if inapplicable.
a7e63acd 62
af8a293f
SL
63The following modules will be removed from the core distribution in a
64future release, and will at that time need to be installed from CPAN.
65Distributions on CPAN which require these modules will need to list them as
66prerequisites.
a7e63acd 67
af8a293f
SL
68The core versions of these modules will now issue C<"deprecated">-category
69warnings to alert you to this fact. To silence these deprecation warnings,
70install the modules in question from CPAN.
a7e63acd 71
af8a293f
SL
72Note that these are (with rare exceptions) fine modules that you are encouraged
73to continue to use. Their disinclusion from core primarily hinges on their
74necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
75not usually on concerns over their design.
a7e63acd 76
af8a293f 77=over
a7e63acd 78
af8a293f 79=item XXX
a7e63acd 80
af8a293f
SL
81XXX Note that deprecated modules should be listed here even if they are listed
82as an updated module in the L</Modules and Pragmata> section.
a7e63acd 83
af8a293f 84=back
a7e63acd 85
af8a293f 86[ List each other deprecation as a =head2 entry ]
a7e63acd 87
af8a293f 88=head1 Performance Enhancements
a7e63acd 89
af8a293f
SL
90XXX Changes which enhance performance without changing behaviour go here.
91There may well be none in a stable release.
a7e63acd 92
af8a293f 93[ List each enhancement as a =item entry ]
a7e63acd 94
af8a293f 95=over 4
a7e63acd
SL
96
97=item *
98
d7745c5b
DM
99The overhead of scope entry and exit has been considerably reduced, so
100for example subroutine calls, loops and basic blocks are all faster now.
101This empty function call now takes about a third less time to execute:
102
103 sub f{} f();
a7e63acd 104
d7a7ed74
DD
105=item *
106
107On Win32, C<stat>ing or C<-X>ing a path, if the file or directory does not exist
108is now 3.5x faster on a SSD (or any drive) than before.
109
af8a293f 110=back
a7e63acd 111
af8a293f 112=head1 Modules and Pragmata
a7e63acd 113
af8a293f
SL
114XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
115go here. If Module::CoreList is updated, generate an initial draft of the
116following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
117for important changes should then be added by hand. In an ideal world,
118dual-life modules would have a F<Changes> file that could be cribbed.
a7e63acd 119
af8a293f 120[ Within each section, list entries as a =item entry ]
a7e63acd 121
af8a293f 122=head2 New Modules and Pragmata
a7e63acd 123
af8a293f 124=over 4
a7e63acd
SL
125
126=item *
127
af8a293f 128XXX
a7e63acd 129
af8a293f 130=back
fd12b912 131
af8a293f 132=head2 Updated Modules and Pragmata
f909f9f7 133
af8a293f 134=over 4
a7e63acd
SL
135
136=item *
137
9b88cb2a 138F<cpan/podlators/> has been upgraded from version 4.04 to 4.06.
a7e63acd 139
34e79b75
DIM
140=item *
141
142L<POSIX> has been upgraded from version 1.59 to 1.60.
143
144It can now export constants for the C<code> value in the hash passed to the
145L<sigaction|POSIX/sigaction> handler when using the C<SA_SIGINFO> flag.
146
af8a293f 147=back
a7e63acd 148
af8a293f 149=head2 Removed Modules and Pragmata
a7e63acd 150
af8a293f 151=over 4
a7e63acd
SL
152
153=item *
154
af8a293f 155XXX
f909f9f7 156
054383b6 157=back
d9d208b8 158
c0883d63
SL
159=head1 Documentation
160
af8a293f
SL
161XXX Changes to files in F<pod/> go here. Consider grouping entries by
162file and be sure to link to the appropriate page, e.g. L<perlfunc>.
c0883d63 163
af8a293f 164=head2 New Documentation
d9d208b8 165
af8a293f 166XXX Changes which create B<new> files in F<pod/> go here.
d9d208b8 167
af8a293f 168=head3 L<XXX>
d9d208b8 169
af8a293f 170XXX Description of the purpose of the new file here
523c5db4 171
af8a293f 172=head2 Changes to Existing Documentation
d9d208b8 173
af8a293f
SL
174XXX Changes which significantly change existing files in F<pod/> go here.
175However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
176section.
177
d7745c5b 178=head3 L<perlguts>
d9d208b8 179
c0883d63 180=over 4
fd12b912 181
c0883d63 182=item *
fd12b912 183
d7745c5b
DM
184A new section has been added, L<perlguts/"Dynamic Scope and the Context
185Stack">, which explains how the perl context stack works.
fd12b912 186
c0883d63 187=back
d9d208b8 188
af8a293f 189=head1 Diagnostics
d9d208b8 190
af8a293f
SL
191The following additions or changes have been made to diagnostic output,
192including warnings and fatal error messages. For the complete list of
193diagnostic messages, see L<perldiag>.
d9d208b8 194
af8a293f
SL
195XXX New or changed warnings emitted by the core's C<C> code go here. Also
196include any changes in L<perldiag> that reconcile it to the C<C> code.
fd12b912 197
af8a293f 198=head2 New Diagnostics
fd12b912 199
af8a293f
SL
200XXX Newly added diagnostic messages go under here, separated into New Errors
201and New Warnings
fd12b912 202
af8a293f 203=head3 New Errors
c0883d63 204
af8a293f 205=over 4
fd12b912 206
c0883d63 207=item *
d9d208b8 208
cfbef7dc
KW
209L<Sequence (?PE<lt>... not terminated in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>
210|perldiag/"Sequence (?PE<lt>... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>">
211
212=item *
213
214L<Sequence (?PE<gt>... not terminated in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>
215|perldiag/Sequence (?PE<gt>... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>>
d9d208b8 216
c0883d63 217=back
fd12b912 218
af8a293f 219=head3 New Warnings
fd12b912 220
054383b6 221=over 4
fd12b912
DG
222
223=item *
224
46d34d0e
KW
225L<Assuming NOT a POSIX class since %s in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>|
226perldiag/Assuming NOT a POSIX class since %s in regex; marked by <-- HERE in mE<sol>%sE<sol>>
a8c28920 227
6c83150b 228=back
a8c28920 229
af8a293f
SL
230=head2 Changes to Existing Diagnostics
231
232XXX Changes (i.e. rewording) of diagnostic messages go here
d9d208b8
DG
233
234=over 4
235
236=item *
237
af8a293f 238XXX Describe change here
d9d208b8
DG
239
240=back
241
af8a293f 242=head1 Utility Changes
c0883d63 243
af8a293f
SL
244XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
245Most of these are built within the directory F<utils>.
054383b6 246
af8a293f
SL
247[ List utility changes as a =head2 entry for each utility and =item
248entries for each change
249Use L<XXX> with program names to get proper documentation linking. ]
250
251=head2 L<XXX>
a8c28920 252
6c83150b 253=over 4
a8c28920
A
254
255=item *
256
af8a293f 257XXX
d9d208b8
DG
258
259=back
260
054383b6 261=head1 Configuration and Compilation
a8c28920 262
af8a293f
SL
263XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
264go here. Any other changes to the Perl build process should be listed here.
265However, any platform-specific changes should be listed in the
266L</Platform Support> section, instead.
267
268[ List changes as a =item entry ].
269
6c83150b 270=over 4
a8c28920 271
6c83150b 272=item *
a8c28920 273
c5b0f62d
TC
274The GNU Make makefile for Win32 now supports parallel builds. [perl #126632]
275
276=item *
277
278You can now build perl with MSVC++ on Win32 using GNU Make. [perl #126632]
054383b6 279
af8a293f
SL
280=back
281
282=head1 Testing
283
284XXX Any significant changes to the testing of a freshly built perl should be
285listed here. Changes which create B<new> files in F<t/> go here as do any
286large changes to the testing harness (e.g. when parallel testing was added).
287Changes to existing files in F<t/> aren't worth summarizing, although the bugs
288that they represent may be covered elsewhere.
f83db990 289
af8a293f
SL
290[ List each test improvement as a =item entry ]
291
292=over 4
eabfc7bc 293
0dafb1ce 294=item *
eabfc7bc 295
af8a293f 296XXX
5ea25977 297
b26bd9b0 298=back
5ea25977 299
6c83150b
A
300=head1 Platform Support
301
02dd1325
CB
302=head2 Platform-Specific Notes
303
304=over 4
305
306=item VMS
307
308=over
309
310=item *
af8a293f 311
02dd1325
CB
312For those C<%ENV> elements based on the CRTL environ array, we've always
313preserved case when setting them but did look-ups only after upcasing the
314key first, which made lower- or mixed-case entries go missing. This problem
315has been corrected by making C<%ENV> elements derived from the environ array
316case-sensitive on look-up as well as case-preserving on store.
317
318=item *
319
320Environment look-ups for C<PERL5LIB> and C<PERLLIB> previously only
321considered logical names, but now consider all sources of C<%ENV> as
322determined by C<PERL_ENV_TABLES> and as documented in L<perlvms/%ENV>.
323
324=back
325
326=back
af8a293f
SL
327
328=head2 New Platforms
329
330XXX List any platforms that this version of perl compiles on, that previous
331versions did not. These will either be enabled by new files in the F<hints/>
332directories, or new subdirectories and F<README> files at the top level of the
333source tree.
0517ed38 334
6c83150b 335=over 4
0517ed38 336
af8a293f 337=item XXX-some-platform
b3d7d865 338
af8a293f 339XXX
b3d7d865 340
af8a293f 341=back
d9d208b8 342
af8a293f 343=head2 Discontinued Platforms
48fbd301 344
af8a293f 345XXX List any platforms that this version of perl no longer compiles on.
48fbd301 346
af8a293f 347=over 4
f4240379 348
af8a293f 349=item XXX-some-platform
f4240379 350
af8a293f 351XXX
6c83150b 352
1d6d94ad
DG
353=back
354
af8a293f
SL
355=head2 Platform-Specific Notes
356
357XXX List any changes for specific platforms. This could include configuration
358and compilation changes or changes in portability/compatibility. However,
359changes within modules for platforms should generally be listed in the
360L</Modules and Pragmata> section.
d89ea360 361
054383b6 362=over 4
0efe3111 363
022b5ce0 364=item Win32
0efe3111 365
022b5ce0
TC
366Builds using Microsoft Visual C++ 2003 and earlier no longer produce
367an "INTERNAL COMPILER ERROR" message. [perl #126045]
206e921d 368
af8a293f 369=back
206e921d 370
af8a293f 371=head1 Internal Changes
d9d208b8 372
af8a293f
SL
373XXX Changes which affect the interface available to C<XS> code go here. Other
374significant internal changes for future core maintainers should be noted as
375well.
376
377[ List each change as a =item entry ]
d9d208b8 378
af8a293f 379=over 4
d9d208b8
DG
380
381=item *
382
d7745c5b
DM
383The implementation of perl's context stack system, and its internal API,
384have been heavily reworked. Note that no significant changes have been
d7c7f8cb 385made to any external APIs, but XS code which relies on such internal
d7745c5b
DM
386details may need to be fixed. The main changes are:
387
388=over 4
389
390=item *
391
392The C<PUSHBLOCK()>, C<POPSUB()> etc. macros have been replaced with static
393inline functions such as C<cx_pushblock()>, C<cx_popsub()> etc. These use
394function args rather than implicitly relying on local vars such as
395C<gimme> and C<newsp> being available. Also their functionality has
396changed: in particular, C<cx_popblock()> no longer decrements
397C<cxstack_ix>. The ordering of the steps in the C<pp_leave*> functions
398involving C<cx_popblock()>, C<cx_popsub()> etc. has changed. See the new
399documentation, L<perlguts/"Dynamic Scope and the Context Stack">, for
400details on how to use them.
401
402=item *
403
404Various macros, which now consistently have a CX_ prefix, have been added:
405
485bf8f9 406 CX_CUR(), CX_LEAVE_SCOPE(), CX_POP()
d7745c5b
DM
407
408or renamed:
409
485bf8f9 410 CX_POP_SAVEARRAY(), CX_DEBUG(), CX_PUSHSUBST() ,CX_POPSUBST()
d7745c5b
DM
411
412=item *
413
414C<cx_pushblock()> now saves C<PL_savestack_ix> and C<PL_tmps_floor>, so
415CMpp_enter*> and C<pp_leave*> no longer do
416
417 ENTER; SAVETMPS; ....; LEAVE
418
419=item *
420
421C<cx_popblock()> now also restores C<PL_curpm>.
422
423=item *
424
425In C<dounwind()> for every context type, the current savestack frame is
d7c7f8cb 426now processed before each context is popped; formerly this was only done
d7745c5b
DM
427for sub-like context frames. This action has been removed from
428C<cx_popsub()> and placed into its own macro, C<CX_LEAVE_SCOPE(cx)>, which
429must be called before C<cx_popsub()> etc.
430
431C<dounwind()> now also does a C<cx_popblock()> on the last popped frame
432(formerly it only did the C<cx_popsub()> etc. actions on each frame).
433
434=item *
435
436The temps stack is now freed on scope exit; previously, temps created
437during the last statement of a block wouldn't be freed until the next
438C<nextstate> following the block (apart from an existing hack that did
439this for recursive subs in scalar context); and in something like
440C<f(g())>, the temps created by the last statement in C<g()> would
441formerly not be freed until the statement following the return from
442C<f()>.
443
444=item *
445
446Most values that were saved on the savestack on scope entry are now
447saved in suitable new fields in the context struct, and saved and
448restored directly by C<cx_pushfoo()> and C<cx_popfoo()>, which is much
449faster.
450
451=item *
452
453Various context struct fields have been added, removed or modified.
454
455=item *
456
457The handling of C<@_> in C<cx_pushsub()> and C<cx_popsub()> has been
458considerably tidied up, including removing the C<argarray> field from the
459context struct, and extracting out some common (but rarely used) code into
460a separate function, C<clear_defarray()>. Also, useful subsets of
461C<cx_popsub()> which had been unrolled in places like C<pp_goto> have been
462gathered into the new functions C<cx_popsub_args()> and
463C<cx_popsub_common()>.
464
465=item *
466
467C<pp_leavesub> and C<pp_leavesublv> now use the same function as the rest
468of the C<pp_leave*>'s to process return args.
469
470=item *
471
472C<CXp_FOR_PAD> and C<CXp_FOR_GV> flags have been added, and
473C<CXt_LOOP_FOR> has been split into C<CXt_LOOP_LIST>, C<CXt_LOOP_ARY>.
474
475=item *
476
477Some variables formerly declared by C<dMULTICALL> (but not documented) have
478been removed.
479
480=back
481
d9d208b8 482
d89ea360
DD
483=back
484
b26bd9b0 485=head1 Selected Bug Fixes
eabfc7bc 486
af8a293f
SL
487XXX Important bug fixes in the core language are summarized here. Bug fixes in
488files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
acedda6e 489
af8a293f 490[ List each fix as a =item entry ]
bc5be890 491
af8a293f 492=over 4
acedda6e 493
c7052e96
TC
494=item *
495
2ff6ae51 496Line numbers larger than 2**31-1 but less than 2**32 are no longer
d15ad02e 497returned by caller() as negative numbers. [perl #126991]
c7052e96 498
2ff6ae51
TC
499=item *
500
501C<< unless ( I<assignment> ) >> now properly warns when syntax
502warnings are enabled. [perl #127122]
503
42d92f4a
TC
504=item *
505
506Setting an C<ISA> glob to an array reference now properly adds
507C<isaelem> magic to any existing elements. Previously modifying such
508an element would not update the ISA cache, so method calls would call
509the wrong function. Perl would also crash if the C<ISA> glob was
510destroyed, since new code added in 5.23.7 would try to release the
511C<isaelem> magic from the elements. [perl #127351]
512
19b46ab5
TC
513=item *
514
515If a here-doc was found while parsing another operator, the parser had
516already read end of file, and the here-doc was not terminated, perl
517could produce an assertion or a segmentation fault. This now reliably
518complains about the unterminated here-doc. [perl #125540]
519
23b4d8d6
TC
520=item *
521
522untie() would sometimes return the last value returned by the UNTIE()
523handler as well as it's normal value, messing up the stack. [perl
524#126621]
525
002a7765
TC
526=item *
527
528Fixed an operator precedence problem when C< castflags & 2> is true.
529[perl #127474]
530
84279daf
TC
531=item *
532
533Caching of DESTROY methods could result in a non-pointer or a
534non-STASH stored in the SvSTASH() slot of a stash, breaking the B
535STASH() method. The DESTROY method is now cached in the MRO metadata
536for the stash. [perl #126410]
537
538=item *
539
0000ba0d
TC
540The AUTOLOAD method is now called when searching for a DESTROY method,
541and correctly sets C<$AUTOLOAD> too. [perl #124387] [perl #127494]
84279daf 542
54e70d91
TC
543=item *
544
545Avoid parsing beyond the end of the buffer when processing a C<#line>
546directive with no filename. [perl #127334]
547
46d34d0e
KW
548=item *
549
550Perl now raises a warning when a regular expression pattern looks like
551it was supposed to contain a POSIX class, like C<qr/[[:alpha:]]/>, but
552there was some slight defect in its specification which causes it to
553instead be treated as a regular bracketed character class. An example
554would be missing the second colon in the above like this:
555C<qr/[[:alpha]]/>. This compiles to match a sequence of two characters.
556The second is C<"]">, and the first is any of: C<"[">, C<":">, C<"a">,
557C<"h">, C<"l">, or C<"p">. This is unlikely to be the intended
558meaning, and now a warning is raised. No warning is raised unless the
559specification is very close to one of the 14 legal POSIX classes. (See
560L<perlrecharclass/POSIX Character Classes>.)
561[perl #8904]
562
af8a293f 563=back
3c84cb84 564
af8a293f 565=head1 Known Problems
d005d3c3 566
af8a293f
SL
567XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
568tests that had to be C<TODO>ed for the release would be noted here. Unfixed
569platform specific bugs also go here.
d43e55a3 570
af8a293f 571[ List each fix as a =item entry ]
e685831a 572
af8a293f 573=over 4
e685831a 574
0701ff00
JH
575=item *
576
af8a293f 577XXX
0701ff00 578
054383b6 579=back
d9d208b8 580
af8a293f 581=head1 Errata From Previous Releases
0057cacf
SL
582
583=over 4
584
585=item *
586
af8a293f
SL
587XXX Add anything here that we forgot to add, or were mistaken about, in
588the perldelta of a previous release.
0057cacf
SL
589
590=back
591
af8a293f 592=head1 Obituary
5a74572e 593
af8a293f
SL
594XXX If any significant core contributor has died, we've added a short obituary
595here.
5a74572e 596
af8a293f 597=head1 Acknowledgements
e1ad135d 598
af8a293f 599XXX Generate this with:
e1ad135d 600
af8a293f 601 perl Porting/acknowledgements.pl v5.23.7..HEAD
f5b73711 602
44691e6f
AB
603=head1 Reporting Bugs
604
e08634c5
SH
605If you find what you think is a bug, you might check the articles recently
606posted to the comp.lang.perl.misc newsgroup and the perl bug database at
fc4c3cec
RS
607L<https://rt.perl.org/> . There may also be information at
608L<http://www.perl.org/> , the Perl Home Page.
44691e6f 609
e08634c5
SH
610If you believe you have an unreported bug, please run the L<perlbug> program
611included with your release. Be sure to trim your bug down to a tiny but
612sufficient test case. Your bug report, along with the output of C<perl -V>,
613will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
614
615If the bug you are reporting has security implications, which make it
e08634c5
SH
616inappropriate to send to a publicly archived mailing list, then please send it
617to perl5-security-report@perl.org. This points to a closed subscription
618unarchived mailing list, which includes all the core committers, who will be
619able to help assess the impact of issues, figure out a resolution, and help
f9001595 620co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
621platforms on which Perl is supported. Please only use this address for
622security issues in the Perl core, not for modules independently distributed on
623CPAN.
44691e6f
AB
624
625=head1 SEE ALSO
626
e08634c5
SH
627The F<Changes> file for an explanation of how to view exhaustive details on
628what changed.
44691e6f
AB
629
630The F<INSTALL> file for how to build Perl.
631
632The F<README> file for general stuff.
633
634The F<Artistic> and F<Copying> files for copyright information.
635
636=cut