This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for 071db91b12fc
[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
af8a293f 105=back
a7e63acd 106
af8a293f 107=head1 Modules and Pragmata
a7e63acd 108
af8a293f
SL
109XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
110go here. If Module::CoreList is updated, generate an initial draft of the
111following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
112for important changes should then be added by hand. In an ideal world,
113dual-life modules would have a F<Changes> file that could be cribbed.
a7e63acd 114
af8a293f 115[ Within each section, list entries as a =item entry ]
a7e63acd 116
af8a293f 117=head2 New Modules and Pragmata
a7e63acd 118
af8a293f 119=over 4
a7e63acd
SL
120
121=item *
122
af8a293f 123XXX
a7e63acd 124
af8a293f 125=back
fd12b912 126
af8a293f 127=head2 Updated Modules and Pragmata
f909f9f7 128
af8a293f 129=over 4
a7e63acd
SL
130
131=item *
132
9b88cb2a 133F<cpan/podlators/> has been upgraded from version 4.04 to 4.06.
a7e63acd 134
34e79b75
DIM
135=item *
136
137L<POSIX> has been upgraded from version 1.59 to 1.60.
138
139It can now export constants for the C<code> value in the hash passed to the
140L<sigaction|POSIX/sigaction> handler when using the C<SA_SIGINFO> flag.
141
af8a293f 142=back
a7e63acd 143
af8a293f 144=head2 Removed Modules and Pragmata
a7e63acd 145
af8a293f 146=over 4
a7e63acd
SL
147
148=item *
149
af8a293f 150XXX
f909f9f7 151
054383b6 152=back
d9d208b8 153
c0883d63
SL
154=head1 Documentation
155
af8a293f
SL
156XXX Changes to files in F<pod/> go here. Consider grouping entries by
157file and be sure to link to the appropriate page, e.g. L<perlfunc>.
c0883d63 158
af8a293f 159=head2 New Documentation
d9d208b8 160
af8a293f 161XXX Changes which create B<new> files in F<pod/> go here.
d9d208b8 162
af8a293f 163=head3 L<XXX>
d9d208b8 164
af8a293f 165XXX Description of the purpose of the new file here
523c5db4 166
af8a293f 167=head2 Changes to Existing Documentation
d9d208b8 168
af8a293f
SL
169XXX Changes which significantly change existing files in F<pod/> go here.
170However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
171section.
172
d7745c5b 173=head3 L<perlguts>
d9d208b8 174
c0883d63 175=over 4
fd12b912 176
c0883d63 177=item *
fd12b912 178
d7745c5b
DM
179A new section has been added, L<perlguts/"Dynamic Scope and the Context
180Stack">, which explains how the perl context stack works.
fd12b912 181
c0883d63 182=back
d9d208b8 183
af8a293f 184=head1 Diagnostics
d9d208b8 185
af8a293f
SL
186The following additions or changes have been made to diagnostic output,
187including warnings and fatal error messages. For the complete list of
188diagnostic messages, see L<perldiag>.
d9d208b8 189
af8a293f
SL
190XXX New or changed warnings emitted by the core's C<C> code go here. Also
191include any changes in L<perldiag> that reconcile it to the C<C> code.
fd12b912 192
af8a293f 193=head2 New Diagnostics
fd12b912 194
af8a293f
SL
195XXX Newly added diagnostic messages go under here, separated into New Errors
196and New Warnings
fd12b912 197
af8a293f 198=head3 New Errors
c0883d63 199
af8a293f 200=over 4
fd12b912 201
c0883d63 202=item *
d9d208b8 203
af8a293f 204XXX L<message|perldiag/"message">
d9d208b8 205
c0883d63 206=back
fd12b912 207
af8a293f 208=head3 New Warnings
fd12b912 209
054383b6 210=over 4
fd12b912
DG
211
212=item *
213
af8a293f 214XXX L<message|perldiag/"message">
a8c28920 215
6c83150b 216=back
a8c28920 217
af8a293f
SL
218=head2 Changes to Existing Diagnostics
219
220XXX Changes (i.e. rewording) of diagnostic messages go here
d9d208b8
DG
221
222=over 4
223
224=item *
225
af8a293f 226XXX Describe change here
d9d208b8
DG
227
228=back
229
af8a293f 230=head1 Utility Changes
c0883d63 231
af8a293f
SL
232XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
233Most of these are built within the directory F<utils>.
054383b6 234
af8a293f
SL
235[ List utility changes as a =head2 entry for each utility and =item
236entries for each change
237Use L<XXX> with program names to get proper documentation linking. ]
238
239=head2 L<XXX>
a8c28920 240
6c83150b 241=over 4
a8c28920
A
242
243=item *
244
af8a293f 245XXX
d9d208b8
DG
246
247=back
248
054383b6 249=head1 Configuration and Compilation
a8c28920 250
af8a293f
SL
251XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
252go here. Any other changes to the Perl build process should be listed here.
253However, any platform-specific changes should be listed in the
254L</Platform Support> section, instead.
255
256[ List changes as a =item entry ].
257
6c83150b 258=over 4
a8c28920 259
6c83150b 260=item *
a8c28920 261
af8a293f 262XXX
054383b6 263
af8a293f
SL
264=back
265
266=head1 Testing
267
268XXX Any significant changes to the testing of a freshly built perl should be
269listed here. Changes which create B<new> files in F<t/> go here as do any
270large changes to the testing harness (e.g. when parallel testing was added).
271Changes to existing files in F<t/> aren't worth summarizing, although the bugs
272that they represent may be covered elsewhere.
f83db990 273
af8a293f
SL
274[ List each test improvement as a =item entry ]
275
276=over 4
eabfc7bc 277
0dafb1ce 278=item *
eabfc7bc 279
af8a293f 280XXX
5ea25977 281
b3c290c2
TC
282=item *
283
284The GNU Make makefile for Win32 now supports parallel builds. [perl #126632]
285
286=item *
287
288You can now build perl with MSVC++ on Win32 using GNU Make. [perl #126632]
289
b26bd9b0 290=back
5ea25977 291
6c83150b
A
292=head1 Platform Support
293
02dd1325
CB
294=head2 Platform-Specific Notes
295
296=over 4
297
298=item VMS
299
300=over
301
302=item *
af8a293f 303
02dd1325
CB
304For those C<%ENV> elements based on the CRTL environ array, we've always
305preserved case when setting them but did look-ups only after upcasing the
306key first, which made lower- or mixed-case entries go missing. This problem
307has been corrected by making C<%ENV> elements derived from the environ array
308case-sensitive on look-up as well as case-preserving on store.
309
310=item *
311
312Environment look-ups for C<PERL5LIB> and C<PERLLIB> previously only
313considered logical names, but now consider all sources of C<%ENV> as
314determined by C<PERL_ENV_TABLES> and as documented in L<perlvms/%ENV>.
315
316=back
317
318=back
af8a293f
SL
319
320=head2 New Platforms
321
322XXX List any platforms that this version of perl compiles on, that previous
323versions did not. These will either be enabled by new files in the F<hints/>
324directories, or new subdirectories and F<README> files at the top level of the
325source tree.
0517ed38 326
6c83150b 327=over 4
0517ed38 328
af8a293f 329=item XXX-some-platform
b3d7d865 330
af8a293f 331XXX
b3d7d865 332
af8a293f 333=back
d9d208b8 334
af8a293f 335=head2 Discontinued Platforms
48fbd301 336
af8a293f 337XXX List any platforms that this version of perl no longer compiles on.
48fbd301 338
af8a293f 339=over 4
f4240379 340
af8a293f 341=item XXX-some-platform
f4240379 342
af8a293f 343XXX
6c83150b 344
1d6d94ad
DG
345=back
346
af8a293f
SL
347=head2 Platform-Specific Notes
348
349XXX List any changes for specific platforms. This could include configuration
350and compilation changes or changes in portability/compatibility. However,
351changes within modules for platforms should generally be listed in the
352L</Modules and Pragmata> section.
d89ea360 353
054383b6 354=over 4
0efe3111 355
022b5ce0 356=item Win32
0efe3111 357
022b5ce0
TC
358Builds using Microsoft Visual C++ 2003 and earlier no longer produce
359an "INTERNAL COMPILER ERROR" message. [perl #126045]
206e921d 360
af8a293f 361=back
206e921d 362
af8a293f 363=head1 Internal Changes
d9d208b8 364
af8a293f
SL
365XXX Changes which affect the interface available to C<XS> code go here. Other
366significant internal changes for future core maintainers should be noted as
367well.
368
369[ List each change as a =item entry ]
d9d208b8 370
af8a293f 371=over 4
d9d208b8
DG
372
373=item *
374
d7745c5b
DM
375The implementation of perl's context stack system, and its internal API,
376have been heavily reworked. Note that no significant changes have been
d7c7f8cb 377made to any external APIs, but XS code which relies on such internal
d7745c5b
DM
378details may need to be fixed. The main changes are:
379
380=over 4
381
382=item *
383
384The C<PUSHBLOCK()>, C<POPSUB()> etc. macros have been replaced with static
385inline functions such as C<cx_pushblock()>, C<cx_popsub()> etc. These use
386function args rather than implicitly relying on local vars such as
387C<gimme> and C<newsp> being available. Also their functionality has
388changed: in particular, C<cx_popblock()> no longer decrements
389C<cxstack_ix>. The ordering of the steps in the C<pp_leave*> functions
390involving C<cx_popblock()>, C<cx_popsub()> etc. has changed. See the new
391documentation, L<perlguts/"Dynamic Scope and the Context Stack">, for
392details on how to use them.
393
394=item *
395
396Various macros, which now consistently have a CX_ prefix, have been added:
397
485bf8f9 398 CX_CUR(), CX_LEAVE_SCOPE(), CX_POP()
d7745c5b
DM
399
400or renamed:
401
485bf8f9 402 CX_POP_SAVEARRAY(), CX_DEBUG(), CX_PUSHSUBST() ,CX_POPSUBST()
d7745c5b
DM
403
404=item *
405
406C<cx_pushblock()> now saves C<PL_savestack_ix> and C<PL_tmps_floor>, so
407CMpp_enter*> and C<pp_leave*> no longer do
408
409 ENTER; SAVETMPS; ....; LEAVE
410
411=item *
412
413C<cx_popblock()> now also restores C<PL_curpm>.
414
415=item *
416
417In C<dounwind()> for every context type, the current savestack frame is
d7c7f8cb 418now processed before each context is popped; formerly this was only done
d7745c5b
DM
419for sub-like context frames. This action has been removed from
420C<cx_popsub()> and placed into its own macro, C<CX_LEAVE_SCOPE(cx)>, which
421must be called before C<cx_popsub()> etc.
422
423C<dounwind()> now also does a C<cx_popblock()> on the last popped frame
424(formerly it only did the C<cx_popsub()> etc. actions on each frame).
425
426=item *
427
428The temps stack is now freed on scope exit; previously, temps created
429during the last statement of a block wouldn't be freed until the next
430C<nextstate> following the block (apart from an existing hack that did
431this for recursive subs in scalar context); and in something like
432C<f(g())>, the temps created by the last statement in C<g()> would
433formerly not be freed until the statement following the return from
434C<f()>.
435
436=item *
437
438Most values that were saved on the savestack on scope entry are now
439saved in suitable new fields in the context struct, and saved and
440restored directly by C<cx_pushfoo()> and C<cx_popfoo()>, which is much
441faster.
442
443=item *
444
445Various context struct fields have been added, removed or modified.
446
447=item *
448
449The handling of C<@_> in C<cx_pushsub()> and C<cx_popsub()> has been
450considerably tidied up, including removing the C<argarray> field from the
451context struct, and extracting out some common (but rarely used) code into
452a separate function, C<clear_defarray()>. Also, useful subsets of
453C<cx_popsub()> which had been unrolled in places like C<pp_goto> have been
454gathered into the new functions C<cx_popsub_args()> and
455C<cx_popsub_common()>.
456
457=item *
458
459C<pp_leavesub> and C<pp_leavesublv> now use the same function as the rest
460of the C<pp_leave*>'s to process return args.
461
462=item *
463
464C<CXp_FOR_PAD> and C<CXp_FOR_GV> flags have been added, and
465C<CXt_LOOP_FOR> has been split into C<CXt_LOOP_LIST>, C<CXt_LOOP_ARY>.
466
467=item *
468
469Some variables formerly declared by C<dMULTICALL> (but not documented) have
470been removed.
471
472=back
473
d9d208b8 474
d89ea360
DD
475=back
476
b26bd9b0 477=head1 Selected Bug Fixes
eabfc7bc 478
af8a293f
SL
479XXX Important bug fixes in the core language are summarized here. Bug fixes in
480files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
acedda6e 481
af8a293f 482[ List each fix as a =item entry ]
bc5be890 483
af8a293f 484=over 4
acedda6e 485
c7052e96
TC
486=item *
487
2ff6ae51 488Line numbers larger than 2**31-1 but less than 2**32 are no longer
d15ad02e 489returned by caller() as negative numbers. [perl #126991]
c7052e96 490
2ff6ae51
TC
491=item *
492
493C<< unless ( I<assignment> ) >> now properly warns when syntax
494warnings are enabled. [perl #127122]
495
42d92f4a
TC
496=item *
497
498Setting an C<ISA> glob to an array reference now properly adds
499C<isaelem> magic to any existing elements. Previously modifying such
500an element would not update the ISA cache, so method calls would call
501the wrong function. Perl would also crash if the C<ISA> glob was
502destroyed, since new code added in 5.23.7 would try to release the
503C<isaelem> magic from the elements. [perl #127351]
504
19b46ab5
TC
505=item *
506
507If a here-doc was found while parsing another operator, the parser had
508already read end of file, and the here-doc was not terminated, perl
509could produce an assertion or a segmentation fault. This now reliably
510complains about the unterminated here-doc. [perl #125540]
511
23b4d8d6
TC
512=item *
513
514untie() would sometimes return the last value returned by the UNTIE()
515handler as well as it's normal value, messing up the stack. [perl
516#126621]
517
002a7765
TC
518=item *
519
520Fixed an operator precedence problem when C< castflags & 2> is true.
521[perl #127474]
522
af8a293f 523=back
3c84cb84 524
af8a293f 525=head1 Known Problems
d005d3c3 526
af8a293f
SL
527XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
528tests that had to be C<TODO>ed for the release would be noted here. Unfixed
529platform specific bugs also go here.
d43e55a3 530
af8a293f 531[ List each fix as a =item entry ]
e685831a 532
af8a293f 533=over 4
e685831a 534
0701ff00
JH
535=item *
536
af8a293f 537XXX
0701ff00 538
054383b6 539=back
d9d208b8 540
af8a293f 541=head1 Errata From Previous Releases
0057cacf
SL
542
543=over 4
544
545=item *
546
af8a293f
SL
547XXX Add anything here that we forgot to add, or were mistaken about, in
548the perldelta of a previous release.
0057cacf
SL
549
550=back
551
af8a293f 552=head1 Obituary
5a74572e 553
af8a293f
SL
554XXX If any significant core contributor has died, we've added a short obituary
555here.
5a74572e 556
af8a293f 557=head1 Acknowledgements
e1ad135d 558
af8a293f 559XXX Generate this with:
e1ad135d 560
af8a293f 561 perl Porting/acknowledgements.pl v5.23.7..HEAD
f5b73711 562
44691e6f
AB
563=head1 Reporting Bugs
564
e08634c5
SH
565If you find what you think is a bug, you might check the articles recently
566posted to the comp.lang.perl.misc newsgroup and the perl bug database at
fc4c3cec
RS
567L<https://rt.perl.org/> . There may also be information at
568L<http://www.perl.org/> , the Perl Home Page.
44691e6f 569
e08634c5
SH
570If you believe you have an unreported bug, please run the L<perlbug> program
571included with your release. Be sure to trim your bug down to a tiny but
572sufficient test case. Your bug report, along with the output of C<perl -V>,
573will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
574
575If the bug you are reporting has security implications, which make it
e08634c5
SH
576inappropriate to send to a publicly archived mailing list, then please send it
577to perl5-security-report@perl.org. This points to a closed subscription
578unarchived mailing list, which includes all the core committers, who will be
579able to help assess the impact of issues, figure out a resolution, and help
f9001595 580co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
581platforms on which Perl is supported. Please only use this address for
582security issues in the Perl core, not for modules independently distributed on
583CPAN.
44691e6f
AB
584
585=head1 SEE ALSO
586
e08634c5
SH
587The F<Changes> file for an explanation of how to view exhaustive details on
588what changed.
44691e6f
AB
589
590The F<INSTALL> file for how to build Perl.
591
592The F<README> file for general stuff.
593
594The F<Artistic> and F<Copying> files for copyright information.
595
596=cut